数据库恢复的时候报了一个的错误

来源:4-10 指定时点的Binlog恢复

qq_金融超越战_03665934

2017-11-24

linux系统 centos.我数据库使用的是mysql5.7

在使用 mysql -uroot -padmin goods </root/goods.sql后

然后执行

mysqlbinlog --start-position=154 --stop-position=700 --database=goods binlog000030 binlog000032 > /root/goods_diff.sql

其中start-position=154的值是全量备份goods.sql CHANGE MASTER这一行MASTER_LOG_POS。binlog.000030日志是CHANGE MASTER是MASTER_LOG_POS. stop-position=700.这个日志点是在binlog000032日志文件中INSERT语句前面找到的.

执行完这个语句后,神奇的现象出现了。WARNING:the option --database has been used, it may filter parts of transactions,but will include the GTIDs in any case,if you want to exclude or include transaction,you should use the options --exclude -gtids or  --include-gtids,repectively,instead.

这里只是一个warning,我也就不在乎。但是我执行了

mysql -uroot -padmin goods < /root/goods_diff.sql,此时并没有恢复到insert之前的状态。我才意识到问题的严重性。明天就要给甲方交付自动化恢复的shell脚本。老师知道这是什么原因造成的吗?

写回答

1回答

sqlercn

2017-11-25

mysql的binlog日志记录的是对数据库的修改,你先恢复goods.sql,然后再想恢复到导入之前的状态是不能单独依靠恢复binlog日志来完成的,利用binlog日志恢复数据,要先恢复一个全备,然后再恢复这个全备之后的binlog到指定的日志点。

0
11
sqlercn
回复
qq_金融超越战_03665934
是的。
2017-11-25
共11条回复

高性能可扩展MySQL数据库设计及架构优化 电商项目

从基础设计入手,设计高性能可扩展的千万级数据库架构

1155 学习 · 166 问题

查看课程