Mysql基于时间点恢复误操作mysqlbinlog怎么恢复
MySQL基于时间点恢复误操作mysqlbinlog怎么恢复,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
成都创新互联,专注为中小企业提供官网建设、营销型网站制作、响应式网站设计、展示型成都网站设计、成都网站建设等服务,帮助中小企业通过网站体现价值、有效益。帮助企业快速建站、解决网站建设与网站营销推广问题。
mysqlbinlog
除了xtrabackup支持物理增量备份外,还可以直接通过复制二进制日志文件的方式进行增量备份。因为二进制日志文件对于回滚某个时间点的误操作至关重要,所以无论如何都建议要定时备份二进制日志文件,至少一天一次。下面我们来演示一下如何备份二进制日志以及如何基于时间点进行恢复。
备份
1、模拟插入数据
select * from sys_log;desc sys_log;insert into sys_log(log_id)values(1);select * from sys_log;
2、查看当前二进制日志文件信息
mysql -hlocalhost -P3306 -uroot -e "show master status";
可以看到目前最新正在使用的二进制日志文件是mysql-bin.000006。位置点为467;
3、模拟误删刚才新插入的数据
select * from sys_log;delete from sys_log where log_id = 1;
4、模拟再手工插入一条其它数据
insert into sys_log(log_id)values(2);
注意:新插入的数据log_id是2,误删那条数据log_id是1,后面我们要对误删进行时间点恢复,恢复成功后,通过查询应该可以看到两条数据。
5、滚动二进制日志文件
mysql -hlocalhost -P3306 -uroot -e "flush logs";mysql -hlocalhost -P3306 -uroot -e "show master status";
可以看到滚动后目前最新二进制日志文件是mysql-bin.000007,新的日志将会往mysql-bin.000007写而不会写到mysql-bin.000006,这样就方便整个文件进行备份。
6、复制二进制文件到备份目的地
cp /usr/local/mysql/data/mysql-bin.000006 /opt/backup/mysql/physical/increment/
恢复
1、基于恢复指导思想,第一步关闭mysql对外服务
逻辑恢复不能停机,通过配置skip-networking来禁止对外服务
2、找到误操作sql位置
mysqlbinlog /opt/backup/mysql/physical/increment/mysql-bin.000006 | less
其中625是误删语句开始位置,749是下一条语句开始位置也是误删语句结束位置。
3、开始恢复
mysqlbinlog --database=test_backup /opt/backup/mysql/physical/increment/mysql-bin.000006 --stop-position=625 | mysql -urootmysqlbinlog --database=test_backup /opt/backup/mysql/physical/increment/mysql-bin.000006 --start-position=749 | mysql -uroot
如果还有其它备份的二进制文件,需要全部重放完,同时包括当前最新正在使用的二进制文件。
4、验证恢复结果
可以看到,误删数据回来了。
看完上述内容,你们掌握Mysql基于时间点恢复误操作mysqlbinlog怎么恢复的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
本文名称:Mysql基于时间点恢复误操作mysqlbinlog怎么恢复
标题来源:http://pwwzsj.com/article/ghcdii.html