下面给你一个CentOS 下 MySQL 主从复制(Master–Slave)的标准搭建流程(以 CentOS 7 + MySQL 5.7/8.0 为例,步骤通用)。
假设:
两台机器都执行:
# 安装 MySQL(以 MySQL 8.0 为例)
yum install -y mysql-server
systemctl start mysqld
systemctl enable mysqld
vi /etc/my.cnf
添加:
[mysqld]
server-id=1
log-bin=mysql-bin
binlog_format=row
⚠️ server-id 主从不能相同
systemctl restart mysqld
CREATE USER 'repl'@'192.168.1.11' IDENTIFIED BY 'Rep123!';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.11';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
记录:
File: mysql-bin.000001
Position: 154
vi /etc/my.cnf
添加:
[mysqld]
server-id=2
relay-log=relay-bin
systemctl restart mysqld
CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='repl',
MASTER_PASSWORD='Rep123!',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
START SLAVE;
SHOW SLAVE STATUS\G
确认:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
主库:
CREATE DATABASE test_db;
从库:
SHOW DATABASES;
能看到 test_db 即成功 ✅
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload
FLUSH TABLES WITH READ LOCK;
同步完成后再解锁
如果你告诉我:
我可以给你更精确的配置方案(比如 GTID 或已有库的导出方案)。