MySQL 5.6 不停机创建主从同步,CentOS 7,其他系统也可以参考。

从节点要把历史数据全部清空才能进行后续操作

1、需要提前安装备份还原软件: xtrabackup

1
2
3
wget https://www.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.15/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.15-1.el7.x86_64.rpm

yum install -y percona-xtrabackup-24-2.4.15-1.el7.x86_64.rpm

2、主库创建同步用户

1
2
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'172.16.20.86' IDENTIFIED BY 't!k5ZygPX7';
FLUSH PRIVILEGES;

3、修改从库配置server-id

1
2
[mysqld]
server-id = 2

4、备份主库

1
xtrabackup  --user=root --password='t!k5ZygPX7HJ5Z' --backup --target-dir=/bak/mysql_$(date +%Y%m%d)

5、准备备份

1
2
3
# 在将备份用于从库恢复之前,需要准备(apply-log) 备份数据,此步骤会回滚未提交的事务,确保数据文件保持一致状态

innobackupex --apply-log /bak/mysql_20251125

6、同步数据到从库

1
rsync -avz --progress mysql_20251125 root@172.16.20.86:/bak

7、停止从库,备份数据,恢复数据(根据实际情况修改)

1
2
3
4
5
6
systemctl stop mysqld
cd /data/mysql && mv data data-bak
xtrabackup --copy-back --target-dir=/bak/mysql_20251125
mkdir -p {binlog,relaylog}
chown -R mysql:mysql /data/mysql
systemctl start mysqld

8、建立主从同步(在从库上操作)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 获取master节点的同步信息: MASTER_LOG_FILE、MASTER_LOG_POS
cat /bak/mysql_20251125/xtrabackup_binlog_info

# 创建主从连接(数据库操作)
CHANGE MASTER TO
MASTER_HOST='172.16.20.85',
MASTER_USER='slave_user',
MASTER_PASSWORD='t!k5ZygPX7',
MASTER_LOG_FILE='mysql-bin.000521',
MASTER_LOG_POS=69548653;

# 开启slave
START SLAVE;

# 查看主从状态
# 确认 Slave_IO_Running 和 Slave_SQL_Running 两项的状态均为 Yes
SHOW SLAVE STATUS\G;

参考: