一、背景:1、 Percona Xtrabackup 8.0.25 不支持低于MySQL 8.0的备份(因为MySQL 8.0在数据字典、redo log中和之前版本不兼容),因此2.4版本的也不支持8系的备份
2、mysql8系,除了克隆方式,也可以采用 Xtrabackup进行数据恢复。全备份的好处是当数据库出现无法启动或人为的drop,truncate等导致的误操作,也可以通过全备份和binlog日志全量恢复数据
二、8系备份工具见附件,依赖包qpress是压缩解压时需要的命令
三、准备主备数据库,备库数据停止,删除data目录数据,从主库备份数据进行恢复
3.1 命令 参数 解释:
--compress 压缩备份
--compress-threads=4 压缩备份线程数
--decompress 压缩解压 xtrabackup --decompress --target-dir=/data/compressed/
--prepare 恢复数据预操作
--apply-log 回滚日志
--redo-only 对增量备份进行合并
3.2全备份命令:
/home/e3base/xtrabackup-8.0.25/bin/xtrabackup --defaults-file=/dbdata/mysql3308/my3308.cnf --user=xxx --password=xxxx --socket=/dbdata/mysql3308/my3308.sock --backup --no-server-version-check --compress --compress-threads=4 --target-dir=/home/e3base/test/mysql_backup/base-`date +%Y%m%d%H%M%S`
效果见图:
3.3增量备份1:
/home/e3base/xtrabackup-8.0.25/bin/xtrabackup --defaults-file=/dbdata/mysql3308/my3308.cnf --user=xxx --password=xxx --socket=/dbdata/mysql3308/my3308.sock --backup --no-server-version-check --compress --compress-threads=4 --target-dir=/home/e3base/test/mysql_backup/inc1-`date +%Y%m%d%H%M%S` --incremental-basedir=/home/e3base/test/mysql_backup/base-20221017145605
3.3增量备份2(不一一展示图片):
/home/e3base/xtrabackup-8.0.25/bin/xtrabackup --defaults-file=/dbdata/mysql3308/my3308.cnf --user=xxx --password=xxx --socket=/dbdata/mysql3308/my3308.sock --backup --no-server-version-check --compress --compress-threads=4 --target-dir=/home/e3base/test/mysql_backup/inc2-`date +%Y%m%d%H%M%S` --incremental-basedir=/home/e3base/test/mysql_backup/inc1-20221017150134
3.4 数据恢复
解压:
/home/e3base/xtrabackup-8.0.25/bin/xtrabackup --decompress --target-dir=/home/e3base/test/mysql_backup/base-20221017145605
/home/e3base/xtrabackup-8.0.25/bin/xtrabackup --decompress --target-dir=/home/e3base/test/mysql_backup/inc1-20221017150134
/home/e3base/xtrabackup-8.0.25/bin/xtrabackup --decompress --target-dir=/home/e3base/test/mysql_backup/inc2-20221017151342
恢复数据
先重放日志和数据文件,并避免回滚全量备份过程中未提交的事务
/home/e3base/xtrabackup-8.0.25/bin/xtrabackup --defaults-file=/dbdata/mysql3308/my3308.cnf --no-server-version-check --prepare --apply-log-only --target-dir=/home/e3base/test/mysql_backup/base-20221017145605
再重放第一次增量备份文件中的日志和数据文件,并避免此次备份过程中未提交事务的回滚
/home/e3base/xtrabackup-8.0.25/bin/xtrabackup --defaults-file=/dbdata/mysql3308/my3308.cnf --no-server-version-check --prepare --apply-log-only --target-dir=/home/e3base/test/mysql_backup/base-20221017145605 --incremental-dir=/home/e3base/test/mysql_backup/inc1-20221017150134
再重放第二次增量备份文件中的日志和数据文件,并避免此次备份过程中未提交事务的回滚
/home/e3base/xtrabackup-8.0.25/bin/xtrabackup --defaults-file=/dbdata/mysql3308/my3308.cnf --no-server-version-check --prepare --apply-log-only --target-dir=/home/e3base/test/mysql_backup/base-20221017145605 --incremental-dir=/home/e3base/test/mysql_backup/inc2-20221017151342
应用数据文件
/home/e3base/xtrabackup-8.0.25/bin/xtrabackup --defaults-file=/dbdata/mysql3308/my3308.cnf --no-server-version-check --copy-back --target-dir=/home/e3base/test/mysql_backup/base-20221017145605
四、远程备份数据:
4.1全量备份流的形式备份到远程主机:
压缩,流方式备份
/home/e3base/xtrabackup-8.0.25/bin/xtrabackup --defaults-file=/dbdata/mysql3308/my3308.cnf --user=xxx --password=xxx --socket=/dbdata/mysql3308/my3308.sock --backup --parallel=4 --slave-info --no-timestamp --compress --compress-threads=4 --stream=xbstream --target-dir=/dbdata/backup --tmpdir=/dbdata/backup/tmp 2> /dbdata/backup_3308.log | ssh [email protected] "cat - > /dbdata/backup/backup_3308_`date '+%Y%m%d%H'`.xbstream" &
远程主机文件:
流解压:
/home/e3base/xtrabackup-8.0.25/bin/xbstream -x </dbdata/backup/backup_3308_2022101715.xbstream -C backup4
compress压缩解压,解压成功会有ok字样:
远程恢复全备份:
重放日志和数据文件,并避免回滚全量备份过程中未提交的事务
/home/e3base/xtrabackup-8.0.25/bin/xtrabackup --defaults-file=/dbdata/mysql3308/my3308.cnf --prepare --target-dir=/dbdata/backup/backup4
应用数据文件
/home/e3base/xtrabackup-8.0.25/bin/xtrabackup --defaults-file=/dbdata/mysql3308/my3308.cnf --copy-back --target-dir=/dbdata/backup/backup4
备份数据恢复数据一致性校验(恢复数据e3base1与备份实例e3base2数据表数据一致,全备份成功):