下面以 CentOS 7/8 + MySQL 5.7/8.0 为例,说明 MySQL 主从(Master-Slave)复制 的基本配置步骤。
编辑 /etc/my.cnf 或 /etc/my.cnf.d/mysql-server.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 'Password123!';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.11';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
记录以下信息(示例):
File: mysql-bin.000001
Position: 154
[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='Password123!',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
START SLAVE;
SHOW SLAVE STATUS\G
确保以下两项为 Yes:
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
删除从库 auto.cnf 后重启:
rm -f /var/lib/mysql/auto.cnf
systemctl restart mysqld
caching_sha2_passwordmysql_native_password 或正确配置 SSLbinlog-do-db=test_db
如果你需要 GTID 主从、一主多从 或 Docker 环境配置,可以继续问我。