MySQL主从复制方式

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL主从复制方式

异步复制


image.png

1、主库不会主动的向从库发送消息
而是等待从库的IO线程建立连接
2、主库创建binlog dump线程
3、把binlog event发送给从库的IO线程

同步过程:处理请求


image.png

主库在执行完自己的事务
记录完binlog之后就会直接返回
不会与客户端确认任何结果

异步:主从复制

后续由binlog dump线程异步的读取binlog
然后发送给从库


同步复制


主库执行一个事务
那么主库必须等待所有的从库全部执行完事务返回commit之后
才能给客户端返回成功

image.png

注:

主库会直接提交事务
而不是等待所有从库返回之后再提交
MySQL只是延迟了对客户端的返回
并没有延后事务的提交

image.png

劣势

如果有某个从库复制线程执行的慢
那么对客户端的响应也会慢很多


半同步复制


半同步相对于同步的区别


image.png

同步需要等待所有的从库commit
而半同步只需要一个从库commit就可以返回了
如果超过默认的时间仍然没有从库commit
就会切换为异步模式再提交
客户端也不会一直去等待了
因为即使后面主库宕机了
也能至少保证有一个从库节点是可以用的
此外还减少了同步时的等待时间


复制中数据的一致性


image.png

主库的binlog dump去读取binlog
然后从库的I/O线程去读取、写入Relay Log
进而从库的SQL线程再读取Relay Log进行重放


异常场景如何保障数据的一致性


  • I/O线程复制到一半突然挂掉
  • 复制到一半主库宕机

从库IO线程主要做2个操作

image.png

  • 同步主库的binlog
  • 往relay log中记录

relay-log.info文件记录2个操作的进度

往relay-log.info文件中记录
当前从库正在复制的binlog
和写入的Relay Log的Pos

relay-log.info文件存在的意义

当从库意外重启之后
就会重新读取文件
从上次复制的地方开始继续复制

relay log存储载体进化史

image.png

5.5及之前只能存放磁盘文件中
比如设置参数sync_relay_log_info=5
即往relay-log.info文件写了5个事务之后
就会把该文件内容刷新到磁盘

如果在刷入磁盘之前 从库挂了

那么就会有一部分事务丢失
重启从库 
就会发现SQL线程实际执行到位置和数据库记录的不一致
数据一致性的问题就这么产生了
比如SQL线程实际执行到pos=100的位置
还有5个事务准备刷入磁盘
但从库挂了
数据库仅记录到pos=95的位置

为了解决这一问题 所以relaylog也可以用table方式记录

image.png

将复制的进度放在系统的mysql.slave_relay_log_info表里去
并且把更新进度、SQL线程执行用户事务绑定成一个事务执行


image.png

即使slave宕机了
也可以通过MySQL内建的崩溃恢复机制来使
实际执行的位置和数据库保存的进度恢复到一致


半同步复制数据一致性问题

image.png

半同步复制
主库会先提交事务
然后等待从库的返回
再将结果返回给客户端
但是如果在主库等待的时候
从库挂了
从库重启之后却没有这个数据

MySQL5.6处理方式

主库先提交事务
等待从库返回结果再通知客户端

MySQL 5.7处理方式

主库先不提交事务
等待某一个从库返回了结果之后
再提交事务
如果从库在没有任何返回的情况下宕机了
master这边也无法提交事务
主从仍然是一致的




相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
mysql主从复制概述和配置
【10月更文挑战第22天】MySQL 主从复制是一种将主服务器的数据复制到一个或多个从服务器的技术,实现读写分离,提高系统性能和可用性。主服务器记录变更日志,从服务器通过 I/O 和 SQL 线程读取并应用这些变更。适用于读写分离、数据备份和恢复、数据分析等场景。配置步骤包括修改配置文件、创建复制用户、配置从服务器连接主服务器并启动复制进程。
|
1月前
|
监控 关系型数据库 MySQL
深入了解MySQL主从复制:构建高效稳定的数据同步架构
深入了解MySQL主从复制:构建高效稳定的数据同步架构
126 1
|
1月前
|
存储 关系型数据库 MySQL
MySQL主从复制原理和使用
本文介绍了MySQL主从复制的基本概念、原理及其实现方法,详细讲解了一主两从的架构设计,以及三种常见的复制模式(全同步、异步、半同步)的特点与适用场景。此外,文章还提供了Spring Boot环境下配置主从复制的具体代码示例,包括数据源配置、上下文切换、路由实现及切面编程等内容,帮助读者理解如何在实际项目中实现数据库的读写分离。
MySQL主从复制原理和使用
|
1月前
|
SQL 关系型数据库 MySQL
Mysql中搭建主从复制原理和配置
主从复制在数据库管理中广泛应用,主要优点包括提高性能、实现高可用性、数据备份及灾难恢复。通过读写分离、从服务器接管、实时备份和地理分布等机制,有效增强系统的稳定性和数据安全性。主从复制涉及I/O线程和SQL线程,前者负责日志传输,后者负责日志应用,确保数据同步。配置过程中需开启二进制日志、设置唯一服务器ID,并创建复制用户,通过CHANGE MASTER TO命令配置从服务器连接主服务器,实现数据同步。实验部分展示了如何在两台CentOS 7服务器上配置MySQL 5.7主从复制,包括关闭防火墙、配置静态IP、设置域名解析、配置主从服务器、启动复制及验证同步效果。
Mysql中搭建主从复制原理和配置
|
2月前
|
存储 关系型数据库 MySQL
分析MySQL主从复制中AUTO_INCREMENT值不一致的问题
通过对 `AUTO_INCREMENT`不一致问题的深入分析和合理应对措施的实施,可以有效地维护MySQL主从复制环境中数据的一致性和完整性,确保数据库系统的稳定性和可靠性。
115 6
|
2月前
|
存储 关系型数据库 MySQL
分析MySQL主从复制中AUTO_INCREMENT值不一致的问题
通过对 `AUTO_INCREMENT`不一致问题的深入分析和合理应对措施的实施,可以有效地维护MySQL主从复制环境中数据的一致性和完整性,确保数据库系统的稳定性和可靠性。
65 1
|
2月前
|
关系型数据库 MySQL Java
MySQL主从复制实现读写分离
MySQL主从复制(二进制日志)、 Sharding-JDBC实现读写分离
MySQL主从复制实现读写分离
|
3月前
|
SQL 关系型数据库 MySQL
说一下MySQL主从复制的原理?
【8月更文挑战第24天】说一下MySQL主从复制的原理?
64 0
|
3月前
|
存储 关系型数据库 MySQL
实战!MySQL主从复制一键搭建脚本分享
实战!MySQL主从复制一键搭建脚本分享
72 2
|
3月前
|
SQL 关系型数据库 MySQL
在Linux中,mysql 如何减少主从复制延迟?
在Linux中,mysql 如何减少主从复制延迟?

热门文章

最新文章

下一篇
无影云桌面