一,环境介绍
1,主机信息
主机系统:Centos7,数据库:mysql8,IP: 192.168.1.240 ,备份目录: /data/backup备用系统:openeuler 2203,数据库:mysql8,IP: 192.168.1.33 备份目录: /data/backup
2,方案简介
生产环境使用 192.168.1.240 主机,将数据库的备份文件同步到 备份机上,生产环境有问题后,可以在备用机上紧急恢复数据库。
二,备份方案。
1,安装MySQL8数据库
两台主机安装mysql8尽量采用相同参考文档进行安装。这里不再详解。
2,安装xtrabackup8软件
#数据库主机Centos7安装xtrabackup8软件
[root@wx]$ yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
[root@wx]$ yum -y install percona-xtrabackup-80
#数据库备机openeuler2203系统安装xtrabackup软件
[root@os33]$ wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.31-24/binary/tarball/percona-xtrabackup-8.0.31-24-Linux-x86_64.glibc2.17-minimal.tar.gz
#官网有不同的版本,这里采用最小软件包版本
[root@os33]$ tar -zxvf percona-xtrabackup-8.0.31-24-Linux-x86_64.glibc2.17-minimal.tar.gz
[root@os33]$ mv percona-xtrabackup-8.0.31-24-Linux-x86_64.glibc2.17-minimal /data/xtrabackup8
#配置软件执行文件的变量
[root@os33]$ echo "PATH=/data/xtrabackup8:\$PATH" > /etc/profile.d/xtrabackup.sh
#重新进入系统
# 执行命令查看软件安装版本
[root@os33]# xtrabackup --version
xtrabackup version 8.0.31-24 based on MySQL server 8.0.31 Linux (x86_64) (revision id: f0754edb)
3,备份mysql8
#第一次备份采用全备份
#配置备份账号与权限,当然可以直接使用root账号
CREATE USER 'xtrabk'@'127.0.0.1' IDENTIFIED BY 'Xtrabk#123';
ALTER USER 'xtrabk'@'127.0.0.1' IDENTIFIED BY 'Xtrabk#123';
GRANT BACKUP_ADMIN, PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'xtrabk'@'127.0.0.1';
GRANT SELECT ON performance_schema.log_status TO 'xtrabk'@'127.0.0.1';
FLUSH PRIVILEGES;
[root@os33]# mysql_config_editor set --login-path=xtrlogin -uxtrabk -h127.0.0.1 -P3306 -p
#或是以下命令
[root@os33]# mysql_config_editor set --login-path=xtrlogin --user=xtrabk --host=127.0.0.1 --port=3306 --password
#上面命令回车后,需要输入密码
[root@os33]# mysql_config_editor print --login-path=xtrlogin
[root@os33]# mysql_config_editor reset
#打印与重置登陆信息
[root@os33]# mkdir /data/backup
# 首次采用全备份
[root@os33]# xtrabackup -uxtrabk -pXtrabk#123 -S /tmp/mysql.sock --backup --target-dir=/data/backup/base
# 基于全备的首次差异备份
[root@os33]# xtrabackup --login-path=xtrlogin --backup -S /tmp/mysql.sock --target-dir=/data/backup/base
#也可以使用以上命令全备,这样不用输密码
[root@os33]# xtrabackup -uxtrabk -pXtrabk#123 -S /tmp/mysql.sock --backup --target-dir=/data/backup/inc1 --incremental-basedir=/data/backup/base
# 进行第二次增量备份
[root@os33]# xtrabackup -uxtrabk -pXtrabk#123 -S /tmp/mysql.sock --backup --target-dir=/data/backup/inc2 --incremental-basedir=/data/backup/inc1
# 备份过程生成三个备份目录,/data/backup/{base,inc1,inc2}
[root@os33]# xtrabackup -uxtrabk -pXtrabk#123 -S /tmp/mysql.sock --databases="phoenix" --backup --target-dir=/data/backup/phoenix
4,将备份文件传到备机
#可以使用SCP命令
#备机的目录结构最好也是一样的。
scp -r root@192.168.1.240:/data/backup/* /data/backup
5,还原过程
# 关闭备机的mysql服务
# 清空data目录
# 预准备完成备份,此选项--apply-log-only 阻止回滚未完成的事务
[root@os33]# xtrabackup --prepare --apply-log-only --target-dir=/data/backup/base
# 合并第1次增量备份到完全备份
[root@os33]# xtrabackup --prepare --apply-log-only --target-dir=/data/backup/base --incremental-dir=/data/backup/inc1
# 合并第2次增量备份到完全备份:最后一次还原不需要加选项--apply-log-only
[root@os33]# xtrabackup --prepare --target-dir=/data/backup/base --incremental-dir=/data/backup/inc2
# 还原数据库,当然也可以使用mv命令
[root@os33]# xtrabackup --defaults-file=/data/mysql8/my.cnf --copy-back --target-dir=/data/backup/base
[root@os33]# chown -R mysql:mysql /data/mysql8/data
# 还原文件权限
6,启动mysql服务
[root@os33]# /etc/init.d/mysqld restart
#根据日志与报错信息,修改mysql的配置文件