阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

通过 MySQL 二进制日志恢复删除的记录

149次阅读
没有评论

共计 1142 个字符,预计需要花费 3 分钟才能阅读完成。

删除 MySQL 表中的数据

mysql> use sbtest;
mysql> select count(*) from sbtest1;
+———-+
| count(*) |
+———-+
|    1000 |
+———-+
1 row in set (0.00 sec)

mysql> delete from sbtest1;
Query OK, 1000 rows affected (0.21 sec)

mysql> select count(*) from sbtest1;
+———-+
| count(*) |
+———-+
|        0 |
+———-+
1 row in set (0.00 sec)

确认时间点和当前二进制日志文件,从二进制日志中读取操作记录

mysqlbinlog \
–start-datetime=”2018-09-27 15:55:00″ \
–stop-datetime=”2018-09-27 15:00:00″ \
–base64-output=decode-rows \
–result-file=result.sql \
-v /var/lib/mysql/binlog.000022

其中的一条记录

通过 MySQL 二进制日志恢复删除的记录

去除不相关的内容

grep -A 5 “DELETE FROM \`sbtest\`.\`sbtest1\`” result.sql > 1.txt

通过 MySQL 二进制日志恢复删除的记录

提取数据

grep “=” 1.txt > 2.txt
sed -i ‘s/###  //g’ 2.txt

通过 MySQL 二进制日志恢复删除的记录

使用以下脚本生成 INSERT 语句

[root@mysql03 tmp]# cat r2.sh
#!/bin/bash
vs=””
while read line
do
    n=`echo $line | awk -NF “=” ‘{print $1}’`
    v=`echo $line | awk -NF “=” ‘{print $2}’`
    if [“$n” = “@1”]; then
        vs=”INSERT INTO \`sbtest\`.\`sbtest1\` VALUES(“$v
    elif [“$n” = “@2”]; then
        vs=$vs” , “$v
    elif [“$n” = “@3”]; then
        vs=$vs” , “$v
    elif [“$n” = “@4”]; then
        vs=$vs” , “$v”);”
        echo $vs >> 3.txt
    fi
done < 2.txt
[root@mysql03 tmp]# sh r2.sh

通过 MySQL 二进制日志恢复删除的记录

将数据导入到 MySQL 表中

[root@mysql03 tmp]# mysql < 3.txt
mysql> select count(*) from sbtest1;
+———-+
| count(*) |
+———-+
|    1000 |
+———-+
1 row in set (0.00 sec)

 

 

 

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1142字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中