Mysql mysqldump命令使用之 --single-transaction --hex-blob

--single-transaction


1.png

 

该参数通过在一个事务中导出所有表从而创建一个一致性的快照,当前版本的MySQL只可以对innodb 引擎保证一致性,导出过程中不会锁表其他引擎,如MyISAM 在导出期间会锁表为保证有效的dump文件,即正确的表内容和二进制日志位置,在导出的过程中不能有如下操作

  • ALTER TABLE

  • DROP TABLE

  • RENAME TABLE

  • TRUNCATE TABLE

如指定了 --lock-tables参数则会自动将其关闭,推荐在mysqldump中使用该参数

 

使用--single-transaction备份数据库


备份所有数据库

mysqldump -h127.0.0.1 -usystem -p123456  --single-transaction --set-gtid-purged=OFF  --all-databases  --master-data=2  --triggers --events --routines> /tmp/all_master.sql

备份test数据库

mysqldump -h127.0.0.1 -usystem -p123456  --single-transaction --set-gtid-purged=OFF  --databases test  --master-data=2   --triggers --events --routines> /tmp/test_all_master.sql

 

 --hex-blob


Image.png

 

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

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

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

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

 

使用--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

 

该参数影响


内容比较

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

Image_2.png

 

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

Image_3.png

 

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

 导入比较

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

Image_4.png

 

结论


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

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

猜你喜欢

转载自blog.csdn.net/qq_34556414/article/details/106535104
今日推荐