在CentOS7上搭建MySQL主从复制集群,可解决单点故障与性能瓶颈。通过配置主库二进制日志和从库中继日志,实现数据异步同步。该架构支持读写分离以提升并发能力,并提供实时热备与无感备份,从而增强系统可用性与可靠性。
CentOS7搭建MySQL主从复制集群教程
时间:2026-05-22
浏览:593
文章目录
在生产环境中,依赖单一MySQL实例存在单点故障和性能瓶颈的风险。本文将详细介绍如何搭建标准的MySQL主从复制集群,为数据提供冗余保障,并通过读写分离提升系统整体承载能力。
以下将以CentOS 7为例,从环境准备到最终验证,逐步演示完整的搭建流程。文中配有清晰的流程图和操作示意图,帮助您快速理解并部署这套高可用架构。
MySQL主从复制集群架构概览
MySQL主从复制是一种异步数据同步机制。其核心原理是:主库将所有写操作记录到二进制日志中;从库通过I/O线程拉取这些日志,并在本地重放,从而实现数据最终一致。

该架构主要优势包括:
- 读写分离:将读请求分流至从库,显著提升系统读并发能力。
- 实时热备:从库实时同步数据,主库故障时可快速切换,保障业务连续性。
- 无感备份:可在从库执行数据备份操作,不影响主库服务。
搭建MySQL主从集群的环境准备
首先需要准备两台服务器。具体规划如下:
| 主机名 | IP 地址 | 角色 | 操作系统 |
|---|---|---|---|
| db-master | 192.168.1.10 | Master | CentOS 7.9 |
| db-sla ve1 | 192.168.1.11 | Sla ve | CentOS 7.9 |
准备工作提示:确保两台服务器网络互通,关闭防火墙或开放3306端口。建议在
/etc/hosts文件中配置主机名解析,便于后续操作。
在CentOS 7上安装MySQL数据库
相较于耗时的源码编译安装,推荐使用MySQL官方Yum源进行安装,该方法更加高效便捷。
添加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
安装MySQL Server
yum install -y mysql-community-server
启动MySQL服务并初始化
# 启动 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#xWrQ2i
安全配置与修改密码
mysql -uroot -p # 输入临时密码后执行: ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPwd123!'; FLUSH PRIVILEGES;
注意:MySQL 8.0有较强的密码策略,新密码需至少8位,并包含大小写字母、数字和特殊字符。
配置MySQL主从复制步骤详解
完成安装后,即可开始配置主从关系。
主库(Master)配置方法
编辑主库的MySQL配置文件/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
保存后重启MySQL服务使配置生效:
systemctl restart mysqld
登录主库MySQL,创建用于数据复制的账号:
CREATE USER 'replica'@'%' IDENTIFIED BY 'ReplicaPass123!'; GRANT REPLICATION SLA VE ON *.* TO 'replica'@'%'; FLUSH PRIVILEGES;
执行关键命令查看主库状态,并记录返回的File和Position值,用于从库配置:
SHOW MASTER STATUS;
命令输出示例如下:
+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 157 | | | +------------------+----------+--------------+------------------+
从库(Sla ve)配置方法
编辑从库的/etc/my.cnf文件:
[mysqld] server-id = 2 # 注意,ID不能与主库相同 # 开启中继日志 relay-log = mysql-relay-bin # 设置为只读模式,防止误操作写入数据(超级用户除外) read_only = 1 super_read_only = 1
保存并重启从库的MySQL服务:
systemctl restart mysqld
登录从库MySQL,执行命令指定主库信息。需使用主库记下的MASTER_LOG_FILE和MASTER_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 SLA VE;
检查从库同步状态,这是验证配置成功的关键:
SHOW SLA VE STATUS\G
在返回信息中,重点关注以下两个字段,若均显示为Yes,则表明主从复制链路已成功建立。
Sla ve_IO_Running: Yes(I/O线程运行正常)Sla ve_SQL_Running: Yes(SQL线程运行正常)
验证MySQL主从复制效果
通过简单测试验证主从同步是否生效。
在主库创建测试数据库和表,并插入数据:
CREATE DATABASE testdb; USE testdb; CREATE TABLE t1 (id INT PRIMARY KEY, name VARCHAR(20)); INSERT INTO t1 VALUES (1, 'Master Data');
随后在从库进行查询:
USE testdb; SELECT * FROM t1;
若能在从库查询到主库插入的‘Master Data’记录,则证明MySQL主从集群运行正常。
MySQL主从复制常见问题与排障指南
搭建过程中可能遇到问题,以下是一些常见现象及排查思路:
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
Sla ve_IO_Running: Connecting |
网络不通 / 复制用户权限错误 | 检查防火墙、3306端口、以及主库上replica用户的权限和密码。 |
Sla ve_SQL_Running: No |
SQL语句执行冲突(如主键重复) | 查看SHOW SLA VE STATUS\G结果中的Last_Error字段,根据具体错误跳过或修复数据。 |
| 主从延迟大 | 从库硬件性能差 / 主库存在大事务 | 考虑升级从库硬件,或在从库配置文件中开启并行复制(设置sla ve_parallel_workers)。 |
对于SQL线程错误,有时可能需要跳过特定事件(请谨慎使用,确保理解数据影响):
STOP SLA VE; SET GLOBAL SQL_SLA VE_SKIP_COUNTER = 1; START SLA VE;
MySQL主从集群搭建操作流程图

高可用延伸:超越基础主从的架构
基础主从复制实现了数据同步,但故障转移通常需人工干预。对于要求更高的生产环境,可考虑以下进阶方案:
- MHA(Master High A vailability):成熟的开源工具,能自动监控主库状态并在故障时完成切换。
- MySQL Group Replication(MGR):MySQL官方提供的原生集群方案,基于Paxos协议,提供强一致性和自动故障转移。
- MySQL InnoDB Cluster:完整的官方高可用解决方案,结合了MGR、MySQL Shell和MySQL Router,提供开箱即用的集群管理能力。
CentOS 7搭建MySQL主从集群总结
借助官方Yum源,在CentOS 7上搭建MySQL主从集群相对简单。该架构是构建高可用数据库系统的基石,能有效实现读写分离和数据热备,为业务系统提供更稳定可靠的数据层支持。
最后,回顾几个确保部署成功的关键点:
- 理解核心机制:二进制日志负责记录,中继日志负责传递和应用。
- 配置唯一标识:集群内每个节点的
server-id必须唯一。 - 保护从库数据:为从库设置
read_only,避免意外写入导致数据不一致。 - 养成监控习惯:定期检查
SHOW SLA VE STATUS的输出,防患于未然。
实用工具推荐
绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
选择画质和输出格式,预览压缩前后的大小。