前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL主从复制基础知识

MySQL主从复制基础知识

作者头像
用户5921339
发布于 2025-05-20 08:25:54
发布于 2025-05-20 08:25:54
1220
举报

MySQL复制的概念

MySQL从3.23版本开始提供复制的功能。复制是指将主数据库的DDL和DML操作通过二进制日志传到从服务器上,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。

MySQL支持一台主库同时向多台从库进行复制,从库同时也可以作为其他服务器的主库,实现链状的复制。

MySQL复制的优点主要包括以下3个方面:

  • 如果主库出现问题,可以快速切换到从库提供服务;
  • 可以在从库上执行查询操作,降低主库的访问压力;
  • 可以在从库上执行备份操作,以避免备份期间影响主库服务。

注意:由于MySQL实现的是异步复制,所以在主从库之间存在一定的差距,在从库上进行的查询操作需要考虑到这些数据的差异,一般只有更新不频繁的数据或者对实时性要求不高的数据可以通过从库查询,实时性要求较高的数据仍然需要从主库中获得。

MySQL复制的原理

MySQL复制的原理大致如下:

  1. 首先,MySQL主库在事务提交时会把数据变更作为事件Events记录在二进制日志文件Binlig中,MySQL主库上的sync_binlog参数控制Binlog日志刷新到磁盘。
  2. 主库推送二进制日志文件Binlog中的事件到从库的中继日志Relay Log,之后从库根据中继日志Reylay Log重做数据变更操作,通过逻辑复制一次来达到主库和从库的数据一致。 MySQL通过3个线程来完成主从间的数据复制:其中Binlog Dump线程跑在主库上,I/O线程和SQL线程跑在从库上。当从库启动复制(START SLAVE)时,首先创建I/O线程连接主库,主库随后创建Binlog Dump线程读取数据库事件并发送给I/O线程,I/O线程获取到事件数据后更新到从库的中继日志Relay Log中去,之后从库上的SQL线程读取中继日志Relay Log中更新的数据事件并应用,如下图所示:

MySQL复制流程 可以通过SHOW PROCESSLIST命令在主库上查看Binlog Dump线程,从Binlog Dump线程的状态可以看到,MySQL的复制是主库主动推送日志到从库去的。 同样的,在从库上通过SHOW PROCESSLIST命令可以看到I/O线程和SQL线程,I/O线程等待主库的Binlog Dump线程发送事件并更新到中继日志Relay Log中,SQL线程读取Relay Log并应用变更到数据库。

  1. 三种复制方式 二进制日志文件Binlog的格式有以下3种:
  • Statement:基于SQL语句级别的Binlog,每条修改数据的SQL都会保存在Binlog里。
  1. Row:基于行级别,记录每一行数据的变化,也就是将每行数据的变化都记录在Binlog里面,记录的非常详细,但是并不是记录原始SQL;在复制的时候,并不会因为存储过程或触发器造成主从库数据不一致的问题,但是记录的日志量较Statement格式要大得多。
  2. Mixed:回合Statement和Row模式,默认情况下采用Statement,某些情况下会切换到Row模式,例如SQL中包含与实践、用户相关的函数时。

同时也对应了MySQL复制的3种技术。

  • binlog_format=Statement:基于SQL语句的复制,也叫Statement-Based Replication(SBR)。
  • binlog_format=Row:基于行的复制,也叫Row-Based Replication(RBR)。
  • binlog_format=Mixed:混合复制模式,混合了基于SQL语句的复制和基于行的复制。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT人家 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
