使用percona xtraBackup8.x进行MySql8.0备份与还原(完全备份,增量备份,差异备份)

MySQL备份与还原

  • 备份目标:数据的一致性,服务的可用性
  • 备份技术:物理备份(冷备份)【直接复制数据库文件,适用大型数据库,缺点是操作时服务需要停止】和 逻辑备份(热备份)【备份的是建表建库插入的SQL语句】
  • 备份方式:完全备份,增量备份,差异备份
  • percona是支持数据库热备份的软件

安装
一、首先要安装percona所需的mysql包,可用yum list | grep mysql-community-libs查询是否安装了,正常来说,这个包在装mysql的时候是会装上的。若没有则执行,yum install -y mysql-community-libs-compat
在这里插入图片描述
二、下载percona xtraBackup的yum仓库:yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
安装percona-xtrabackup,yum -y install percona-xtrabackup-24.x86_64
查询安装结果yum list | grep percona-xtrabackup

备份前期准备工作:要开启MySQL的二进制日志,操作如下:
默认没有开启,实现备份需要开启它,vim /etc/my.cnf,添加log_bin=mysqlbinlog,意思为启动二进制日志,文件名为mysqlbinlog;再添加server-id=2,群集问题指定该主机序号,数字随意,最后重启mysqld即可。【值得一提的是这里设置了MySQL8的二进制日志的文件名是mysqlbinlog,即:mysqlbinlog.index,如mysqlbinlog.000001,使用mysqlbinlog 可以查看二进制日志文件mysqlbinlog -v /var/lib/mysql/mysqlbinlog.000001
在这里插入图片描述
登录Mysql,输入show variables like ‘log_bin’;查看开启状态为on即可。在这里插入图片描述

完全备份还原流程
备份
xtraBackup8使用的是xtrabackup命令而非innobackupex, xtrabackup --backup --target-dir=/xtrabackup/full -uroot -p'mysql-root用户的密码'【其中–target-dir=/xtrabackup/full指明备份目的地】
ls /xtrabackup/full/查询备份结果。
cat /xtrabackup/full/xtrabackup_binlog_info可以查看二进制日志文件的位置。
还原
流程:首先systemctl stop mysqld停止数据库
这里模拟一下数据库损坏(rm -rf /var/lib/mysql/*rm -rf /var/log/mysqld.log
还原时先一致性检查xtrabackup --prepare --target-dir=/xtrabackup/full
再进行恢复xtrabackup --copy-back --target-dir=/xtrabackup/full即可
然后还原的文件要给mysql用户再授权chown -R mysql.mysql /var/lib/mysql,即可systemctl start mysqld正常启动mysqld,完成还原操作。

增量备份还原流程
备份
xtrabackup -uroot -p'mysql-root用户密码' --backup --target-dir=/xtrabackup/inc1 --incremental-basedir=/xtrabackup/full 基于完全备份生成第一次增量备份。
xtrabackup -uroot -p'mysql-root用户密码' --backup --target-dir=/xtrabackup/inc2 --incremental-basedir=/xtrabackup/inc1 基于第一次增量备份生成第二次增量备份。(后续的增量备份以此类推。)
还原
systemctl stop mysqld关闭mysqld服务
再进行一致性检查(先回滚全量包,再回滚第一次增量包,再回滚第二次增量包,这时增量数据都到了全量包中)【每次增量包都要回滚!】
xtrabackup --prepare --apply-log-only --target-dir=/xtrabackup/full
xtrabackup --prepare --apply-log-only --target-dir=/xtrabackup/full --incremental-dir=/xtrabackup/inc1
xtrabackup --prepare --apply-log-only --target-dir=/xtrabackup/full --incremental-dir=/xtrabackup/inc2
回滚完成后,进行恢复xtrabackup --copy-back --target-dir=/xtrabackup/full。最后还原的文件要给mysql用户再授权chown -R mysql.mysql /var/lib/mysql,即可systemctl start mysqld正常启动mysqld,完成还原操作。

差异备份还原流程
备份
xtrabackup -uroot -p'mysql-root用户密码' --backup --target-dir=/xtrabackup/inc1 --incremental-basedir=/xtrabackup/full 基于完全备份生成第一次增量备份,与完全备份的差异就是差异备份。
xtrabackup -uroot -p'mysql-root用户密码' --backup --target-dir=/xtrabackup/inc2 --incremental-basedir=/xtrabackup/inc1仍是基于完全备份生成第二次增量备份,与完全备份的差异就是差异备份。(后续的差异备份仍是基于完全备份进行,以此类推。)
恢复
如上所示,进行了两次差异备份,那么回滚不用像增量备份一样,每个增量包都需要回滚,只需回归完全备份包和最后一次差异备份包即可。
xtrabackup --prepare --apply-log-only --target-dir=/xtrabackup/full
xtrabackup --prepare --apply-log-only --target-dir=/xtrabackup/full --incremental-dir=/xtrabackup/inc2
回滚完成后,进行恢复xtrabackup --copy-back --target-dir=/xtrabackup/full。最后还原的文件要给mysql用户再授权chown -R mysql.mysql /var/lib/mysql,即可systemctl start mysqld正常启动mysqld,完成还原操作。

猜你喜欢

转载自blog.csdn.net/qq_41954181/article/details/131453181