误操作删除数据之---恢复操作
使用语句模式恢复数据
1、
#修改配置文件 1、[root@oldboy etc]# vim my.cnf -log-bin=mysql-bin
2、
#重启mysql [root@oldboy ~]# /etc/init.d/mysqld restart
3、
#记录位置点 [root@oldboy ~]# mysql -uroot -p1 -mysql> creatr database binlog; -mysql> use binlog -mysql> create table binlog(id int); -insert into binlog values(1),(2),(3); -mysql> show master status; #查看位置点
4、
[root@oldboy ~]# cd /usr/local/mysql/data/ -查看 -mysqlbinlog mysql-bin.000001
#删库后使用 位置点 恢复: [root@oldboy ~]# mysql -uroot -p1 -mysql> use binlog -mysql> show tables; -drop table binlog; -\q #退出mysql
6、
#截取 起始位 和 终止位 [root@oldboy ~]# cd /usr/local/mysql/data/ [root@oldboy data]# mysqlbinlog mysql-bin.000001 #起始位 和 终止位 [root@oldboy data]# #220 553 [root@oldboy data]# mysqlbinlog --start-position=220 --stop-position=553 mysql-bin.000001
7、
#导入文件 [root@oldboy data]# mysqlbinlog --start-position=220 --stop-position=553 mysql-bin.000001 > /tmp/binlog.sql
8、
#恢复数据库 [root@oldboy data]# mysql -uroot -p1 < /tmp/binlog.sql
9、
#查看 -[root@oldboy data]# mysql -uroot -p1 -mysql> use binlog -mysql> show tables; -mysql> select * from binlog;
使用行级模式恢复数据:
1、
[root@oldboy ~]# cd /etc
2、
[root@oldboy etc]# vim my.cnf -binlog_format=row
3、
#重启mysql [root@oldboy ~]# /etc/init.d/mysqld restart
4、
#连接MYsql [root@oldboy etc]# mysql -uroot -p1
5、
#记录位置点 mysql> show master status; #可以看到 #变为新的对象: mysql-bin.000002
6、
#创建数据库并插入数据 mysql> create database row; mysql> use row mysql> insert row values(1),(2),(3);
7、
修改数据 mysql> update row set id=10 where id=2; mysql> select * from row;
8、
#删除数据(模拟误操作) mysql> delete from row where id=3; #删表 mysql> drop table row; #删库 mysql> drop database row;
现在有三种状态:1、1 2 3; 2、1 10 3 ; 3、1 10
例如:恢复第二种 1 10 3 的状态:
10、查看起始位 和 终止位
-[root@oldboy ~]# cd /usr/local/mysql/data/ -[root@oldboy data]# mysqlbinlog mysql-bin.000002
11、截取 起始位 和 终止位 并导入文件
-[root@oldboy data]# mysqlbinlog --start-position=120 --stop-position=697 mysql-bin.000002 > /tmp/row.sql
12、恢复
-[root@oldboy ~]# mysql -uroot -p1 -mysql> source /tmp/row.sql
13、查看结果:
-mysql> show databases; -mysql> use row; -mysql> show tables; -mysql> select * from row;