文档首页/ 数据管理服务 DAS/ 最佳实践/ 使用Binlog解析功能恢复数据
更新时间:2025-05-09 GMT+08:00
分享

使用Binlog解析功能恢复数据

使用场景

当您在数据库中,误操作了某一条DML语句时,利用Binlog解析去恢复数据是高效且重要的手段。您可以通过DAS提供的Binlog解析功能,提取其中记录的DML语句相关事件,并按照事件发生的顺序,按需执行生成的回滚语句。

前提条件

  • 已创建RDS for MySQL实例。
  • 实例Binlog功能已开启。

操作步骤

  1. 创建预置数据。

    1. 在目标RDS for MySQL实例中创建名为test的测试数据库,详情请参见创建数据库
    2. 通过数据管理服务DAS登录RDS for MySQL数据库,详情请参见登录华为云数据库实例
    3. 在DAS的SQL查询执行如下命令,在数据库test中创建测试表shopping。

      CREATE TABLE shopping (

      a int NOT NULL AUTO_INCREMENT,

      b int,

      c int,

      PRIMARY KEY (a),

      UNIQUE KEY u_k (b, c)

      );

    4. 执行如下命令,在测试表shopping中写入测试数据。

      insert into shopping(b,c) values(1,1),(2,5),(3,9),(4,6);

    5. 执行如下命令将shopping表中,“b”字段值全部改为10。

      update shopping set b = 10;

  2. 利用Binlog解析功能获取某一时间段内的所有操作记录。

    1. 登录管理控制台
    2. 单击管理控制台左上角的,选择区域和项目。
    3. 单击页面左上角的,选择“数据库 > 数据管理服务 DAS”,进入数据管理服务页面。
    4. 在左侧的导航栏中单击DBA智能运维 > 实例列表页签,进入DBA智能运维实例列表页面。

      您也可以在产品概览页面,单击“进入DBA智能运维”,进入DBA智能运维实例列表页面。

    5. 在实例列表页面右上角,按照引擎、实例名称或者实例IP筛选实例,单击“详情”,进入实例总览页面。
      图1 DBA智能运维实例总览页面
    6. 单击“binlog”进入归档日志页面。
      图2 归档日志
    7. 根据文件名的后半段“20250508023514000”可以确认该文件的执行时间为UTC时间的2025年5月8日02点35分之前,符合上述update语句执行时间。
    8. 单击“解析日志”,等待解析完成。
    9. 单击“查看日志详细内容”,进入SQL操作记录浏览页面。在该页面,您可以按照自己需要恢复数据的表、库名和操作类型进行筛选,此处筛选shopping表,update操作。
      图3 查看日志详细内容
    10. 单击“查看数据”,确认操作是否为上述update语句。
      图4 查看数据

  3. 针对解析后的结果获取SQL回滚语句。

    1. 利用Binlog解析功能获取某一时间段内的所有操作记录,获取到筛选结果后,单击“导出”按钮,选择对应OBS桶导出。
    2. 单击“查看导出列表”,获取最近导出的记录信息。
    3. 选择文件名一致,且导出条数与搜索结果一致的记录,单击“下载”。
    4. 打开下载后的文件,找到“事件回滚SQL”列,获取SQL回滚语句。
      图5 事件回滚SQL
    5. 登录开发工具,或使用其他数据库链接工具,执行回滚语句,即可回滚Update操作。
      图6 执行回滚

相关文档