# 执行备份(InnoDB 热备,MyISAM 表会短暂锁表)
第一步:在主库执行备份(热备,不影响业务)
xtrabackup \ --backup \ --target-dir=/backsql/full_$(date +%Y%m%d) \ --user=root \ --host=192.168.11.16 --password='host主机密码'
第二步:准备备份(应用 redo log,使其一致)
xtrabackup \ --prepare \ --target-dir=/backsql/full_$(date +%Y%m%d)
第三步:查看备份对应的 GTID 位置(关键!)
cat /backsql/full_$(date +%Y%m%d)/xtrabackup_binlog_info
第四步:将备份传输到从库
# 在主库打包(可选,节省传输时间)
tar -czf full_backup.tar.gz -C /backsql full_$(date +%Y%m%d)
# 传输到从库(使用 rsync 更高效)
rsync -avP full_backup.tar.gz ttx14@192.168.11.14:/data/backup/
# 或直接 scp
scp full_backup.tar.gz user@slave_ip:/data/backup/
---备选---
# 在从库上执行
sudo rsync -avP --progress sr868@192.168.11.16:/backsql/full_backup.tar.gz /data/backup/ rsync -avP full_backup.tar.gz slave_host:/data/backup/
第五步:在从库恢复备份
1. 停止 MySQL
systemctl stop mysqld # 或 service mysql stop
2. 备份原数据目录(可选,安全起见
mv /var/lib/mysql /var/lib/mysql_old_$(date +%Y%m%d) mkdir -p /var/lib/mysql
3. 解压并恢复数据
cd /data/backup tar -xzf full_backup.tar.gz
4. 使用 xtrabackup 恢复(自动处理权限和文件)
xtrabackup \ --copy-back \ --target-dir=/data/backup/full_20251124 # 替换为实际目录名(这里指备份目录,数据库目录会自动获取)
5. 修复权限(MySQL 用户必须可读写)
chown -R mysql:mysql /var/lib/mysql
第六步:启动 MySQL 并设置 GTID_PURGED
1. # 可选:在 my.cnf 中临时加 skip-slave-start(避免自动启动复制报错) echo "skip_slave_start = ON" >> /etc/mysql/mysql.conf.d/my.cnf systemctl start mysqld
2. 设置 gtid_purged(关键!)
登录 MySQL:
-- 重置之前的复制信息
RESET SLAVE ALL; RESET MASTER;
-- 设置 GTID_PURGED 为备份时的值(替换为你自己的, 有多台服务器历史的, 可能有多个ID, 如下)
SET @@GLOBAL.gtid_purged = '3edd2368-6f2a-11ed-b003-0894effc92ae:1-4775871935,bda50951-2cd1-11ed-91fa-0894effe9b14:387203643-5272758832';
PS: 主库查询的GTID
cat /backsql/full_$(date +%Y%m%d)/xtrabackup_binlog_info mysql-bin.027473 6095 3edd2368-6f2a-11ed-b003-0894effc92ae:1-4775871935,bda50951-2cd1-11ed-91fa-0894effe9b14:387203643-5272758832
第七步:配置主从复制(GTID 自动定位)
CHANGE MASTER TO MASTER_HOST='192.168.11.16', MASTER_PORT=3306, MASTER_USER='wmsrepl', MASTER_PASSWORD='Ttx@2011', MASTER_AUTO_POSITION = 1; START SLAVE;
第八步:验证复制状态
SHOW SLAVE STATUS\G;
正常应看到:
Slave_IO_Running: Yes Slave_SQL_Running: Yes Seconds_Behind_Master: 逐渐减少至 0 Retrieved_Gtid_Set 和 Executed_Gtid_Set 持续增长
-- 创建一个新用户 'pt_user',允许从你的机器 (192.168.11.16) 连接
CREATE USER 'pt_user'@'192.168.11.16' IDENTIFIED WITH mysql_native_password BY '你的密码';
-- 授予该用户执行所需的所有权限
GRANT RELOAD, REPLICATION CLIENT ON *.* TO 'pt_user'@'192.168.11.16';
-- 刷新权限
FLUSH PRIVILEGES; EXIT;
本文为宁若水!原创文章,转载无需和我联系,但请注明来自[若水]博客 www.lalaya.net
