mysql 误删除表内数据,通过binlog日志恢复

#添加数据
insert into testdb1.student(id,name,class,score) value(a,'a',1,45),(2,'b',1,46),(3,'c',2,89),(4,'d',2,90),(5,'e',3,67),(6,'f',3,87),(7,'g',4,77),(8,'h',4,91);
mysql> select * from testdb1.student;
+------+------+-------+-------+
| id   | name | class | score |
+------+------+-------+-------+
|    1 | a    | 1     |    45 |
|    2 | b    | 1     |    46 |
|    3 | c    | 2     |    89 |
|    4 | d    | 2     |    90 |
|    5 | e    | 3     |    67 |
|    6 | f    | 3     |    87 |
|    7 | g    | 4     |    77 |
|    8 | h    | 4     |    91 |
+------+------+-------+-------+
8 rows in set (0.00 sec)

#删除数据
mysql> delete from testdb1.student;
Query OK, 8 rows affected (0.00 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql> show master status\G
*************************** 1. row ***************************
             File: ray-bin.000004
         Position: 5444
     Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)

[root@localhost ~]# mysqlbinlog /data/3306/logs/ray-bin.000004 -v -v -S /data/3306/soket/mysql.sock --base64-output=decode-rows | sed -n '/### DELETE FROM `testdb1`.`student`/,/COMMIT/P' | sed -n 's\### \\p' | sed "s/\/\*.*\*\///g" | sed 's/`//g' > /tmp/1.txt
[root@localhost ~]# sed 's/DELETE FROM/insert into/g' /tmp/1.txt | sed 's/WHERE/select/g' | sed 's/@4.*/\0;/g' | sed 's/@[1-3].*/\0,/g' | sed 's/[^@]\(.*\)=//g' > execSQL.sql
要点:
     sed 's/@4.*/\0;/g'  把@4后面匹配所有字符所有长度,替换,在匹配的后面添加。\0代表整行;
     sed 's/@[1-3].*/\0,/g'    把@后面从1到3匹配,在匹配后面所有字符所有长度,在匹配项后面添加逗号。\0代表整行。
     sed 's/[^@]\(.*\)=//g'  把已@开头的到=以内的内容替换

mysql> source /root/execSQL.sql
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> commit;
Query OK, 0 rows affected (0.01 sec)

mysql> select * from testdb1.student;
+------+------+-------+-------+
| id   | name | class | score |
+------+------+-------+-------+
|    1 | a    | 1     |    45 |
|    2 | b    | 1     |    46 |
|    3 | c    | 2     |    89 |
|    4 | d    | 2     |    90 |
|    5 | e    | 3     |    67 |
|    6 | f    | 3     |    87 |
|    7 | g    | 4     |    77 |
|    8 | h    | 4     |    91 |
+------+------+-------+-------+
8 rows in set (0.00 sec)







来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28572479/viewspace-2137193/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28572479/viewspace-2137193/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值