一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

CentOS7下MySQL主从复制集群的完整搭建过程

时间:2026-05-24 10:00:01 编辑:袖梨 来源:一聚教程网

MySQL主从复制技术能有效解决单点故障问题,本文详解CentOS7环境下搭建高可用集群的全流程,涵盖环境配置、主从同步、故障排查等关键步骤。

1. 集群架构概览

MySQL主从复制采用异步机制,主库通过二进制日志记录写操作,从库则通过I/O线程获取并重放这些日志,最终实现数据同步。

CentOS7搭建MySQL主从复制集群的全过程

架构优势

  1. 实现读写分离,显著提升读操作并发能力
  2. 提供实时数据备份,主库故障时可快速切换
  3. 支持在不影响主库的情况下进行在线备份

2. 环境准备

主机名 IP 地址 角色 操作系统
db-master 192.168.1.10 Master CentOS 7.9
db-slave1 192.168.1.11 Slave CentOS 7.9

注意:所有节点需关闭防火墙或开放 3306 端口,并配置好主机名解析(/etc/hosts)。

3. 安装 MySQL(使用 Yum 源,避免编译)

传统编译方式耗时且易出错,使用官方Yum源能大幅简化安装流程。

3.1 添加 MySQL Yum 源

在两台节点上分别执行:

# 下载 MySQL 8.0 官方源(也可选择 5.7)
wget https://repo.mysql.com//mysql80-community-release-el7-11.noarch.rpm
rpm -ivh mysql80-community-release-el7-11.noarch.rpm
# 更新 yum 缓存
yum clean all
yum makecache

3.2 安装 MySQL Server

yum install -y mysql-community-server

3.3 启动并初始化

# 启动 MySQL 服务
systemctl start mysqld
systemctl enable mysqld
# 查看临时密码(MySQL 8.0 默认生成)
grep 'temporary password' /var/log/mysqld.log

输出示例:2025-05-22T06:35:12.123456Z 1 [Note] A temporary password is generated for root@localhost: >kL9#xW?rQ2i

3.4 安全配置(修改密码)

mysql -uroot -p
# 输入临时密码后执行:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPwd123!';
FLUSH PRIVILEGES;

密码强度要求:至少 8 位,包含大小写字母、数字和特殊字符。

4. 配置主从复制

4.1 主库配置(Master)

编辑 /etc/my.cnf,在 [mysqld] 段添加以下内容:

[mysqld]
# 服务器 ID(主从各节点必须唯一)
server-id = 1
# 开启二进制日志
log-bin = mysql-bin
# 需要复制的数据库(可选,默认所有)
# binlog-do-db = exampledb
# 忽略复制的数据库
# binlog-ignore-db = mysql
# 二进制日志格式(推荐 ROW)
binlog_format = ROW
# 确保行镜像完整
binlog_row_image = FULL
# 过期日志清理(保留 7 天)
expire_logs_days = 7

重启主库:

systemctl restart mysqld

登录主库,创建复制专用用户:

CREATE USER 'replica'@'%' IDENTIFIED BY 'ReplicaPass123!';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
FLUSH PRIVILEGES;

查看主库状态(记录 File 和 Position):

SHOW MASTER STATUS;

输出示例:

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      157 |              |                  |
+------------------+----------+--------------+------------------+

4.2 从库配置(Slave)

编辑 /etc/my.cnf

[mysqld]
server-id = 2
# 开启中继日志
relay-log = mysql-relay-bin
# 只读模式(可选)
read_only = 1
# 禁止从库执行写操作(超级用户除外)
super_read_only = 1

重启从库:

systemctl restart mysqld

在从库上执行同步配置(替换 MASTER_LOG_FILEMASTER_LOG_POS 为主库查询到的值):

CHANGE MASTER TO 
  MASTER_HOST = '192.168.1.10',
  MASTER_USER = 'replica',
  MASTER_PASSWORD = 'ReplicaPass123!',
  MASTER_LOG_FILE = 'mysql-bin.000001',
  MASTER_LOG_POS = 157;

启动从库复制线程:

START SLAVE;

检查同步状态:

SHOW SLAVE STATUSG

重点关注以下两个字段应为 Yes

  1. Slave_IO_Running: Yes
  2. Slave_SQL_Running: Yes

5. 验证主从复制

5.1 在主库创建测试数据

CREATE DATABASE testdb;
USE testdb;
CREATE TABLE t1 (id INT PRIMARY KEY, name VARCHAR(20));
INSERT INTO t1 VALUES (1, 'Master Data');

5.2 在从库查询

USE testdb;
SELECT * FROM t1;

如果能看到相同数据,说明主从同步成功。

6. 常见问题与排障

问题现象

相关文章