美文网首页数据库
mysql mysqldump备份恢复策略

mysql mysqldump备份恢复策略

作者: 会飞的小猪 | 来源:发表于2021-07-09 11:01 被阅读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

    相关文章

      网友评论

        本文标题:mysql mysqldump备份恢复策略

        本文链接:https://www.haomeiwen.com/subject/zpqfpltx.html