点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!
数据库恢复,通过全备+binlog
1.1 故障背景
1.2 故障情况



1.3 数据恢复操作
Apply_log:
/opt/work/mysql3310/install/xbk/bin/innobackupex --defaults-file=/opt/work/mysql3311/etc/my.cnf --apply-log 2024-05-02_11-06-28 >>/opt/work/bak/apply_log.log 2>&1 &

Move_back
/opt/work/mysql3310/install/xbk/bin/innobackupex --defaults-file=/opt/work/mysql3311/etc/my.cnf --move-back 2024-05-02_11-06-28 >/opt/work/bak/move_log.log 2>&1 &


1.4 Binlog恢复数据
--skip-gtids ---作用:在导出时,忽略原有的gtid信息,恢复时生成最新的gtid信息; --include-gtids='d60b549f-9e10-11e9-ab04-000c294a1b3b:6','d60b549f-9e10-11e9-ab04-000c294a1b3b:8' ---截取6和8; --exclude-gtids='d60b549f-9e10-11e9-ab04-000c294a1b3b:6','d60b549f-9e10-11e9-ab04-000c294a1b3b:8' ---跳过6和8。

a7138436-f646-11ee-909a-000c29a30c89:60
/opt/work/mysql3310/install/mysql5.7.44/bin//mysqlbinlog
--skip-gtids --exclude-gtids='a7138436-f646-11ee-909a-000c29a30c89:60' --start-position=2977
mysql-bin.000014 mysql-bin.000015 >/opt/work/2.sql
1.5 数据导入

1.6 数据验证

此时可以看见通过binlog可以将数据进行恢复,读取binlog时跳过了删除的gtid,并且也成功恢复了删除后写入的另外的表xcc数据,最后将相应数据和研发核对,没有问题后,将数据导出来后,业务在自行进行导入。
数据库数据恢复(myflash)
2.1 安装
[root@xcc install]# unzip MyFlash-master.zip
[root@xcc install]# cd MyFlash-master/
[root@xcc MyFlash-master]# yum install glib2-devel -y
[root@xcc MyFlash-master]# gcc -w `pkg-config --cflags --libs glib-2.0` source/binlogParseGlib.c -o binary/flashback
2.2 使用条件
databaseNames 指定需要回滚的数据库名。多个数据库可以用“,”隔开。如果不指定该参数,相当于指定了所有数据库。 tableNames 指定需要回滚的表名。多个表可以用“,”隔开。如果不指定该参数,相当于指定了所有表。 start-position 指定回滚开始的位置。如不指定,从文件的开始处回滚。请指定正确的有效的位置,否则无法回滚。 stop-position 指定回滚结束的位置。如不指定,回滚到文件结尾。请指定正确的有效的位置,否则无法回滚。 start-datetime 指定回滚的开始时间。注意格式必须是 %Y-%m-%d %H:%M:%S。如不指定,则不限定时间。 stop-datetime 指定回滚的结束时间。注意格式必须是 %Y-%m-%d %H:%M:%S。如不指定,则不限定时间。 sqlTypes 指定需要回滚的sql类型。目前支持的过滤类型是INSERT, UPDATE ,DELETE。多个类型可以用“,”隔开。 maxSplitSize 一旦指定该参数,对文件进行固定尺寸的分割(单位为M),过滤条件有效,但不进行回滚操作。 该参数主要用来将大的binlog文件切割,防止单次应用的binlog尺寸过大,对线上造成压力。 binlogFileNames 指定需要回滚的binlog文件,目前只支持单个文件,后续会增加多个文件支持,目前可以支持多个binlog,直接写绝对路径加上binlog日志文件名,解析多个binlog已分割。 outBinlogFileNameBase 指定输出的binlog文件前缀,如不指定,则默认为binlog_output_base.flashback,生成的二进制恢复数据。 logLevel 仅供开发者使用,默认级别为error级别。在生产环境中不要修改这个级别,否则输出过多。 include-gtids 指定需要回滚的gtid,支持gtid的单个和范围两种形式。 exclude-gtids 指定不需要回滚的gtid,用法同include-gtids。
2.3 测试

[root@xcc binary]# ./flashback --databaseNames=test --tableNames=TestTable --start-position='4176' --stop-position='4371' --
binlogFileNames=/opt/work/mysql3310/binlog/mysql-bin.000009, opt/work/mysql3310/binlog/mysql-bin.000010 --outBinlogFileNameBase=test1back



2.4 恢复
[root@xccbinary]#/opt/work/mysql3310/install/mysql5.7.44/bin
/mysqlbinlog -vv --skip-gtids test1back.flashback |
/opt/work/mysql3310/install/mysql5.7.44/bin/mysql -uroot -
p'dengzl123' -S /opt/work/mysql3310/tmp/mysql3310.sock
2.5 数据验证


本文作者:幸沉陈(上海新炬中北团队)
本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




