[toc]

## 前情提要



实验环境:

- MySQL 5.7.25 
- Redhat 6.10


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

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


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

## 1. --single-transaction

[image:540 size:orig]



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

当前版本的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](http://www.zhaibibei.cn/mysql/tutorial/tutorial8)

--------------

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