前情提要

实验环境:

  • MySQL 8.0.19
  • Redhat 7.4

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

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

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

1. --hex-blob

Image.png

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

  • 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_2.png

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

Image_3.png

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

3.2 导入比较

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

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

Image_4.png

4.结论

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

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