使用Binlog解析功能恢复数据
使用场景
当您在数据库中,误操作了某一条DML语句时,利用Binlog解析去恢复数据是高效且重要的手段。您可以通过DAS提供的Binlog解析功能,提取其中记录的DML语句相关事件,并按照事件发生的顺序,按需执行生成的回滚语句。
前提条件
- 已创建RDS for MySQL实例。
- 实例Binlog功能已开启。
操作步骤
- 创建预置数据。
- 在目标RDS for MySQL实例中创建名为test的测试数据库,详情请参见创建数据库。
- 通过数据管理服务DAS登录RDS for MySQL数据库,详情请参见登录华为云数据库实例。
- 在DAS的SQL查询执行如下命令,在数据库test中创建测试表shopping。
a int NOT NULL AUTO_INCREMENT,
b int,
c int,
PRIMARY KEY (a),
UNIQUE KEY u_k (b, c)
);
- 执行如下命令,在测试表shopping中写入测试数据。
- 执行如下命令将shopping表中,“b”字段值全部改为10。
- 利用Binlog解析功能获取某一时间段内的所有操作记录。
- 登录管理控制台。
- 单击管理控制台左上角的
,选择区域和项目。
- 单击页面左上角的
,选择“数据库 > 数据管理服务 DAS”,进入数据管理服务页面。
- 在左侧的导航栏中单击
您也可以在产品概览页面,单击“进入DBA智能运维”,进入DBA智能运维实例列表页面。
页签,进入DBA智能运维实例列表页面。
- 在实例列表页面右上角,按照引擎、实例名称或者实例IP筛选实例,单击“详情”,进入实例总览页面。
图1 DBA智能运维实例总览页面
- 单击“binlog”进入归档日志页面。
图2 归档日志
- 根据文件名的后半段“20250508023514000”可以确认该文件的执行时间为UTC时间的2025年5月8日02点35分之前,符合上述update语句执行时间。
- 单击“解析日志”,等待解析完成。
- 单击“查看日志详细内容”,进入SQL操作记录浏览页面。在该页面,您可以按照自己需要恢复数据的表、库名和操作类型进行筛选,此处筛选shopping表,update操作。
图3 查看日志详细内容
- 单击“查看数据”,确认操作是否为上述update语句。
图4 查看数据
- 针对解析后的结果获取SQL回滚语句。
- 利用Binlog解析功能获取某一时间段内的所有操作记录,获取到筛选结果后,单击“导出”按钮,选择对应OBS桶导出。
- 单击“查看导出列表”,获取最近导出的记录信息。
- 选择文件名一致,且导出条数与搜索结果一致的记录,单击“下载”。
- 打开下载后的文件,找到“事件回滚SQL”列,获取SQL回滚语句。
图5 事件回滚SQL
- 登录开发工具,或使用其他数据库链接工具,执行回滚语句,即可回滚Update操作。
图6 执行回滚