mysqldump参数--lock-all-tables和--single-transaction的区别
2016-05-27 01:05
741 查看
1 mysqldump导出数据主要有两种控制:一种是导出的全过程都加锁 lock-all-tables, 另一种则是不加。前者会在导出开始时执行 FLUSH TABLES WITH READ LOCK; 也就是加全局读锁,会阻塞其它写操作,以保证导出是一致性的;因此只有在导出测试数据时或导出时没有业务连接操作时可不加 lock-all-tables . 至于说一致性导出的另一种方式 single-transaction, 则是有适用范围的,见下边。 2 single-transaction 选项和 lock-all-tables 选项是二选一的,前者是在导出开始时设置事务隔离状态并使用一致性快照开始事务,而后马上unlock tables,然后执行导出,导出过程不影响其它事务或业务连接,但只支持类似innodb多版本特性的引擎,因为必须保证即使导出期间其它操作(事务点t2)改变了数据,而导出时仍能取出导出开始的事务点t1时的数据。而lock-all-tables则一开始就 FLUSH TABLES WITH READ LOCK; 加全局读锁,直到dump完毕。 -- 关于一致性快照,简单地说,就是通过回滚段能记录不同的事务点的各版本数据 -- single-transaction 的流程如下: SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */ SHOW MASTER STATUS -- 这一步就是取出 binlog index and position UNLOCK TABLES ...dump... 3 master_data 选项开启时默认会打开lock-all-tables,因此同时实现了两个功能,一个是加锁,一个是取得log信息。 master_data取1和取2的区别,只是后者把 change master ... 命令注释起来了,没多大实际区别; 4 当master_data和 single_transaction 同时使用时,先加全局读锁,然后设置事务一致性和使用一致性快照开始事务,然后马上就取消锁,然后执行导出。过程如下 FLUSH TABLES WITH READ LOCK SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */ SHOW MASTER STATUS -- 这一步就是取出 binlog index and position UNLOCK TABLES ...dump... 5 总结,了解了这些选项作用后,使用起来就明确了. 如果需要binlog信息则使用 master_data; 如果不想阻塞同时表是innodb引擎可使用 single-transaction 取得一致性快照(取出的数据是导出开始时刻事务点的状态) 如果表不支持多版本特性,则只能使用 lock-all-tables 阻塞方式来保证一致性的导出数据。 当然,如果能保证导出期间没有任何写操作,可不加或关闭 lock-all-tables 博主注:当同时指定 --lock-all-tables和--single-transaction参数时,后者不会生效,因为前者会自动关闭--single-transaction和--lock-tables参数,具体可以查看man mysqldump中有详细说明 --lock-all-tables, -x Lock all tables across all databases. This is achieved by acquiring a global read lock for the duration of the whole dump. This option automatically turns off --single-transaction and --lock-tables.
相关文章推荐
- MySQL数据备份之mysqldump的使用详解
- 详解MySQL数据备份之mysqldump使用方法
- 使用MySQL MySqldump命令导出数据时的注意事项
- 最简便的MySql数据库备份方法MySQLdump第1/2页
- MySQL的备份工具mysqldump的基础使用命令总结
- linux下改良版本mysqldump来备份MYSQL数据库
- Mysql导入导出工具Mysqldump和Source命令用法详解
- mysqldump备份还原和mysqldump导入导出语句大全详解
- MySQL的mysqldump工具用法详解
- mysqldump造成Buffer Pool污染的研究
- 使用mysqldump对MySQL的数据进行备份的操作教程
- 解析mysqldump的delay-insert选项
- mysqldump数据库备份参数详解
- mysqldump命令导入导出数据库方法与实例汇总
- PHP使用mysqldump命令导出数据库
- MySQL数据库使用mysqldump导出数据详解
- mysqldump加-w参数备份数据时需要注意的事项
- MySQL mysqldump命令使用详解
- mysqldump 使用方法
- MySQL数据库使用mysqldump导出数据详解