基于PolarDB数据库binlog正向和反向数据恢复案例产品系统

我要开发同款
潇湘听竹2026年04月10日
7阅读

技术信息

语言技术
PythonMySQLLinux
系统类型
LinuxMacOSWindows
行业分类
电商
参考价格
5000

作品详情

行业场景

1、案例背景
①开发同事在周五上APP版本时,数据库配置写错,配成项目新数据库地址;
②导致本来新库的新写入数据被从旧库DTS同步过来的数据所覆盖【旧库:insert→新库:update】,导致丢失数据;
2、实现目标:
①某时间点的mysql binlog日志的提取和抽取;
②大表数据闪回;
③恢复指定时间段的正向数据;
④从DTS同步到新库的覆盖的SQL进行闪回操作;
⑤正则匹配符合数据恢复要求的update原语句。

功能介绍

1、提取闪回SQL,如下:
shell > python binlog2sql.py -h127.0.0.1 -uroot -p"ggghhh2324543654,." -d#dbname -t#table1 --start-file="mysql-bin.000088" --start-position=241968657 --stop-position=257873247 --sql-type UPDATE --flashback > /opt/#table1_fbk.sql
2、正则匹配符合条件语句,如下:
mysql > select regexp_substr(sql_text,"(jiaoyi_no.')[0-9a-zA-Z]+'",1,1) forean_jiaoyi_no,regexp_substr(sql_text,"(jiaoyi_no.')[0-9a-zA-Z]+'",1,2) back_jiaoyi_no,a.sql_text from #dbcurr.pic_infos a where a.sql_text regexp "UPDATE #dbtmp.pic_infos" and regexp_substr(sql_text,"(jiaoyi_no.')[0-9a-zA-Z]+'",1,1)=regexp_substr(sql_text,"(jiaoyi_no.')[0-9a-zA-Z]+'",1,2);
3、提取正向SQL,如下:
python binlog2sql.py -h127.0.0.1 -uroot -p"ggghhh2324543654,." -d#dbname -t#table1 --start-file="mysql-bin.000088" --start-position=241968657 --sql-type

项目实现

1、通过PolarDB命令获取新库对应时间点的binlog,根据所得的修改时间列找到2024年12月29日 10:40:00 至 10:56:00(不含该临界值) 期间的binlog日志
2、在线获取PolarDB对应binlog文件
3、获取到日志之后,恢复该binlog到本地测试环境的mysql server上,操作如下:
①找到本地mysql对应binlog目录,停止本地mysql服务(systemctl stop mysqld)
②将mysql-bin.000088原本复制到binlog目录:/data/mysql/log/binlog/
③修改binlog索引文件:mysql-bin.index,将该binlog文件路径写入,内容为:/data/mysql/log/binlog/mysql-bin.000088
④启动本地mysql服务(systemctl start mysqld)
4、恢复指定时间的gtid偏移量增量数据,找出10:40:00至10:56:00的gtid偏移量
5、提取从DTS同步到新库的覆盖的SQL进行闪回操作(反向)(由于旧库INSERT→新库UPDATE,将新旧库的同时写造成主键冲突的UPDATE语句提取出来),现就提取对应的UPDATE语句SQL
6、将已经闪回的SQL:#table1_fbk.sql和#table2_fbk.sql应用至对应数据库
7、提取这个时间段所有的update语句(正向);
8、正则匹配:①创建一张新表xxxx_current_update(包含id和sql_text字段,id为自增主键,sql_text为text类型字段),用于存储这个时间段从二进制日志文件提取出来的所有的update语句②将这些提取出来的正向UPDATE语句写入到该表的sql_text字段 ③正则匹配出这些需要恢复数据的update语句。

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论