## 前情提要



实验环境:

- MySQL 8.0.19
- Redhat 7.4


前面我们建立了数据库并建立相关的对象

- 数据库
- 表
- 存储过程
- 函数
- 触发器
- 事件


今天的内容为--hex-blob 的使用

## 1. --hex-blob 


[image:892 size:orig]



该参数将下面数据类型的栏位的数据以十六进制的形式导出

- BINARY
- VARBINARY
- BLOB 
- BIT
- 以及binary字符集的数据

其中MySQL的BLOB类型可以有如下类型

- tinyblob:仅255个字符
- blob:最大限制到65K字节
- mediumblob:限制到16M字节
- longblob:可达4GB


## 2. 使用--hex-blob备份数据库

**备份数据库**

```
 mysqldump   -uroot  -p   --single-transaction  --set-gtid-purged=OFF  --databases test --hex-blob > /tmp/hex.sql
```

**备份单表**

```
 mysqldump   -uroot  -p   --single-transaction  --set-gtid-purged=OFF  --databases test --hex-blob --tables pictures > /tmp/hex.sql
```




## 3. 该参数影响

### 3.1 内容比较

我们首先看使用该参数后mysqldump文件的内容


[image:893 size:orig]

再看下未使用该参数后mysqldump的内容


[image:894 size:orig]


其中未使用--hex-blob参数的文件乱码



### 3.2 导入比较

接下来我们测试导入后是否显示正常

经测试两者导入后都是正常的,图片可以显示出来


[image:895 size:orig]

## 4.结论

经过实验发现无论加不加该参数都不影响导入后的效果

但为避免字符集转换或者二进制传输等问题造成的问题,还是建议加上