备份:
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
网友评论