小编给大家分享一下Mysql结合备份+ binlog恢复误删除操作数据的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
结合备份+ binlog恢复数据。
场景:昨天晚上做了全备,今天上午用户不小心误删除某张表。
解决方案:不建议在原生产环境直接恢复,建议在另一台机器恢复全库+日志,然后导入到生产环境。
1)创建表
选择现在(); 创建表itpuxfg1 ( “id”int(10)无符号不是零auto_increment, “名字”varchar(16)不是null, ‘性’enum(& # 39;猴# 39;,& # 39;w # 39;) not null默认& # 39;携带猴# 39; “年龄”非常小的整数(3)无符号不是零, 主键(“id”) )引擎=innodb默认字符集=utf8; 插入itpux.itpuxfg1(“名字”,“性别”,“年龄”)值 (& # 39;itpux1& # 39; & # 39; w # 39;, 21), (& # 39;itpux2& # 39; & # 39;猴# 39;,22), (& # 39;itpux3& # 39; & # 39; w # 39;, 23), (& # 39;itpux4& # 39; & # 39;猴# 39;,24), (& # 39;itpux5& # 39; & # 39; w # 39;, 25); 提交; select * from itpux.itpuxfg1;
2)做备份逻辑备份
,mysqldump -uroot - p - f - r——所有数据库比;alldb_bak.sql
3)模拟上午的业务操作
显示主状态;——154 现在选择();——2018-04-27 06:27:40 更新itpux。itpuxfg1集名称=& # 39;itpux04& # 39;id=4; 提交; 从itpux.itpuxfg1 select *; 现在选择();——2018-04-27 06:28:03 更新itpux。itpuxfg1集名称=& # 39;itpux05& # 39;id=5; 提交; 从itpux.itpuxfg1 select *; 显示主状态;——890
4)中午的误删除
选择现在();——2018-04-27 06:29:00 删除表itpuxfg1; 从itpux.itpuxfg1 select *; 显示主状态;——1078
5)在另一台机器恢复(我的案例在本地,生产不要在本地)
显示主状态,通过这个文件名,向前备份需要的binlog
——记得拷贝binlog日志
显示binlog事件& # 39;itpuxdb-binlog.000003& # 39;;
mysqlbinlog itpuxdb-binlog。000003 | grep“TABLE"
mysqlbinlog itpuxdb-binlog。000003 | grep“itpuxfg1" ()
演示:
把itpux库删除降低数据库itpux;
恢复:
先创建数据库:
mysql>创建数据库itpux默认字符集utf8;——如果不清楚条件,建议在原库查询显示创建数据库mysql;
mysql -uroot - p - o itpux & lt;alldb_bak。sql
——恢复后,查不到今天上午更新的记录
mysql>显示表;
,通过binlog日志增量恢复表删除之前
[root@mysqldb binlog] # mysqlbinlog, vv——起始位置=219,数据库——停止位置=913=itpux itpuxdb-binlog。000001年在sa。sql
——恢复这张表到原库里面
先从另外的库里备份这张表
, mysqldump -uroot - p itpux itpuxfg1祝辞sa.sql
再把生产库,直接恢复(原来的库中的表是已经被删除掉了)
mysql -uroot - p itpux & lt;sa.sql
mysql>select * from itpuxfg1;
1)恢复到这张表到源库里
, mysqldump -uroot - p itpux itpuxfg1祝辞sa。sql
以上是Mysql结合备份+ binlog恢复误删除操作数据的方法的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!