前情提要

实验环境:

  • MySQL 5.7.25
  • Redhat 6.10

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

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

今天的内容为--single-transaction的使用

1. --single-transaction

1.png

该参数通过在一个事务中导出所有表从而创建一个一致性的快照

当前版本的MySQL只可以对innodb 引擎保证一致性,导出过程中不会锁表

其他引擎,如MyISAM 在导出期间会锁表

为保证有效的dump文件,即正确的表内容和二进制日志位置

在导出的过程中不能有如下操作

  • ALTER TABLE

  • DROP TABLE

  • RENAME TABLE

  • TRUNCATE TABLE

如指定了 --lock-tables参数则会自动将其关闭

推荐在mysqldump中使用该参数

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

备份内容讲解可和上节的内容一致,链接见下面

http://www.zhaibibei.cn/mysql/tutorial/tutorial8


今天的内容就到这里,欢迎查看