mysqldump+binlog 如何无缝回档

2018-06-01 11:28:46 +08:00
 fanne

有个疑问,binlog 可以指定时间点进行回滚

但 mysqldump 怎么确定结束时间点呢?

因为只有知道 mysqldump 那个备份文件里的结束时间,我才能确定 binlog 回滚的开始时间要设置为多少 我备份的时候使用了--single-transaction参数,那这个备份期间,其实还是有数据insertupdate之类的操作。

所以想要用 mysqldump 的备份文件跟 binlog 进行数据无缝回滚,要怎么搞法。

4769 次点击
所在节点    MySQL
11 条回复
kfll
2018-06-01 12:32:55 +08:00
开 ssh,让 @defunct9 上去看看
choury
2018-06-01 12:38:53 +08:00
备份开始时用 show master status 看当前 binlog 位置,导入的时候就从这里导,不过备份里面要考虑的内容挺多的,锁表啊,事务啊,ddl 啊……
fanne
2018-06-01 13:45:46 +08:00
@choury #2 开始时间知道的,关键是结束时间,假如数据库比较大,从开始导结束也有一段时间,无论长短,这段时间都会写东西进去的,然后不知道结束时间,那我 binlog 就无法定位从哪里开始还原了
defunct9
2018-06-01 13:58:33 +08:00
结束时间看 dump 出的文件的时间戳,就可以了吧。
choury
2018-06-01 14:48:22 +08:00
@fanne 你都开了事务了,这段时间写入的数据和你有什么关系呢?你的隔离级别设的啥?
anthow
2018-06-01 15:54:49 +08:00
@kfll 你是真滴皮
MarioxLinux
2018-06-01 16:11:39 +08:00
了解一下参数 --flush-logs Flush MySQL server log files before starting dump
fanne
2018-06-01 17:05:40 +08:00
@choury #5 现在是这个的,REPEATABLE-READ,你的意思是,mysqldump 这个 session,其实看不到其他 session 操作的,所以我那 binlog 恢复的时候,就拿 mysqldump 开始的那个时间点?是这么理解么
fanne
2018-06-01 17:50:49 +08:00
Loyalsoldier
2018-06-01 18:54:17 +08:00
mysqldump -u user -p password --master-data database > database.sql

了解一下 👆
choury
2018-06-01 18:57:27 +08:00
@fanne 可重复读的意思就是只要事务开启后,什么时候读取数据都是一致的,所以叫 REPEATABLE,所以别的事务干啥了对你都不会有影响

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/459514

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX