Mysql Xtrabackup主从同步参考手册(centos7.6+mysql8.0.26)
一、查看操作系统版本
cat /etc/redhat-release
二、查看mysql版本
三、下载对应系统版本和mysql版本 Xtrabackup安装包(主机需要外网下载权限,否则无法解决安装过程中依赖问题)
https://www.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0.26-18/binary/redhat/7/
四、主机上下载后,再使用yum安装
yum -y install percona-xtrabackup-80-8.0.26-18.1.el7.x86_64.rpm
五、主库上进行备份(非压缩)
(1)脚本内容
cat xtrabackup.sh
#!/bin/bash
#脚本文件需要775权限
echo "begin_dbaflag `date +%Y-%m-%d` `date +%H:%M:%S`"
#以下三行需要根据实际情况调整,备份bakdir目录需要775权限
bakdir=/data/backup
username=mysql用户名
passwd=mysql用户名对应密码
#以下所有都通用,无需调整
Dat=`date +%Y%m%d`
dat=`date +%Y-%m-%d-%H-%M-%S`
day=`date +%w`
MYCNF=`systemctl status mysqld |grep -i datadir|awk -F '=' '{print "--defaults-file="$2}' |awk '{print $1}'`
cd $bakdir
if [ -e $day ]
then rm -rf $day
fi
mkdir $day;
/usr/bin/xtrabackup $MYCNF --user=$username --password=$passwd --no-lock --backup --target-dir=$bakdir/$day
echo -e "\n end_dbaflag `date +%Y-%m-%d` `date +%H:%M:%S`"
(2)脚本文件需要775权限(chmod 775 xtrabackup.sh)
(3)脚本计划任务举例
(4)备份正常日志举例
六、上传备份到从库
压缩打包(备份过大,建议压缩,IO为固态,可考虑直接传出)
上传备份到备库,并解压(路径任意指定,路径需要775权限):
七、从库上恢复
(1)停止从库mysql服务(注意IP)
systemctl stop mysql #停从库上mysql服务
ps -ef |grep -i mysql #检查没有mysql进程说明停止成功
(2)删除从库上mysql数据目录和日志目录下数据
cd /data/mysql/mysql3306/ #cd到实际路径下面删除 data和log目录,即只保留etc/my.cnf
rm -rf /data/mysql/mysql3306/{data,log}/* #删除命令
(3)恢复重做日志
xtrabackup --defaults-file=/data/mysql/mysql3306/etc/my.cnf --prepare --use-memory=2G --target-dir=/data/backup/5 #恢复重做日志:
(4)恢复数据
xtrabackup --defaults-file=/data/mysql/mysql3306/etc/my.cnf
--copy-back --target-dir=/data/backup/5
#恢复数据,时间与拷贝数据有关(与OS上IO有关)
(5)从库参数文件中server_id值调整:
调整参数文件/data/mysql/mysql3306/etc/my.cnf中server_id值从库比主库小即可。
备注:这里的路径要特别注意,为实际mysql路径:默认若安装在/kingdee下,那数据位置为:/kingdee/mysql/mysql3306/,具体参考my.cnf中datadir位置。
(6)改恢复后的data目录和log目录下所有权限为mysql:
chown mysql:mysql data/ -R
chown mysql:mysql log/ -R
创建log路径下目录relay-log以及修改权限为mysql:
mkdir /data/mysql/mysql3306/log/relay-log
chown mysql:mysql /data/mysql/mysql3306/log/relay-log
八、从库上同步处理
(1)恢复完成后,启动从库上mysql服务:systemctl start mysql;
(2)登录到从库mysql -uroot -p密码
(3)从库上创建与主库同样用于同步账号&授权
alter user repl@'%' identified by 'repl';
GRANT ALL PRIVILEGES ON *.* TO 'repl'@'%' ;
flush privileges;
同步操作:
reset master;
set @@global.gtid_purged=' b9f25a54-0232-11ed-a7c8-080027de1ec4:1-9'; #从备份目录中的xtrbackup_info文件得到gtid值
change master to master_host='192.168.56.220',master_user='repl',master_password='repl',master_port=3306,master_auto_position=1;
start slave;
show slave status \G;
(4)若有报错遗漏地方,检查后可按如下处理:
报无relay-log目录问题(见前面主从库都需要创建此目录):
再执行同步操作,开始同步:start slave; 查看从库状态:show slave status \G;
提示账号没权限(若repl权限给的过小报此错误):
给同步账号all权限(建议给同步权限即可)
alter user repl@’%’ identified by ‘repl’;
grant all privileges on *.* to ‘repl’@’%’;
flush privileges;
最后再stop slave; start slave;
(5)基于位点方式处理
若前面已经使用gtid方式,需要对master_auto_position置0即可,位点方式(binlog文件号和位点号可在xtrabackup_info文件中查到):
reset master;
change master to master_auto_position=0;
change master to
master_host='192.168.56.220',master_user='repl',master_password='repl',master_port=3306,MASTER_LOG_FILE='mysql_bin_30001.000004'
,MASTER_LOG_POS=196;
Mysql Xtrabackup主从同步参考手册(centos7.6+mysql8.0.26)
本文2024-09-23 01:13:35发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144580.html