关于mysqldump的一个疑问

在进行mysqldump的时候有两个参数一直不明白.--master-data=2--single-transaction我的疑问是:加了master-data参数,没加... 在进行mysqldump的时候有两个参数一直不明白.
--master-data=2
--single-transaction
我的疑问是:加了master-data参数,没加single-transaction怎么保证我备份的数据的一致性????
我做过几个实验.加了master-data没加single-transaction,备份出来还原到从库,然后从库在同步,居然没报错...
按照参数的说明,如果我在dump的时候记录了这个备份点,在这个备份点之后的事务被提交,又被dump出来了...那为什么在同步的时候不报错???
引擎是innodb
展开
 我来答
gwbnet
2014-07-09 · TA获得超过894个赞
知道小有建树答主
回答量:350
采纳率:100%
帮助的人:224万
展开全部
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
追问
ok,谢谢,我已经找到答案了...
做一下测试..然后看一下日志..我就大概明白了...一般情况下..两个参数用在一起是最好的...即可以保证数据的一致性,又可以记录日志点....对于增量备份,主从搭建都很好...
不过,还是谢谢你的详细解答...
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式