mysql主从复制,从搭建到使用
数据库世界里有一种奇妙的舞蹈,它叫做主从复制。就像是一场华丽的芭蕾,主数据库和从数据库在节奏的指挥下,优美地协调着动作,完成着数据的同步传递。而今天,我们将一起走进这场舞台,探索MySQL主从复制技术的神奇之处。无论您是观众还是舞者,这都将是一场精彩绝伦的表演!
一只牛博
2025/05/31
560
mysql主从复制,从搭建到使用
主从复制的原理
主从复制的原理 MySql主库在事务提交时会把数据变更作为事件记录在二进制日志Binlog中; 主库推送二进制日志文件Binlog中的事件到从库的中继日志Relay Log中,之后从库根据中继日志重做数据变更操作,通过逻辑复制来达到主库和从库的数据一致性; MySql通过三个线程来完成主从库间的数据复制,其中Binlog Dump线程跑在主库上,I/O线程和SQL线程跑着从库上; 当在从库上启动复制时,首先创建I/O线程连接主库,主库随后创建Binlog Dump线程读取数据库事件并发送给I/O线程,I/O
宇宙之一粟
2020/10/26
2940
结合实战,我为MySQL主从复制总结了几张图!
作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址:
冰河
2020/12/24
6680
结合实战,我为MySQL主从复制总结了几张图!
MySQL主从复制学习小记
MySQL 主从复制(replication)是一个异步的复制过程。从一个实例(Master)复制到另一个实例(Slave),整个过程需要由 Master 上的 IO 进程 和 Slave 上的 Sql 进程 与 IO 进程 共同完成。 首先 Master 端必须打开 binary log(bin-log),因为整个复制过程实际上就是 Slave 端从 Master 端获取相应的二进制日志,然后在本地完全顺序的执行日志中所记录的各种操作。 原理图如下:
芈亓
2023/09/26
2600
MySQL主从复制学习小记
MySQL主从复制详细介绍
MySQL内建的复制功能是构建基于MySQL的大规模、高性能应用的基础,复制功能的目的是构建高性能的应用,同时也是高可用性、可扩展性、灾难恢复、备份以及数据仓库等工作的基础。比较常见的用途有以下几种:
AsiaYe
2019/11/06
5930
MySQL主从复制详细介绍
高性能Mysql主从架构的复制原理及配置详解
Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。
黄规速
2022/04/14
3510
高性能Mysql主从架构的复制原理及配置详解
MySQL-binlog格式对主从复制的影响&MySQL主从复制的过程
http://www.searchdoc.cn/rdbms/mysql/dev.mysql.com/doc/refman/5.7/en/index.com.coder114.cn.html
小小工匠
2021/08/17
5950
CentOS 7搭建部署MySQL主从复制
1、做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。
用户5766185
2019/07/08
2.7K0
CentOS 7搭建部署MySQL主从复制
MySQL主从复制详解
在MySQL中,主从架构应该是最基础、最常用的一种架构了。后续的读写分离、多活高可用架构等大多都依赖于主从复制。主从复制也是我们学习MySQL过程中必不可少的一部分,关于主从复制的文章有很多,笔者也来凑凑热闹,写写这方面的内容吧,同时分享下自己的经验和方法。
MySQL技术
2020/07/28
4220
MySQL主从复制详解
高性能Mysql主从架构的复制原理及配置详解
Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。
用户7353950
2022/05/11
5250
高性能Mysql主从架构的复制原理及配置详解
MySQL主从复制配置
Mysql中有一种日志叫做bin日志(二进制日志)。这个日志会记录下所有修改了数据库的SQL语句(INSERT,UPDATE,DELETE,ALTER TABLE,GRANT等等)。
Java帮帮
2018/12/24
4860
MySQL主从复制的实现过程
推荐阅读 微服务:springboot系列教程学习 源码:Javaweb练手项目源码下载 调优:十五篇好文回顾 面试笔试:面试笔试整理系列 一、什么是主从复制 将主数据库中的DDL和DML操作通过二进制日志传输到从数据库上,然后将这些日志重新执行(重做);从而使得从数据库的数据与主数据库保持一致。 二、主从复制的作用 1、主数据库出现问题,可以切换到从数据库。 2、可以进行数据库层面的读写分离。 3、可以在从数据库上进行日常备份。 三、复制过程 Binary log:主数据库的二进制日志。 Relay
企鹅号小编
2018/01/15
1K0
MySQL主从复制的实现过程
MySQL 主从复制原理
在实际生产环境中,如果对MySQL数据库的读和写都在一台数据库服务器中操作,无论是在安全性、高可用性,还是高并发等各个方面都是不能满足实际需求的,一般要通过数据库集群的主从复制机制来同步数据,再通过读写分离来提升数据库的并发负载能力
终有救赎
2023/11/11
2590
MySQL 主从复制原理
Mysql主从复制
(1)主从服务器操作系统版本和位数必须一致; (2)主节点(Master)和从节点(Slave)数据库版本必须一致; (3)主节点(Master)和从节点(Slave)数据库中的数据必须一致; (4)主节点(Master)需要开启二进制日志; (5)主节点(Master)和从节点(Slave)的 server-id 在局域网内必须唯一。
码客说
2022/12/05
1.3K0
Mysql主从复制
MySql主从复制,从原理到实践!
主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从数据库上,然后在从数据库上对这些日志进行重新执行,从而使从数据库和主数据库的数据保持一致。
macrozheng
2020/01/16
5420
MySql主从复制,从原理到实践!
docker 搭建mysql主从复制
sudo docker run -p 3307:3306 --name main_mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
用户10125653
2022/11/10
5760
docker 搭建mysql主从复制
使用Xtrabackup对MySQL做主从复制
mysqldump对于导出10G以下的数据库或几个表,还是适用的,而且更快捷。一旦数据量达到100-500G,无论是对原库的压力还是导出的性能,mysqldump就力不从心了。Percona-Xtrabackup备份工具,是实现MySQL在线热备工作的不二选择,可进行全量、增量、单表备份和还原。(但当数据量更大时,可能需要考虑分库分表,或使用 LVM 快照来加快备份速度了)。 2.2版本xtrabackup能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份,innobackupex通过perl封装了一层xtrabackup,对MyISAM的备份通过加表读锁的方式实现。2.3版本xtrabackup命令直接支持MyISAM引擎。
阿dai学长
2019/04/03
2.4K0
高可用架构-- MySQL主从复制的配置
环境 操作系统:CentOS-6.6-x86_64-bin-DVD1.iso MySQL版本:mysql-5.6.26.tar.gz 主节点IP:192.168.1.205 主机名:edu-mysql-01 从节点IP:192.168.1.206 主机名:edu-mysql-02 主机配置:4核CPU、4G内存 依赖课程 《高可用架构篇--第13节--MySQL源码编译安装(CentOS-6.6+MySQL-5.6)》 MySQL主从复制官方文档 http://dev.mysql.com/doc/refma
思梦php
2018/03/09
1.7K0
高可用架构-- MySQL主从复制的配置
MySQL主从复制
MySQL复制功能提供分担读负载。 基于二进制日志的复制是异步的,那么复制有什么好处? 1.实现在不同服务器上的数据分布,利用二进制日志增量进行,不需要太多带宽,但是使用基于行的复制在进行大批量的更改时,会对带宽带来一定的压力。特别是跨IDC环境下进行复制,应该分批进行。 2.实现数据读取的负载均衡。可以通过DNS轮询的方式把程序的读连接分配到不同的备份数据库中。还有可以通过LVS+Keepalived等等。 3.增强了数据安全性,利用备库的备份来减少主库负载,还可以避免单点故障。值得注意的是,复制并不能替代备份。 4.实现数据库在线升级。
用户2032165
2018/12/04
1.3K0
MySQL主从复制
Mysql主从复制
Mysql主从复制也可以称为Mysql主从同步,它是构建数据库高可用集群架构的基础。它通过将一台主机的数据复制到其他一台或者多台主机上,并重新应用日志(realy log)中的SQL语句来实现复制功能。Mysql支持单向,双向,链式级联,异步复制,复制过程中一台服务器充当主库(master),而一个或者多个服务器充当从库(slave)
mikelLam
2022/10/31
1.4K0
相关推荐
mysql主从复制,从搭建到使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档