导读:本期聚焦于小伙伴创作的《MySQL主从同步是什么原理怎么配置如何解决延迟问题》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《MySQL主从同步是什么原理怎么配置如何解决延迟问题》有用,将其分享出去将是对创作者最好的鼓励。

MySQL主从同步是数据库架构中常用的高可用与读写分离实现方案,通过将主库的更新操作同步到从库,实现数据冗余备份、读写请求分流,提升整体系统的稳定性和处理能力。

MySQL主从同步是什么原理怎么配置如何解决延迟问题

MySQL主从同步核心原理

主从同步的核心依赖三个线程和两类日志文件,整体流程可以分为三个步骤:

  • 主库将所有的数据变更操作记录到binlog(二进制日志)中,binlog是主从同步的数据源
  • 从库的IO线程连接主库,读取主库的binlog内容,将其写入到从库本地的relay_log(中继日志)中
  • 从库的SQL线程读取relay_log中的内容,按照顺序执行这些SQL操作,完成数据同步

整个过程中,主库只负责写入binlog,从库的两个线程分别负责拉取日志和执行日志,两者互不干扰,这也是主从架构可以实现读写分离的基础。

MySQL主从同步配置步骤

1. 主库配置

首先修改主库的配置文件,开启binlog并设置唯一的服务ID:

[mysqld]
# 开启binlog,指定日志文件前缀
log-bin=mysql-bin
# 服务唯一ID,主从库ID不能重复
server-id=1
# 指定需要同步的数据库,不配置则同步所有库
binlog-do-db=test_db
# 指定不需要同步的数据库
binlog-ignore-db=mysql

重启主库服务后,登录主库执行以下命令,创建用于从库同步的账号并授权:

-- 创建同步账号,密码为sync_pass
CREATE USER 'sync_user'@'192.168.0.%' IDENTIFIED BY 'sync_pass';
-- 授予同步权限
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'sync_user'@'192.168.0.%';
-- 刷新权限
FLUSH PRIVILEGES;
-- 查看主库binlog状态,记录File和Position值
SHOW MASTER STATUS;

执行SHOW MASTER STATUS后会得到类似如下的结果,后续从库配置需要用到FilePosition的值:

FilePositionBinlog_Do_DBBinlog_Ignore_DB
mysql-bin.000001154test_dbmysql

2. 从库配置

修改从库的配置文件,设置唯一的服务ID:

[mysqld]
# 从库服务唯一ID,不能与主库和其他从库重复
server-id=2
# 开启中继日志
relay-log=relay-bin
# 从库只读,避免手动修改数据导致主从不一致
read-only=1

重启从库服务后,登录从库执行以下命令配置主从同步关系:

-- 配置主库连接信息,替换为实际的主库IP、同步账号、密码、主库binlog文件名和位置
CHANGE MASTER TO
MASTER_HOST='192.168.0.10',
MASTER_USER='sync_user',
MASTER_PASSWORD='sync_pass',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
-- 启动从库同步线程
START SLAVE;
-- 查看从库同步状态
SHOW SLAVE STATUSG

查看SHOW SLAVE STATUS的结果时,需要确认Slave_IO_RunningSlave_SQL_Running两个字段的值都为Yes,如果是则说明主从同步配置成功。

主从延迟的原因与解决方案

主从延迟常见原因

  • 主库写入压力大,生成的binlog速度超过从库IO线程拉取的速度
  • 从库的SQL线程是单线程执行relay_log中的操作,当主库有大事务或者批量操作时,从库执行速度跟不上
  • 从库硬件配置低于主库,CPU、内存、磁盘IO性能不足,导致日志执行慢
  • 从库上运行了其他耗时的查询或者业务操作,占用了SQL线程的执行资源
  • 网络延迟导致从库IO线程拉取binlog的速度变慢

主从延迟解决方案

针对不同的延迟原因,可以采用对应的优化方案:

  • 如果是单线程SQL执行慢的问题,可以开启MySQL的多线程复制,MySQL 5.7及以上版本支持基于逻辑时钟的多线程复制,配置如下:
[mysqld]
# 开启多线程复制,工作线程数为4
slave_parallel_workers=4
# 基于逻辑时钟的并行复制方式
slave_parallel_type=LOGICAL_CLOCK
  • 优化主库的大事务,将大批量操作拆分为小批次执行,避免单个事务产生大量binlog
  • 提升从库硬件配置,尤其是磁盘IO性能,建议使用SSD磁盘
  • 避免从库执行耗时的查询操作,读写分离时尽量将耗时查询路由到专门的分析库,不要占用同步从库的资源
  • 优化主从之间的网络环境,减少网络延迟
  • 如果是业务对延迟不敏感,可以在从库查询时增加延迟判断,当延迟超过阈值时暂时将请求路由回主库

如果主从延迟已经产生,可以等待从库自动追平数据,或者如果是测试环境可以重新配置主从同步,重置从库的同步状态后重新指定主库的binlog位置。

MySQL主从同步binlogrelay_log主从延迟修改时间:2026-07-22 01:21:30

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。