MySQL主从复制配置指南:读写分离与高可用搭建

阿麦
阿麦
发布时间:2026-10-16| 6人浏览过
原创

MySQL主从同步是利用二进制日志(binlog)将主机数据实时复制到从机,实现读写分离和热备份。本文将演示如何通过双实例配置(不同端口),创建复制账户并验证主从数据一致性。

为什么选择主从同步?

MySQL主从架构主要解决以下三个问题:

  1. 读写分离:将写操作集中在主机,读操作分散到多个从机。对于"读多写少"的互联网应用,可显著降低服务器并发压力。
  2. 数据热备份:主库运行期间,从库保持数据同步,无需停机即可备份。
  3. 高可用性:当主机宕机时,可快速切换至从库作为新主机,保证业务连续性。

主从同步工作原理

主机(Master)执行写入操作时,会将变更记录在二进制日志文件 (binlog)中。从机(Slave)通过IO线程向主机发起请求,拉取最新的binlog内容,并在本地重放SQL语句,从而保持数据一致。

配置准备:定义主从角色

为演示方便,我们在同一台机器上启动两个不同端口的MySQL实例:3301为主机(Master),3302为从机(Slave)。若在不同物理机上,仅需修改配置文件中的IP地址即可。

第1步:编写主机配置文件

在主机配置文件(通常位于 /etc/my.cnf 或 /etc/mysql/my.cnf)中添加以下内容:

[mysqld]
port=3308           # 实际运行的端口
server_id=111       # 唯一标识符,不可重复
log_bin=binlog      # 开启二进制日志,必须项
read_only=off       # 主机需支持写入
super_read_only=off

第2步:编写从机配置文件

从机用于接收同步数据,建议开启只读模式:

[mysqld]
port=3309           # 从机端口
server_id=2         # 必须与主机不同
log_bin=binlog      # 从机也建议开启binlog,用于级联或中继
read_only=on        # 普通用户只读
super_read_only=on  # 超级用户也只读(防止误操)

主机端操作:建立连接通道

第3步:初始化并进入主机数据库

确保主机服务正常启动后,登录数据库:

第4步:创建专用的复制账号并授权

出于安全考虑,不建议使用root账号进行同步。创建一个专门的用户:

CREATE USER 'repl'@'%' IDENTIFIED BY 'repl_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;

第5步:获取主库状态信息

执行命令查看当前二进制日志的文件名和位置点,这是从机同步的起点:

SHOW MASTER STATUS;

注意:请务必记录输出的 File 名称(如 binlog.00000x)和 Position 数值,后续步骤需要用到。

从机端操作:建立同步关系

第6步:配置从库连接主机

进入从库终端,使用 CHANGE REPLICATION SOURCE TO 命令指定同步源。请替换下方代码中的密码、端口及在第5步记录的日志文件和位置:

CHANGE REPLICATION SOURCE TO 
SOURCE_HOST='127.0.0.1', 
SOURCE_USER='repl', 
SOURCE_PASSWORD='repl', 
SOURCE_PORT=3308,
SOURCE_LOG_FILE='binlog.000006', 
SOURCE_LOG_POS=336;

第7步:启动同步并验证

启动复制线程:

START REPLICA;

检查IO线程和SQL线程的状态,若均为 Yes 则表示成功:

SHOW REPLICA STATUS \G

测试主从同步效果

观察主机已有的数据库列表:

此时从机的数据库列表应与主机一致:

执行插入操作:在主机中新建一个数据库进行测试:

刷新检查:回到从机查看,新的数据库 xxx 应该已经同步出现:

以上就是MySQL主从同步配置的详细内容,更多关于MySQL数据库读写分离与高可用性的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。