(一)确认MySQL数据库版本:
MySQL-8.0.32
(二)xtrabackup版本
percona-xtrabackup-8.0.34-29-Linux-x86_64.glibc2.17-minimal.tar.gz
建议去官网下载Software Downloads - Percona
(三)xtrabackup的安装
1)上传安装包至/data目录。
2)解压安装包。
tar -zxf percona-xtrabackup-8.0.34-29-Linux-x86_64.glibc2.17-minimal.tar.gz
3)设置主机xtrabackup环境变量:
echo "export PATH=$PATH:/data/percona-xtrabackup-8.0.34-29-Linux-x86_64.glibc2.17-minimal/bin">> /etc/profile
source /etc/profile
4) 设置xtrabackup软连接
ln -s /data/percona-xtrabackup-8.0.34-29-Linux-x86_64.glibc2.17-minimal/bin/xtrabackup /usr/bin/xtrabackup
(四)以3316端口实例描述备份恢复的过程
1)3316端口的备份
A:先在3316端口实例对创建的用户实例赋予备份的权限
mysql -S /data/mysql/mysqldata3316/sock/mysql.sock
--创建用户
create user 'user'@'%' identified with mysql_native_password by 'password';
--授权
grant replication slave on *.* to "user"@'%';
grant replication client on *.* to "user"@'%';
grant reload on *.* to "user"@'%';
grant select on *.* to "user"@'%';
这一步主要是给用户授予权限
grant all privileges on *.* to "user"@'%';
-- 刷新特权
flush privileges;
-- 查看特权
show grants for user;
--创建好用户后可以登录验证
登录:mysql -uuser -ppassword -h127.0.0.1 -P3316
(五)建立备份
1) 在/data/backup下面建立备份目录:
mkdir -p /data/backup/back_3316
2) 执行备份语句(压缩备份)
Nohup xtrabackup --defaults-file=/etc/my.cnf --host=127.0.0.1 --user=user
--password=password --port=3316 --backup --apply-log-only=true --compress --compress-threads=5 --parallel=3 --target-dir=/data/backup/back_3316 >> /data/backup/back_3316/log/3316.log &
这里要注意要有相应的软件包否则会执行失败,可以通过命令rpm -qa grep +软件名方式或者which + 软件名前缀方式查找
!注意:nohup是在后台跑的命令,(>> /data/backup/back_3316/log/3316.log &)是将执行的日志写入3316日志中,方便查看
3)备份完后停止备库的3316实例
mysqld_multi stop 3316
(六)拷贝备份到备主机
1)通过scp命令拷贝到备机
scp -r root@主机ip:/data/backup/back_3316 /data/backup/
2)备份备主机的3316实例(如果备主机没有3316实例则可以不用备份)
# cd /data/mysql
# mv mysqldata3316 /data/backup
3)创建3316对应的文件夹
mkdir -p /data/mysql/mysqldata3316/{binlog,innodb_log,innodb_ts,log,relaylog,sock,tmpdir}
4)将主机上scp过来的back_3316文件夹移动到/data/mysql/mysqldata3316
cd /data/backup/
mv back_3316 /data/mysql/mysqldata3316/mydata
(七)解压备份文件,将解压后的文件移动到相应位置
1)解压备份
xtrabackup --defaults-file=/etc/my.cnf --decompress --target-dir=/data/mysql/mysqldata3316/mydata
解压前记得同样安装好xtrackup软件,并下好相应的解压包(比如:zstd的解压包)或者直接去已有主机拷贝一份编译好的软件过来,一般都在usr/bin目录下,具体可以通过which +软件名查找,拷贝过来的需要授权(chmod +x 编译好的软件名)
2)应用relog日志
# xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/mysql/mysqldata3316/mydata
3)移动生成的文件至指定目录
mv /data/mysql/mysqldata3316/mydata/#innodb_redo /data/mysql/mysqldata3316/innodb_log
mv /data/mysql/mysqldata3316/mydata/ibdata1 /data/mysql/mysqldata3316/innodb_ts
mv /data/mysql/mysqldata3316/mydata/ibtmp1 /data/mysql/mysqldata3316/innodb_ts
touch /data/mysql/mysqldata3316/log/error.log
chown -R mysql.mysql /data/mysql/mysqldata3316
(八)启动备3316实例
1) 如果备主机之前就有3316实例就不需要改/etc/my.cny,但是如果备主机之前没有建立3316实例则需要在/etc/my.cny增加相关3316配置,比较简单的方法是直接把主库里的my.cnf复制过来即可,否则无法启动3316实例;
mysqld_multi start 3316
(九)登录备库3316实例并配置同步任务
1)/usr/local/mysql/bin/mysql -S /data/mysql/mysqldata3316/sock/mysql.sock
stop slave;
reset replica all;
reset master;
2)查看备份 GTID 的复制位点:
cat /data/mysql/mysqldata3316/mydata/xtrabackup_info
3)设置gtid的复制位点
set global gtid_purged='4169c7dc-a947-11ee-8c16-001c1032ad12:1-4269';
4)设置备库到主库的复制关系
change replication source to source_host='主库ip',source_user='user',source_port=3316,source_password='password', source_auto_position=1;
start replica;
show replica status\G
(十)主库(源库)配置向备库的复制关系
1) 登录3316
/usr/local/mysql/bin/mysql -S /data/mysql/mysqldata3316/sock/mysql.sock
stop slave
reset replica all;
2)设置主库到备库的复制关系
change replication source to source_hos'备库ip',source_user='user',source_port=3316,source_password='password',source_auto_position=1;
start replica;
show replica status\G
----- 有任何疑问欢迎留言