mysql binlog恢复数据

拿一个已经生成的binlog文件,用来恢复数据库被删除数据,可用以下方法:


binlog文件样例

1、创建一个新的数据库,名称要和原来数据库名称一样

    create database db;

2、导入原来数据库表结构

    use db;

    set names utf8;

    source /opt/table.sql;

3、解析binlog文件,把数据解析成一个可用文本工具(比如:UE)阅读的文件内容

    mysqlbinlog --base64-output=decode-rows -v mysql-bin.001636 > mysqllog.sql

    然后在这个mysqllog.sql文件中用关键字(比如:数据库id或其它唯一标识字段)查找,找到对应删除SQL语句位置,类似下面这样的:


bi

    这里能看到删除时间是2021-06-23 12:21:12,我们只需要把数据恢复到这个时间之前,下面开始恢复。

4、设置GTID模式

    登录到mysql控制台,执行以下命令:

    # 设置GTID为   OFF_PERMISSIVE 模式

    set @@GLOBAL.GTID_MODE = OFF_PERMISSIVE; 

5、恢复数据

    mysqlbinlog --skip-gtids=true --start-datetime="2011-06-03 00:03:23" --stop-datetime="2011-06-07 23:06:44" mysql-bin.001636 | mysql -f -u root -p db

    --skip-gtids=true,恢复过一次数据,mysql会记录GTID信息。如果不加此参数,下一次将无法恢复数据;可选;

    --start-datetime,从哪个时间点开始恢复数据,可选;

    --stop-datetime,在哪个时间点结束恢复数据,可选;在第3点所说的,查找到删除数据时间点后,带上此参数填入删除数据之前的时间点;

    mysql -f -u root -p db,-f 表示强制恢复,跳过报错; db  表示要恢复到数据库;

你可能感兴趣的:(mysql binlog恢复数据)