MySQL flashback 回滚

MySQL误操作后如何快速恢复数据

折月煮酒 提交于 2019-12-07 02:02:33
基本上每个跟数据库打交道的程序员(当然也可能是你同事)都会碰一个问题,MySQL误操作后如何快速回滚?比如,不小心update了整张表的某个字段,或者delete一张表,忘加限制条件,整张表都没了。假如这还是线上环境核心业务数据,那这事就闹大了。误操作后,能快速回滚数据是非常重要的。 传统解法 用全量备份重搭实例,再利用增量binlog备份,恢复到误操作之前的状态。然后跳过误操作的SQL,再继续应用binlog。对于DML的回滚,此法费时费力,不值得再推荐。 利用binlog2sql快速闪回 首先,确认你的MySQL server开启了binlog,设置了以下参数: [mysqld] server-id = 1 log_bin = /var/log/mysql/mysql-bin.log max_binlog_size = 100M binlog-format = row 如果没有开启binlog,也没有预先生成回滚SQL,那真的无法快速回滚了。对存放重要业务数据的MySQL,强烈建议开启binlog。 随后,安装开源工具 binlog2sql 。binlog2sql是一款简单易用的binlog解析工具,其中一个功能就是生成回滚SQL。 shell> git clone https://github.com/danfengcao/binlog2sql.git shell> pip