从多个binlog找到某条记录的修改历史

需要从binlog里面找一条6月15创建的记录的修改历史,从6月15日到6月20日,一共有几十个mysql 的binlog,如果是人工操作,需要操作几十次,我们可以用shell来加快处理的速度

来到mysqlbinlog的目录 /u01/mysql/log,先列出最近5天被访问过的binlog文件列表

$find . -atime  -5   -print  | grep mysql-bin.00 | xargs ls -lh

-rw-rw---- 1 mysql dba 501M Jun 14 18:04 ./mysql-bin.001090
-rw-rw---- 1 mysql dba 501M Jun 15 01:12 ./mysql-bin.001091
-rw-rw---- 1 mysql dba 501M Jun 15 02:10 ./mysql-bin.001092
-rw-rw---- 1 mysql dba 501M Jun 15 04:05 ./mysql-bin.001093
-rw-rw---- 1 mysql dba 137M Jun 15 04:36 ./mysql-bin.001094
-rw-rw---- 1 mysql dba 501M Jun 15 11:57 ./mysql-bin.001095
-rw-rw---- 1 mysql dba 501M Jun 15 19:00 ./mysql-bin.001096
-rw-rw---- 1 mysql dba 501M Jun 16 02:00 ./mysql-bin.001097
-rw-rw---- 1 mysql dba 501M Jun 16 02:11 ./mysql-bin.001098
-rw-rw---- 1 mysql dba 489M Jun 16 04:32 ./mysql-bin.001099
-rw-rw---- 1 mysql dba 501M Jun 16 10:14 ./mysql-bin.001100
-rw-rw---- 1 mysql dba 501M Jun 16 19:42 ./mysql-bin.001101
-rw-rw---- 1 mysql dba 501M Jun 17 02:02 ./mysql-bin.001102
-rw-rw---- 1 mysql dba 501M Jun 17 02:13 ./mysql-bin.001103
-rw-rw---- 1 mysql dba 451M Jun 17 04:35 ./mysql-bin.001104
-rw-rw---- 1 mysql dba 501M Jun 17 13:50 ./mysql-bin.001105
-rw-rw---- 1 mysql dba 501M Jun 18 01:09 ./mysql-bin.001106
-rw-rw---- 1 mysql dba 501M Jun 18 02:09 ./mysql-bin.001107
-rw-rw---- 1 mysql dba 501M Jun 18 04:00 ./mysql-bin.001108
-rw-rw---- 1 mysql dba 115M Jun 18 04:31 ./mysql-bin.001109
-rw-rw---- 1 mysql dba 501M Jun 18 13:16 ./mysql-bin.001110
-rw-rw---- 1 mysql dba 501M Jun 18 21:28 ./mysql-bin.001111
-rw-rw---- 1 mysql dba 501M Jun 19 02:04 ./mysql-bin.001112
-rw-rw---- 1 mysql dba 501M Jun 19 02:36 ./mysql-bin.001113
-rw-rw---- 1 mysql dba 386M Jun 19 04:35 ./mysql-bin.001114
-rw-rw---- 1 mysql dba 501M Jun 19 12:29 ./mysql-bin.001115
-rw-rw---- 1 mysql dba 501M Jun 19 20:42 ./mysql-bin.001116
-rw-rw---- 1 mysql dba 501M Jun 20 02:03 ./mysql-bin.001117
-rw-rw---- 1 mysql dba 501M Jun 20 02:15 ./mysql-bin.001118
-rw-rw---- 1 mysql dba 373M Jun 20 04:31 ./mysql-bin.001119
-rw-rw---- 1 mysql dba 474M Jun 20 11:01 ./mysql-bin.001120

然后我们弄到一个for循环里面自动做binlog解析,最后的脚本是这样的

export.sh

cd /u01/mysql/log/list=`find . -atime -5 -print | grep mysql-bin.00`
for i in $list; do
    echo $i;
    mysqlbinlog --no-defaults /u01/mysql/log/$i > /u01/mysql/restore_test/$i.log
    cat $i.log | grep update | grep keyword > cat_$i.log
done

后面执行一下sh export.sh ,根据cat_x的文件大小,可以得到对应的修改记录的时间属性等。如果以后再出现这种从多个binlog里面找某一条记录的时候,可以用这种办法试试

 

如果你有更好的办法,烦请告诉我微笑

觉得文章有用?立即: 和朋友一起 共学习 共进步!

猜您喜欢

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>