电话:13485538018
关闭
您当前的位置:首页 > 职场资讯 > 面试秘籍

MySQL主从同步:为何面试不问原理改问数据一致性问题?

来源:网络整理 时间:2025-10-21 作者:佚名 浏览量:

MySQL 领域里,主从同步属于 MySQL 集群方案范畴,它也是其中实现难度处于最低水平的那一种 。

可是,如今的面试,不再询问MySQL主从同步原理了,而是转而开始询问主从同步如何确保数据一致性这一问题了。

所以,今天就给大家安排上了。

1.什么是数据一致性?

在一个系统里,数据一致性所指的是,数据于不同的部分之间,于不同的时间点之上,以及于不同的操作之间,维持一致的状态 。

数据一致性通常体现在以下几点:

数据一致性方面,要确保数据完整性,这意味着数据于存储时以及传输期间,不存在被损坏或者丢失的情况,这涵盖数据准确性健全性以及有效性,比如在电商系统当中,商品库存数量理应是准确无误的,要是有用户购买了一件商品,那么库存数量应当相应地予以减少,要是库存数量显示并非正确的,便会致使数据不一致。事务一致性方面,于数据库系统里,事务是一组操作的集合,这些操作要么全部成功执行,要么全部发生回滚。 多副本一致性:于分布式系统中,数据通常会存储于多个副本内,用以提升系统的可用性以及性能。多副本的这种一致性,确保着不同副本间的数据维持一致,比如说,于一个云存储服务之内,用户上传了个文件,此文件会被搁置在多个数据中心的服务器上,要是用户针对文件做了修改,那么云存储服务理应确保全部副本都被予以更新,以此来保证用户于任意地方去访问文件之际都能够瞧见最新的版本,时间一致性,其要求数据在不一样的时间点上维持一致,这涵盖了数据的时效性以及顺序性,就像在一个股票交易系统当中,交易订单的处理应当依照时间顺序来实施。如果订单的处理顺序出现错误,就会导致交易数据不一致。

注意,存在这样一个情况,在同一时刻,有多个副本,这里我们讨论的关键要点,在于数据于此的一致性问题。

2.主从复制

MySQL主从复制是一种机制,这种机制把MySQL主数据库的数据,同步到其他的数据库,进而实现数据的冗余备份,还有负载均衡,且这种负荷均衡这一情况,平行扩展了数据库的查询能力。

主从数据库基本概念:

主数据库即 Master,它是数据的主要源头,负责接纳以及处理全部的写操作例如 INSERT、UPDATE、DELETE 等,它把所有写操作记录于二进制日志也就是 Binary Log 中,这些日志记载着数据库的变更历程。从数据库也就是 Slave,它借助复制主数据库的二进制日志来实现数据同步,它能够处理读操作即 SELECT,进而分担主数据库的负荷。

MySQL 主从复制流程如下:

它的主要执行流程如下:

当主数据库接收到一个写操作,诸如 INSERT、UPDATE、DELETE 这类操作时,会把这个操作记录到二进制日志即 Binary Log 中,会按照顺序把数据修改的操作记录下来。从数据库的 IO 线程会自动去连接主服务,会从二进制中读取同步数据,会记录到中继日志也就是 Relay Log 中。从数据库的 SQL 线程会定期从中继日志中获取同步数据,会写入到从数据库里。MySQL 主从同步类型

MySQL 主从同步方式有以下三种:

3.1 异步复制

MySQL主从复制原理详解_MySQL主从同步数据一致性保证_mysql主从复制原理面试

异步复制,有着默认的主从同步复制模式,在此模式里,主服务器提交事务后,马上返回客户端,并不用等待从服务器,确认是否成功接收,以及是否成功应用了事务,而从服务器会在后台,立刻接收并把事务日志应用起来 。

异步同步流程如下(红色部分为主要执行流程):

从优点性能来看,在进入异步复制模式的场景当中的时候,主服务器所执行地写入相应操作,却并不会由于存在等待从服务器前来做出确认这样的情况,从而导致自我被阻塞,所以说,能够达成提供更高写入吞吐量这样的结果。就简单层面而言,配置以及管理这两个方面,相对来讲是比较简单的。谈到成本,并不在需要另外再去提供所需要的硬件资源进行支持,原因在于,并不需要依靠高速的网络连接才能够保障同步。缺点

主服务器出现故障时,会有这样一种状况,即数据存在未完全同步至从服务器的可能性,进而致使数据丢失或者出现不一致的情形,这就是数据丢失问题 。

3.2 同步复制

同步复制是很严格的复制模式,主服务器提交事务前,要等待所有从服务器都确认接收到且应用了事务,之后主服务器才会给客户端返回事务提交成功的消息。

同步复制执行流程如下:

“这其中存在性能开销大的相关问题,主库需要等待所有从库的响应,这种行为会致使事务提交的延迟有所增加,特别是当从库数量较多或者网络状况不好时,性能下降颇为明显。”存在单点故障风险,若有一个从库发生故障,情况就是,可能使得整个系统出现阻塞,这是由于主库要等待所有从库进行确认 。3.3 为半同步复制 。

半同步复制是一种折衷方案,它将异步复制的高性能与同步复制的高可靠性相结合,在半同步复制模式里,主服务器在提交一个事务以前,要等待起码一个从服务器确认收到该事务的日志,不过不需要等待从服务器完成应用。

半同步执行流程如下:

优点是数据一致性方面表现较好,相较于异步复制而言,能提供更为出色的数据一致性保障,性能影响较小,相较于同步复制,半同步复制的性能开销不大,原因在于仅仅只需等待一个从库的确认,灵活性较高,能够依据需求去调整等待的从服务器数量,以此来契合不同的性能以及可靠性需求,缺点是存在性能波动风险,在网络延迟比较高或者从库负载比较大的情形下,有可能致使主库等待从库确认的时间变得过长,进而对性能产生影响,配置复杂,相较于异步复制,配置和管理要略微复杂一点。4.小结

所以,假设要确保数据全然一致性就得运用同步复制,然而这样会使某种性能有所牺牲;故而在业务系统运行环境当中我们能够运用半同步以保证相对良好的数据一致性就行;而默认的异步方式达成极为便捷、性能表现超优,不过或许会存在数据不一致的潜在风险,尽管出现的可能性微乎其微(业务系统运行环境同样也能够运用)。

课后思考

如何实现MySQL半同步复制和同步复制呢?

本文已收录到我的面试小站

www.javacn.site

(https://www.javacn.site),其所涵盖的内容含有,Redis模块,JVM模块,并发现有并发模块,MySQL模块,及Spring模块,Spring MVC模块,Spring Boot模块,Spring Cloud模块,MyBatis模块,设计模式模块,消息队列模块等 。

微信扫一扫分享资讯
客服服务热线
13485538018
24小时服务
微信公众号
手机浏览

CopyrightC 2009-2025 All Rights Reserved 版权所有 芜湖人才网 本站内容仅供参考,不承担因使用信息、外部链接或服务中断导致的任何直接或间接责任,风险自担。如有侵权,请联系删除,联系邮箱:ysznh@foxmail.com 鄂ICP备2025097818号-15

地址: EMAIL:qlwl@foxmail.com

Powered by PHPYun.

用微信扫一扫