前言
最近有位粉丝去面试字节,问到这么一道题:数据库主从架构数据同步的方案有哪些?你们公司用的是哪种方式,为什么,有哪些优缺点?
1. 主从同步的方式
MySQL主从同步类型主要有三种:
异步复制 同步复制 半同步复制
1.1 异步复制
主库(Master)在执行完客户端提交的事务后,会立即将结果返回给客户端,并不关心从库(Slave)是否已经接收并处理。 从库会异步地读取主库的二进制日志(binlog),并将其应用于自身的数据库中。 MySQL的同步方式默认是异步复制
异步复制的优点
高性能:事务提交快速,主服务器无需等待从服务器响应。 低延迟:客户端请求处理迅速,减少等待时间。
异步复制的缺点
数据一致性风险:主服务器故障可能导致从服务器数据不完整或不一致。 故障恢复复杂:从服务器升级为主服务器时可能需要额外数据恢复操作。
1.2 同步复制
MySQL的同步复制是指主服务器在提交事务时,必须等待所有从服务器都确认已经接收到并应用了这些事务,然后主服务器才会提交事务并返回成功给客户端。这种方式确保了主从服务器之间的数据完全一致。
同步复制的优点
数据一致性:确保主从服务器数据完全一致。 高可靠性:在主服务器故障时,从服务器可无缝接管。
同步复制的缺点
性能下降:主服务器需等待从服务器确认,可能导致事务提交延迟。 资源消耗:增加网络、CPU和内存等资源消耗。
1.3 半同步复制
在半同步复制中,主库在提交事务之前,会等待至少一个从库确认已经接收到并记录了该事务的二进制日志。主库收到确认信息后,才会正式提交事务。这种方式旨在减少主库发生故障时的数据丢失风险,并在一定程度上提高复制的可靠性。
半同步复制的优点
数据安全性提高:确保至少一个从库接收到事务日志,减少数据丢失风险。 性能与安全的平衡:相较于全同步复制,对性能影响较小,同时提供更高的数据安全性。
半同步复制的缺点
性能开销:主库需等待从库确认,可能增加事务提交延迟。 配置复杂性:需要额外的配置和监控,确保主从库同步稳定。
其实我以前公司,使用的就是半同步复制方式~~ 因为我们是金融公司,所以对数据的安全性要求花式比较高的,就采用半同步复制,而不是异步复制~~
最后
其实,mysql主从相关的八股文考点,还有很多,比如数据库主从延迟的原因与解决方案有哪些?MySQL是怎么保证主从一致的等等,你们知道怎么回答嘛?
最后推荐下两个不错的产品,感兴趣的可以 上车了,这里只吸引同频的人,如果加入几分钟 就直接退出的就不要来了,浪费我的名额。 第一个来自码哥的小报童,仅需 19 元,火热更新中 ,需要的可以扫码加入。 本专栏内容涵盖 Java 基础、Java 高级进阶、Redis、MySQL、消息中间件、微服务
架构设计等面试必考点、面试高频点。本专栏不只是单纯教大家学会背八股文知识,
更多是结合实际大厂高并发项目的场景,去学习面试技术要点。从面试官的角度去出
发,介绍互联网 Java 流行技术体系各个面试要点。
本专栏适合于准备进阶 Java 后端技术、有面试或提升技术需求,希望学习互联网大
厂 Java 流行技术体系的程序员和面试官,助你拿到名企高薪 Offer。
第二个是我的知识星球,特惠期间只需 169 元,需要的可以扫码加入。 关于星球介绍点击: 超 500 万字详解,从零到一带你彻底吃透 Kafka + RocketMQ 小红书实战 需要续费的扫这个,优惠15元 另外必须要注意的是上车的老铁一定要加我微信 好友,拉你们加入星球专属交流群。