CentOS7搭建MySQL主从复制集群教程

作者:技术拾光

时间:2026-05-22

浏览:593

在CentOS7上搭建MySQL主从复制集群,可解决单点故障与性能瓶颈。通过配置主库二进制日志和从库中继日志,实现数据异步同步。该架构支持读写分离以提升并发能力,并提供实时热备与无感备份,从而增强系统可用性与可靠性。

文章目录

在生产环境中,依赖单一MySQL实例存在单点故障和性能瓶颈的风险。本文将详细介绍如何搭建标准的MySQL主从复制集群,为数据提供冗余保障,并通过读写分离提升系统整体承载能力。

以下将以CentOS 7为例,从环境准备到最终验证,逐步演示完整的搭建流程。文中配有清晰的流程图和操作示意图,帮助您快速理解并部署这套高可用架构。

MySQL主从复制集群架构概览

MySQL主从复制是一种异步数据同步机制。其核心原理是:主库将所有写操作记录到二进制日志中;从库通过I/O线程拉取这些日志,并在本地重放,从而实现数据最终一致。

CentOS7搭建MySQL主从复制集群教程

该架构主要优势包括:

  • 读写分离:将读请求分流至从库,显著提升系统读并发能力。
  • 实时热备:从库实时同步数据,主库故障时可快速切换,保障业务连续性。
  • 无感备份:可在从库执行数据备份操作,不影响主库服务。

搭建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主从集群搭建操作流程图

CentOS7搭建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的输出,防患于未然。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章