温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

利用binlog回复误删表和库

发布时间:2020-05-05 21:01:40 来源:网络 阅读:686 作者:有只汪叫汪 栏目:MySQL数据库

利用binlog回复误删表和库


查看某个binlog日志内容,常用有两种方式:

1、     # /usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-bin.000013

2、      mysql> show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];

             选项解析:

               IN 'log_name'   指定要查询的binlog文件名(不指定就是第一个binlog文件)

               FROM pos        指定从哪个pos起始点开始查起(不指定就是从整个文件首个pos点开始算)

               LIMIT [offset,] 偏移量(不指定就是0)

               row_count       查询总条数(不指定就是所有行)


      D.指定查询 mysql-bin.000021 这个文件,从pos点:8224开始查起,查询10条

        mysql> show binlog events in 'mysql-bin.000021' from 8224 limit 10\G;



    6.从binlog日志恢复数据

      # /usr/local/mysql/bin/mysql -uroot -p123456 -v < /root/BAK.zyyshop.sql;

        常用选项:

          --start-position=953                   起始pos点

          --stop-position=1437                   结束pos点

          --start-datetime="2013-11-29 13:18:54" 起始时间点

          --stop-datetime="2013-11-29 13:21:53"  结束时间点

          --database=zyyshop                     指定只恢复zyyshop数据库(一台主机上往往有多个数据库,只限本地log日志)

      小结:实际是将读出的binlog日志内容,通过管道符传递给mysql命令。这些命令、文件尽量写成绝对路径;



      B.指定pos结束点恢复(部分恢复):

        @ --stop-position=953 pos结束点

        注:此pos结束点介于“导入实验数据”与更新“name='李四'”之间,这样可以恢复到更改“name='李四'”之前的“导入测试数据”

        # /usr/local/mysql/bin/mysqlbinlog --stop-position=953 --database=zyyshop /usr/local/mysql/data/mysql-bin.000023 | /usr/local/mysql/bin/mysql -uroot -p123456 -v zyyshop


      C.指定pso点区间恢复(部分恢复):

        更新 name='李四' 这条数据,日志区间是Pos[1038] --> End_log_pos[1164],按事务区间是:Pos[953] --> End_log_pos[1195];


        c1.单独恢复 name='李四' 这步操作,可这样:

           # /usr/local/mysql/bin/mysqlbinlog --start-position=1038 --stop-position=1164 --database=zyyshop  /usr/local/mysql/data/mysql-bin.000023 | /usr/local/mysql/bin/mysql -uroot -p123456 -v zyyshop


           也可以按事务区间单独恢复,如下:

           # /usr/local/mysql/bin/mysqlbinlog --start-position=953 --stop-position=1195 --database=zyyshop  /usr/local/mysql/data/mysql-bin.000023 | /usr/local/mysql/bin/mysql -uroot -p123456 -v zyyshop



        # /usr/local/mysql/bin/mysqlbinlog --start-datetime="2013-11-29 13:18:54" --stop-datetime="2013-11-29 13:21:53" --database=zyyshop /usr/local/mysql/data/mysql-bin.000021 | /usr/local/mysql/bin/mysql -uroot -p123456 -v zyyshop


      总结:所谓恢复,就是让mysql将保存在binlog日志中指定段落区间的sql语句逐个重新执行一次而已。


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI