MySQL主从复制方式

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: 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这边也无法提交事务
主从仍然是一致的




相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
SQL 关系型数据库 MySQL
mysql主从复制概述和配置
【10月更文挑战第22天】MySQL 主从复制是一种将主服务器的数据复制到一个或多个从服务器的技术,实现读写分离,提高系统性能和可用性。主服务器记录变更日志,从服务器通过 I/O 和 SQL 线程读取并应用这些变更。适用于读写分离、数据备份和恢复、数据分析等场景。配置步骤包括修改配置文件、创建复制用户、配置从服务器连接主服务器并启动复制进程。
456 1
|
监控 关系型数据库 MySQL
深入了解MySQL主从复制:构建高效稳定的数据同步架构
深入了解MySQL主从复制:构建高效稳定的数据同步架构
454 1
|
SQL 网络协议 关系型数据库
MySQL 主从复制
主从复制是 MySQL 实现数据冗余和高可用性的关键技术。主库通过 binlog 记录操作,从库异步获取并回放这些日志,确保数据一致性。搭建主从复制需满足:多个数据库实例、主库开启 binlog、不同 server_id、创建复制用户、从库恢复主库数据、配置复制信息并开启复制线程。通过 `change master to` 和 `start slave` 命令启动复制,使用 `show slave status` 检查同步状态。常见问题包括 IO 和 SQL 线程故障,可通过重置和重新配置解决。延时原因涉及主库写入延迟、DUMP 线程性能及从库 SQL 线程串行执行等,需优化配置或启用并行处理
316 40
|
关系型数据库 MySQL 数据库
RDS用多了,你还知道MySQL主从复制底层原理和实现方案吗?
随着数据量增长和业务扩展,单个数据库难以满足需求,需调整为集群模式以实现负载均衡和读写分离。MySQL主从复制是常见的高可用架构,通过binlog日志同步数据,确保主从数据一致性。本文详细介绍MySQL主从复制原理及配置步骤,包括一主二从集群的搭建过程,帮助读者实现稳定可靠的数据库高可用架构。
785 9
RDS用多了,你还知道MySQL主从复制底层原理和实现方案吗?
|
SQL 存储 关系型数据库
MySQL主从复制 —— 作用、原理、数据一致性,异步复制、半同步复制、组复制
MySQL主从复制 作用、原理—主库线程、I/O线程、SQL线程;主从同步要求,主从延迟原因及解决方案;数据一致性,异步复制、半同步复制、组复制
1506 11
|
关系型数据库 MySQL 数据库
docker高级篇(大厂进阶):安装mysql主从复制
docker高级篇(大厂进阶):安装mysql主从复制
346 24
|
NoSQL 关系型数据库 Redis
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
385 14
|
存储 关系型数据库 MySQL
MySQL主从复制原理和使用
本文介绍了MySQL主从复制的基本概念、原理及其实现方法,详细讲解了一主两从的架构设计,以及三种常见的复制模式(全同步、异步、半同步)的特点与适用场景。此外,文章还提供了Spring Boot环境下配置主从复制的具体代码示例,包括数据源配置、上下文切换、路由实现及切面编程等内容,帮助读者理解如何在实际项目中实现数据库的读写分离。
1645 1
MySQL主从复制原理和使用
|
SQL 关系型数据库 MySQL
Mysql中搭建主从复制原理和配置
主从复制在数据库管理中广泛应用,主要优点包括提高性能、实现高可用性、数据备份及灾难恢复。通过读写分离、从服务器接管、实时备份和地理分布等机制,有效增强系统的稳定性和数据安全性。主从复制涉及I/O线程和SQL线程,前者负责日志传输,后者负责日志应用,确保数据同步。配置过程中需开启二进制日志、设置唯一服务器ID,并创建复制用户,通过CHANGE MASTER TO命令配置从服务器连接主服务器,实现数据同步。实验部分展示了如何在两台CentOS 7服务器上配置MySQL 5.7主从复制,包括关闭防火墙、配置静态IP、设置域名解析、配置主从服务器、启动复制及验证同步效果。
477 0
Mysql中搭建主从复制原理和配置
|
存储 关系型数据库 MySQL
分析MySQL主从复制中AUTO_INCREMENT值不一致的问题
通过对 `AUTO_INCREMENT`不一致问题的深入分析和合理应对措施的实施,可以有效地维护MySQL主从复制环境中数据的一致性和完整性,确保数据库系统的稳定性和可靠性。
331 6

推荐镜像

更多