温馨提示×

centos mysql如何主从配置

小樊
40
2026-10-14 13:07:13
栏目: 云计算

下面以 CentOS 7/8 + MySQL 5.7/8.0 为例,说明 MySQL 主从(Master-Slave)复制 的基本配置步骤。


一、环境准备

  • 主库(Master):192.168.1.10
  • 从库(Slave):192.168.1.11
  • 两台服务器均已安装 MySQL
  • 防火墙放行 3306 端口

二、主库(Master)配置

1. 修改 MySQL 配置文件

编辑 /etc/my.cnf 或 /etc/my.cnf.d/mysql-server.cnf

[mysqld]
server-id = 1
log-bin = mysql-bin
binlog_format = ROW

server-id 必须唯一

2. 重启 MySQL

systemctl restart mysqld

3. 创建复制账号

CREATE USER 'repl'@'192.168.1.11' IDENTIFIED BY 'Password123!';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.11';
FLUSH PRIVILEGES;

4. 查看主库状态

SHOW MASTER STATUS;

记录以下信息(示例):

File: mysql-bin.000001
Position: 154

三、从库(Slave)配置

1. 修改配置文件

[mysqld]
server-id = 2
relay-log = relay-bin

2. 重启 MySQL

systemctl restart mysqld

3. 配置主库信息

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;

4. 启动复制

START SLAVE;

5. 查看复制状态

SHOW SLAVE STATUS\G

确保以下两项为 Yes:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

四、验证主从同步

在主库创建测试数据库:

CREATE DATABASE test_db;

在从库查看:

SHOW DATABASES;

若能看到 test_db,说明同步成功。


五、常见问题

1. 防火墙问题

firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload

2. UUID 冲突(克隆环境)

删除从库 auto.cnf 后重启:

rm -f /var/lib/mysql/auto.cnf
systemctl restart mysqld

3. 不同版本注意

  • MySQL 8.0 默认使用 caching_sha2_password
  • 建议使用 mysql_native_password 或正确配置 SSL

六、可选优化

  • 只同步部分库:
binlog-do-db=test_db
  • 半同步复制
  • GTID 模式(推荐新项目)

如果你需要 GTID 主从、一主多从 或 Docker 环境配置,可以继续问我。

0 踩