mysqldump通过事物备份不锁表,但是会回滚,会不会造成这段时间数据的丢失?

mysqldump备份,如何能不锁表,备份时写入的数据不会丢失?

参与22

3同行回答

liucj2004liucj2004  其它 , undefined
--single-transaction不锁表备份是完整的,数据不会丢失另外,备份时写入的数据对你而言意义不大,因为这只是一个备份,本来就不是一个精确的时间点。显示全部

--single-transaction不锁表
备份是完整的,数据不会丢失
另外,备份时写入的数据对你而言意义不大,因为这只是一个备份,本来就不是一个精确的时间点。

收起
农业其它 · 2017-05-04
浏览3053
彬彬 邀答
  • 主要是实现热备份,例如一个日志表,或者交易流水表,随时有数据写入。那如果备份的时候要锁住表,那写入就会夯住。那业务就相当于要中断。single-transaction不锁表,那在备份的时候,备份出来的数据是备份开始的数据,还是结束的数据哪?
    2017-05-04
  • single-transaction相当于把备份的session设置为REPEATABLE READ隔离级别,所以备份出来是备份开始时候的数据。
    2017-05-04
  • 备份之前不是会建个savepoint么?备份完成后会回滚一下这个savepoint,那这段时间的数据写入不就没有了么?还是在建这个savepoint时是把建的这个截断点的数据导出来之后,应该就不需要回滚了吧
    2017-05-04
  • 这些数据只是在备份中没有,在数据库里面还是存在的
    2017-05-04
  • 但是你们文档中不是有一步回滚么?回滚的时候不是会把数据回滚回去么?建立保存点在备份完之后回滚,这步有需要么?
    2017-05-04
  • 这一步是mysqldump自己实现的,只对它自己这个session
    2017-05-04
  • 那如果是对自己这个session还有必要进行回滚么?备份完成后,就直接跳出啊?
    2017-05-04
  • 这个时候备份的过程就很意思,它先创建了一个savepoint,然后把数据库里的表依次的进行备份,备份完成了之后又回滚到了之前的savepoint,来保证数据的一致性。。。。。这一步是自动进行回滚么?一般业务系统这步动作肯定是不需要的,备份完之后回滚数据就会有缺失
    2017-05-04
  • 这个参数备份相当于执行了这个语句“ SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ”他是从undo里面去读取的数据,效果相当于读取回滚到savepoint的状态,这才保住了数据的一致性。比如说所有表的备份都在同一个时间点,否则表a是11:00的备份,表b是11:10的备份,在业务上就不允许了。
    2017-05-04
冯帅冯帅  数据库管理员 , 贝壳金服
假设我有三张表 a b c 当我在1:00的时候开始做备份 这个时候我做一个保存点,开始备份a假设备份a需要10分钟 在这10分种内 我update/delete了b和c 1:10的时候 我把当前session的数据依赖undo变成1:00的样子 只是当前session的 也就是b和c没有操作过的样子,然后去备份b 不...显示全部

假设我有三张表 a b c
当我在1:00的时候开始做备份 这个时候我做一个保存点,开始备份a
假设备份a需要10分钟 在这10分种内 我update/delete了b和c
1:10的时候 我把当前session的数据依赖undo变成1:00的样子 只是当前session的 也就是b和c没有操作过的样子,然后去备份b 不管在备份的时候有没有过c的变化 当备份完成b之后 再回到1:00的样子
首先1点到之后的数据都不会丢失,这是因为只是在备份的这个session来做的回滚 然后这样做的目的就是 保证你的这一次备份的所有表都是基于1点来备份的

收起
融资租赁 · 2017-05-05
浏览2428
彬彬 邀答
haizdlhaizdl  技术经理 , 大连
数据的时间点差异,热备份必须面临的问题。要么取备份开始时,要么取备份结束时。对备份本身的意义来讲,个人认为没什么太大区别。显示全部

数据的时间点差异,热备份必须面临的问题。
要么取备份开始时,要么取备份结束时。对备份本身的意义来讲,个人认为没什么太大区别。

收起
银行 · 2017-05-04
浏览2602
彬彬 邀答
  • 就是业务在跑的时候,我需要备份完之后,在备份时写入的数据依旧有效,不能被回滚。。。也就是说我备份时写入的数据可以没有在备份文件里,但是我在库里是可以查到,下次在备份的时候,就能把这部分数据备份写到备份文件里。。。。就是在备份时要保证业务的运行,也要保证这段时间的业务数据不能丢失,这次没有备份进下次备份就可以备份进
    2017-05-04

提问者

陈洪彬
数据库开发工程师杭州浮云科技

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2017-05-04
  • 关注会员:5 人
  • 问题浏览:6535
  • 最近回答:2017-05-05
  • X社区推广