mysqlbinlog结合sed命令恢复数据
1 、环境说明 使用mysqlbinlog搭配sed命令完美还原 MySQL版本号:5.6.X及5.7.X; mysql必须开启binlog,并且mysql的binlog最好是Row模式; mysql数据库指定字符集位utf8,同时表的字符集也得为utf8,否则在mysqlbinlog 解析出来的sql文件对于中文汉字的会出现乱码,导致最后恢复数据到线上的表中报错。 满足以上条件这样可以极大的保证数据恢复的几率。 当然把控好数据库的权限问题,禁止采用不加where条件的delete 和update语句,以及禁止采用drop,truncate才是从根源保证数据安全行之有效的办法。 查看当前的binlog文件: show master status; 找到binllog文件路径下,再次之前需要确认一下你误操作的大概时间,因为我们要通过时间范围来搜索日志,执行命令如下: mysqlbinlog --base64-output=decode-rows -v -v --start-datetime=' 2019-10-17 14:40:00 ' --stop-datetime=' 2019-10-17 14:50:00 ' /data/mysql_data/binlog.000004 |grep -C 30 "UPDATE `test1`.`zx_scores`"