当前位置:Gxlcms > 数据库问题 > binlog2sql与MariaDB flashback

binlog2sql与MariaDB flashback

时间:2021-07-01 10:21:17 帮助过:19人阅读

解析回滚SQL: 技术图片

连接配置选项

mysql连接配置

-h host; -P port; -u user; -p password

解析模式

--stop-never 持续解析binlog。可选。默认False,同步至执行命令时最新的binlog位置。

-K, --no-primary-key 对INSERT语句去除主键。可选。默认False

-B, --flashback 生成回滚SQL,可解析大文件,不受内存限制。可选。默认False。与stop-never或no-primary-key不能同时添加。

--back-interval -B模式下,每打印一千行回滚SQL,加一句SLEEP多少秒,如不想加SLEEP,请设为0。可选。默认1.0。

解析范围控制

--start-file 起始解析文件,只需文件名,无需全路径 。必须。

--start-position/--start-pos 起始解析位置。可选。默认为start-file的起始位置。

--stop-file/--end-file 终止解析文件。可选。默认为start-file同一个文件。若解析模式为stop-never,此选项失效。

--stop-position/--end-pos 终止解析位置。可选。默认为stop-file的最末位置;若解析模式为stop-never,此选项失效。

--start-datetime 起始解析时间,格式‘%Y-%m-%d %H:%M:%S‘。可选。默认不过滤。

--stop-datetime 终止解析时间,格式‘%Y-%m-%d %H:%M:%S‘。可选。默认不过滤。

对象过滤

-d, --databases 只解析目标db的sql,多个库用空格隔开,如-d db1 db2。可选。默认为空。

-t, --tables 只解析目标table的sql,多张表用空格隔开,如-t tbl1 tbl2。可选。默认为空。

--only-dml 只解析dml,忽略ddl。可选。默认False。

--sql-type 只解析指定类型,支持INSERT, UPDATE, DELETE。多个类型用空格隔开,如--sql-type INSERT DELETE。可选。默认为增删改都解析。用了此参数但没填任何类型,则三者都不解析。

测试 环境:Python2.7.8  MariaDB10.2.11       t1 表T1时刻 原始数据: 技术图片 t1表T2时刻往后分别删除插入记录: 技术图片 业务恢复需求:     将数据恢复至T1时刻,但是T1-T2这段时间的INSERT数据不需要恢复,只恢复DELETE的数据(即恢复id=2和3 的记录) 方法1:MariaDB  flashback /usr/local/mariadb/bin/mysqlbinlog --start-datetime=‘2019-06-05 18:49:37‘ -d test -T t1 hf_test-bin.000131 --flashback >recover.sql         可以生成对应的回滚语句,但是包含此表这段时间的所有dml操作,单纯过滤出DELETE操作出错率高,可靠性差 方法2:binlog2sql     解析这段时间对此表的dml操作 技术图片  生成回滚SQL     技术图片 过滤文件中业务需要的INSERT语句: 恢复:myin 3308 test <./insert.sql  技术图片 T1后插入的 dd ,ee 记录保留,删除的bb,cc 恢复完成! 总结:   业务方会根据各种场景提各种奇葩需求,需要DBA根据具体情况具体分析,多测试,才能做到得心应手   MariaDB的flashback很有效,但针对此需求binlog2sql更适合,具体需求具体分析

binlog2sql与MariaDB flashback

标签:pip   变化   primary   git clone   size   only   wiki   comment   路径   

人气教程排行