免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2886 | 回复: 1

事务型表的一致性备份疑问 [复制链接]

论坛徽章:
9
射手座
日期:2014-07-29 13:05:07双子座
日期:2015-01-11 17:01:522015年亚洲杯之朝鲜
日期:2015-02-01 16:14:282015亚冠之阿尔艾因
日期:2015-06-04 17:54:40数据库技术版块每日发帖之星
日期:2015-08-02 06:20:00数据库技术版块每日发帖之星
日期:2015-10-28 06:20:00数据库技术版块每日发帖之星
日期:2015-11-26 06:20:0015-16赛季CBA联赛之天津
日期:2016-06-20 17:09:2015-16赛季CBA联赛之青岛
日期:2017-02-26 15:54:19
发表于 2015-10-25 13:40 |显示全部楼层
    各种论坛和培训视频都是 mysqldump --single-transaction 对于innodb引擎的表不会锁表,但为什么称这样为一致性备份呢。据我所知 非事务型表备份时加上 lock-all-tables 算是一致性,因为备份间其他连接对备份的表没有写入权限。

    那么为什么--single-transaction 不锁表的情况也被成为一致性备份呢?没有人细说这个点,我的猜测如下:

    --single-transaction  --master-state=x  , 当这两个参数同时出现的时候,mysqldump在备份innodb表时先记录binlog中最后一条语句的position,然后将当前数据做个snapshot。管他其他连接对数据再做任何的操作。当前的mysqldump这个事物只备份记录的position之前的数据(也就是snapshot的数据),记录完则推出会话。
     myisam引擎没有会话这一说,因此mysqldump的时候如果不加上--lock-all-table的话。备份的同时数据还在一直写着,而且myisam又没有snapshot的功能,不知道要备份到什么时候结束


      我不知道自己理解正确不,还请mysql大牛指正

求职 : Linux运维
论坛徽章:
203
拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:092015小元宵徽章
日期:2015-03-06 15:58:182015年亚洲杯之约旦
日期:2015-04-05 20:08:292015年亚洲杯之澳大利亚
日期:2015-04-09 09:25:552015年亚洲杯之约旦
日期:2015-04-10 17:34:102015年亚洲杯之巴勒斯坦
日期:2015-04-10 17:35:342015年亚洲杯之日本
日期:2015-04-16 16:28:552015年亚洲杯纪念徽章
日期:2015-04-27 23:29:17操作系统版块每日发帖之星
日期:2015-06-06 22:20:00操作系统版块每日发帖之星
日期:2015-06-09 22:20:00
发表于 2015-10-25 16:22 |显示全部楼层
加上--single-transaction之后,mysql会记录当前所有redo logfile里已经提交的事务,并吧数据放入sql文件
而未提交的事务不会放入sql文件,所以可以不锁表,因为他可以分辨出哪些是未提交事务,哪些是已提交事务
而myisam不支持事务,所以在备份那一刹那,没有一个标记点,要备份到哪一个标记点根本不知道
所以只能停写,锁表
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP