温馨提示×

centos mysql主从怎么搭建

小樊
33
2026-10-23 07:32:10
栏目: 云计算

下面给你一个CentOS 下 MySQL 主从复制(Master–Slave)的标准搭建流程(以 CentOS 7 + MySQL 5.7/8.0 为例,步骤通用)。


一、环境准备

假设:

  • 主库(Master):192.168.1.10
  • 从库(Slave):192.168.1.11
  • MySQL 版本一致(建议相同)

两台机器都执行:

# 安装 MySQL(以 MySQL 8.0 为例)
yum install -y mysql-server
systemctl start mysqld
systemctl enable mysqld

二、主库(Master)配置

1. 修改配置文件

vi /etc/my.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 'Rep123!';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.11';
FLUSH PRIVILEGES;

4. 查看主库状态

SHOW MASTER STATUS;

记录:

File: mysql-bin.000001
Position: 154

三、从库(Slave)配置

1. 修改配置文件

vi /etc/my.cnf

添加:

[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='Rep123!',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;

4. 启动从库

START SLAVE;

5. 查看状态

SHOW SLAVE STATUS\G

确认:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

四、测试主从

主库:

CREATE DATABASE test_db;

从库:

SHOW DATABASES;

能看到 test_db 即成功 ✅


五、常见问题

1. Slave_IO_Running: Connecting

  • 防火墙没开 3306
  • 主库 IP 错
  • 复制账号权限不对
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload

2. 数据不一致

  • 搭建前主库最好锁表或停写
FLUSH TABLES WITH READ LOCK;

同步完成后再解锁


六、可选增强

  • GTID 模式(推荐)
  • 半同步复制
  • 双主 / 多从
  • 读写分离(MyCat / ProxySQL)

如果你告诉我:

  • CentOS 版本
  • MySQL 版本
  • 是否已有数据

我可以给你更精确的配置方案(比如 GTID 或已有库的导出方案)。

0 踩