数据库

mysql mysqldump备份恢复策略

2021-07-09  本文已影响0人  会飞的小猪

备份:

1、单库备份:/data/mysql/bin/mysqldump -uxxx -pxxx --single-transaction --master-data=2 --set-gtid-purged=OFF --databases xxx |gzip > xxx.sql.gz

2、全库备份: /data/mysql/bin/mysqldump -uxxx -pxxx --single-transaction --master-data=2 --set-gtid-purged=OFF --all-databases|gzip > xxx.sql.gz

恢复:

1、单库恢复:gunzip < export-all-db-20210331.gz | mysql -uxxx -pxxx --one-database  xxx

2、重放binlog:适合数据量较小,且整体备份都在的情况,首先恢复备份,然后根据binlog可以恢复出来对应表的新增和插入语句。这样就拿到了最后时间点的数据。

恢复备份:

/data/mysql/bin/mysqlbinlog --start-position=160340 --stop-position=181994 --database=xxx mysql-bin.000003>backup_inc.sql

Source backup_inc.sql

或者

重放binlog:/data/mysql/bin/mysqlbinlog --start-position=160340 --stop-position=181994 --database=xxx mysql-bin.000003|mysql -uxxx –p

该步骤需要定位到要恢复的开始和结束位置。

闪回:针对update,delete,insert。Drop命令无法闪回,需要使用恢复备份+重放binlog方式。

1、下载MyFlash :git clone https://github.com/Meituan-Dianping/MyFlash.git

2、安装依赖包: yum install -y gcc pkg-config glib2 libgnomeui-devel

3、编译:gcc -w `pkg-config --cflags --libs glib-2.0` source/binlogParseGlib.c -o binary/flashback。

4、Flush binlog: 在mysql执行flush log。

5、分析binlog:重点是分析binlog,找到需要回退的开始和结束位置。使用/data/mysql/bin/mysqlbinlog --no-defaults --database=xxx --base64-output=decode-rows -v mysql-bin.000003 > test182.txt,获取需要闪回的start stop 位置。

6、闪回:cd /usr/local/MyFlash/binary/

./flashback  --databaseNames=xxx --sqlTypes='UPDATE,INSERT,DELETE' --outBinlogFileNameBase=test182.flashback --binlogFileNames=mysql-bin.000003 --start-position=1171366 --stop-position=71111286

7、重跑binlog: mysqlbinlog test182.flashback.flashback |mysql -uxxx –p

8、校验:checksum table test

上一篇下一篇

猜你喜欢

热点阅读