免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 40293 | 回复: 0
打印 上一主题 下一主题

MySQL 之反转binlog [复制链接]

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2016-03-10 06:20:00数据库技术版块每日发帖之星
日期:2016-06-23 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-03-07 23:25 |只看该作者 |倒序浏览
下载地址
  (HTTP:小写)//pan.baidu.com/s/1eQW9zSQ

如有疑问请联系微信:onesoft007

简介
DBA或者开发人员,有时会误删除或者误更新数据。传统的数据库恢复方法是利用之前的备份再加上误操作之前的binlog,来恢复数据。该方法需要耗费较长时间来恢复备份,甚至需要停机维护,严重降低系统的可用性。

MySQL的flashback功能是由淘宝的彭立勋,在MySQL-5.5.18的基础上开发的。随着binlog格式的变动和类型的增加,基于5.5.18的版本,无法用于目前主流的5.6版本的。因此平民软件将该功能移植到5.6版本上,让相关人员对数据库有更强的掌控能力。



使用方法
定位误操作的binlog位置
mysqlbinlog -v <binlog file> | grep <keyword>

举例

       mysqlbinlog -v --base64-output=decode-rows /var/lib/mysql/128.000110 | grep -B10 -A5 items

输出类似为



# at 1093

#160215 15:22:39 server id 10  end_log_pos 1240 CRC32 0x6146d30e        Table_map: `zabbix`.`items` mapped to number 73

# at 1240

#160215 15:22:39 server id 10  end_log_pos 1824 CRC32 0xe2d557b8        Update_rows: table id 73 flags: STMT_END_F

'/*!*/;

### UPDATE `zabbix`.`items`

### WHERE

###   @1=24138

###   @2=0

###   @3=''

###   @4=''

###   @5=10106




确认相关位置
假设找到相关位置,开始位置1017,结束位置2563

mysqlbinlog     -v --base64-output=decode-rows  --start-position=1017 --stop-position=2563 /var/lib/mysql/128.000110



使用平民软件提供的flashback软件
mysqlbinlog   -B  -v   --start-position=1017 --stop-position=2563 /var/lib/mysql/128.000110 | mysql -u<user> -p<password> <databases>

       注意:恢复之前先在不使用的从机上做测试,测试成功后,再在主库上做。

限制
       该软件利用binlog中记录了操作前的数据镜像和操作后的数据镜像。有如下限制

1)        binlog_format=row

2)        只支持insert、update、delete

3)        不支持drop 、truncate、alter等ddl语句

结论
       flashback功能,可以在紧急情况下,避免用户漫长的数据库恢复过程。让高可用提升一个级别。



下载地址
  (HTTP:小写)//pan.baidu.com/s/1eQW9zSQ



如有疑问请联系微信:onesoft007
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP