什么是mysql主从复制

来源:语言推理作者:又改需求头衔:程序员
导读:本期聚焦于小伙伴创作的《什么是mysql主从复制》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《什么是mysql主从复制》有用,将其分享出去将是对创作者最好的鼓励。

mysql主从复制是指将一台mysql数据库服务器(主库)的数据变更同步到多台mysql数据库服务器(从库)的技术,是构建高可用、高性能数据库架构的基础方案之一。

什么是mysql主从复制

mysql主从复制的核心原理

主从复制的实现依赖三个核心线程和两个关键日志文件,整体流程可以分为三个步骤:

  • 主库将数据的增删改操作记录到二进制日志(binlog)中
  • 从库的I/O线程连接主库,读取主库的binlog内容并写入到自身的中继日志(relay log)中
  • 从库的SQL线程读取中继日志中的内容,逐条执行SQL语句完成数据同步

mysql主从复制的配置步骤

1. 主库配置

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

[mysqld]
# 开启二进制日志
log-bin=mysql-bin
# 设置服务器唯一ID,取值范围1-231-1
server-id=1
# 指定需要同步的数据库,不配置则同步所有数据库
binlog-do-db=test_db
# 指定不需要同步的数据库
binlog-ignore-db=mysql

重启主库后,创建用于从库同步的账号并授权:

-- 创建同步账号,允许从库IP连接
CREATE USER 'slave_user'@'192.168.0.%' IDENTIFIED BY 'slave_password';
-- 授予复制权限
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave_user'@'192.168.0.%';
-- 刷新权限
FLUSH PRIVILEGES;
-- 查看主库状态,记录File和Position值
SHOW MASTER STATUS;

2. 从库配置

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

[mysqld]
# 设置从库唯一服务器ID,不能和主库及其他从库重复
server-id=2
# 开启中继日志
relay-log=mysql-relay

重启从库后,配置主库连接信息并启动同步:

-- 配置主库连接信息,替换对应的主库IP、端口、账号、密码、binlog文件和位置
CHANGE MASTER TO
MASTER_HOST='192.168.0.10',
MASTER_PORT=3306,
MASTER_USER='slave_user',
MASTER_PASSWORD='slave_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;

-- 启动从库同步线程
START SLAVE;

-- 查看从库同步状态
SHOW SLAVE STATUSG

如果Slave_IO_RunningSlave_SQL_Running两个字段的值都是Yes,说明主从复制配置成功。

mysql主从复制的常见类型

根据同步粒度和延迟情况,主从复制可以分为以下几种类型:

复制类型说明适用场景
异步复制主库写入binlog后立即返回结果,不等待从库同步确认,存在数据丢失风险对数据一致性要求不高的读多写少场景
半同步复制主库等待至少一个从库接收binlog并写入relay log后才返回结果,降低数据丢失风险对数据一致性有一定要求的核心业务场景
全同步复制主库等待所有从库都完成数据同步后才返回结果,性能损耗较大对数据一致性要求极高的金融类场景

mysql主从复制的实际应用优势

  • 提升读写性能:主库负责写操作,从库负责读操作,实现读写分离,减轻主库压力
  • 数据备份容灾:从库可以作为数据备份节点,主库故障时可快速切换从库提供服务
  • 负载均衡:多个从库可以分摊读请求压力,应对高并发访问场景
  • 数据分析隔离:可以在从库上执行复杂的数据分析查询,避免影响主库的业务性能

常见问题及排查

如果主从同步出现延迟或中断,可以先查看从库的同步状态,根据错误信息排查:

  • 如果是Slave_IO_RunningConnecting,检查主库IP、端口、账号密码是否正确,网络是否通畅
  • 如果是Slave_SQL_RunningNo,检查从库是否执行了和主库冲突的写操作,或者binlog文件位置是否匹配
  • 同步延迟较大时,可以检查从库硬件性能、是否有大事务执行,或者调整主库的binlog刷盘策略

mysql主从复制mysql数据库同步主从架构修改时间:2026-07-18 16:24:25

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