首页 > 数据库 > MySQL > 正文

秒回--mysqlbinlog flashback 5.6版本

2022-07-31 18:42:54
字体:
来源:转载
供稿:网友
       DBA或者开发人员,有时会误删除或者误更新数据。传统的数据库恢复方法是利用之前的备份再加上误操作之前的binlog,来恢复数据。该方法需要耗费较长时间来恢复备份,甚至需要停机维护,严重降低系统的可用性。
 
       MySQL的flashback功能是由淘宝的彭立勋,在MySQL-5.5.18的基础上开发的。随着binlog格式的变动和类型的增加,基于5.5.18的版本,无法用于目前主流的5.6版本的。因此平民软件将该功能移植到5.6版本上,让相关人员对数据库有更强的掌控能力。
  
      使用方法
      定位误操作的binlog位置
      mysqlbinlog -v | grep
 
举例
 
       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
 
    2. 使用平民软件提供的flashback软件
 
mysqlbinlog   -B  -v   --start-position=1017 --stop-position=2563 /var/lib/mysql/128.000110 | mysql -u -p
 
       注意:恢复之前先在不使用的从机上做测试,测试成功后,再在主库上做。
 
限制
       该软件利用binlog中记录了操作前的数据镜像和操作后的数据镜像。有如下限制
 
1)        binlog_format=row
 
2)        只支持insert、update、delete
 
3)        不支持drop 、truncate、alter等ddl语句
 
结论
       flashback功能,可以在紧急情况下,避免用户漫长的数据库恢复过程。让高可用提升一个级别。

(编辑:错新网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表