SQL 必知必会
陈旸
清华大学计算机博士
73338 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 50 讲
第一章:SQL语法基础篇 (19讲)
SQL 必知必会
15
15
1.0x
00:00/00:00
登录|注册

35丨数据库主从同步的作用是什么,如何解决数据不一致问题?

组复制
半同步复制
异步复制
主从同步的线程
Binlog二进制日志
高可用性
数据备份
读写分离
提高数据库的吞吐量
解决主从同步的数据一致性问题
主从同步的原理
为什么需要主从同步
数据库主从同步
数据库主从同步的作用和解决数据不一致问题

该思维导图由 AI 生成,仅供参考

我们之前讲解了 Redis,它是一种高性能的内存数据库;而 MySQL 是基于磁盘文件的关系型数据库,相比于 Redis 来说,读取速度会慢一些,但是功能强大,可以用于存储持久化的数据。在实际工作中,我们常常将 Redis 作为缓存与 MySQL 配合来使用,当有数据访问请求的时候,首先会从缓存中进行查找,如果存在就直接取出,如果不存在再访问数据库,这样就提升了读取的效率,也减少了对后端数据库的访问压力。可以说使用 Redis 这种缓存架构是高并发架构中非常重要的一环。
当然我们也可以对 MySQL 做主从架构并且进行读写分离,让主服务器(Master)处理写请求,从服务器(Slave)处理读请求,这样同样可以提升数据库的并发处理能力。不过主从架构的作用不止于此,我们今天就从以下几个方面了解一下它:
为什么需要主从同步,设置主从同步有什么样的作用?
主从同步的原理是怎样的?在进行主从同步的同时,会引入哪些问题?
为了保证主从同步的数据一致性,都有哪些方案?

为什么需要主从同步

首先不是所有的应用都需要对数据库进行主从架构的设置,毕竟设置架构本身是有成本的,如果我们的目的在于提升数据库高并发访问的效率,那么首先需要考虑的应该是如何优化你的 SQL 和索引,这种方式简单有效,其次才是采用缓存的策略,比如使用 Redis,通过 Redis 高性能的优势将热点数据保存在内存数据库中,提升读取的效率,最后才是对数据库采用主从架构,进行读写分离。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

数据库主从同步是一种重要的架构设计,可以提高数据库的并发处理能力、实现读写分离、数据备份和提高高可用性。主从同步的原理是基于Binlog二进制日志进行数据同步,通过主库线程和从库线程实现数据的复制和同步。然而,在主从同步过程中可能存在数据不一致性问题,需要采取相应的解决方案。解决数据不一致性问题的方式包括异步复制、半同步复制等不同的复制方式,它们在数据一致性和效率方面有不同的权衡。因此,在实际应用中需要根据业务需求和成本来选择合适的主从同步策略。 MySQL Group Replication(MGR)是MySQL在5.7.17版本中推出的一种新的数据复制技术,基于Paxos协议的状态机复制。相比于异步复制和半同步复制,MGR通过一致性协议层实现了数据的强一致性,弥补了之前复制模式的不足。MGR将MySQL带入了数据强一致性的时代,是一个划时代的创新。 在主从架构的配置中,可以通过自己编写程序或使用第三方中间件来实现读写分离策略。自己编写程序可以更加自主地控制查询在从库或主库上执行,减少了中间件层的性能损耗。而使用中间件则具有功能强大、使用简单的优势,但会增加一定的性能损耗和使用成本。同时,开源工具如MaxScale和MHA也可以作为数据库代理和主从切换工具,实现读写分离和高可用架构。 综上所述,本文介绍了数据库主从同步的重要性、数据不一致性问题及解决方案,以及MGR技术的特点和应用,同时探讨了在主从架构配置中自行编写程序和使用中间件的优缺点。读者可以从中了解到数据库同步技术的发展趋势和应用场景,以及在实际应用中如何选择合适的主从同步策略。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《SQL 必知必会》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(13)

  • 最新
  • 精选
  • Monday
    计算高可用的每年等于3652460分钟错了吧,但是最后得出的5.256分钟又是对的。 不应该是365*24*60*(1-99.999%)=525600*0.00001=5.256分钟吗?

    作者回复: 对 是365*24*60*(1-99.999%)=525600*0.00001=5.256分钟

    2019-09-16
    2
    6
  • Demon.Lee
    在执行读写(RW)事务的时候,需要通过一致性协议层(Consensus 层)的同意,也就是读写事务想要进行提交,必须要经过组里“大多数人”(对应 Node 节点)的同意 ----------------------------------- 老师,这里的大多数节点同意,是指主库同步的数据大多数节点都已经写入到自己的库了么,然后告知主库你可以回复客户端写入成功了,如果是这样,客户端等的时间不短吧
    2019-09-13
    2
    12
  • Pray、PF
    主从复制:是主数据库的数据通过二进制日志自动复制到从数据库中 读写分离:由原本一个服务器的读写请求转变为现在的主服务器处理写请求,从服务器处理读请求,减少了主服务器的压力 负载均衡:让不同的读请求按照策略均匀地分发到不同的从服务器中,让读写更加顺畅
    2020-06-26
    11
  • 学渣汪在央企打怪升级
    看懂原理基础,最后给出的建议是自己搭配或者用开源的。但是使用起来都很困难,希望能有点讲解怎么使用开源的,和自己实现的方向
    2020-03-29
    8
  • humor
    主库有写入请求时,会有写锁,但是当主库的数据同步到从库时,从库是不是也会有写锁呢?
    2019-09-16
    1
    8
  • Geek_7d63b4
    mysql做主从备份,一段时间后发现从库在通信高峰期会发生一两条条数据丢失(查询不到了),主从备份是正常,怎么判断哪里出问题?
    2019-09-22
    1
    6
  • 8080
    重点基于paxos实现一致性没有讲到位啊 希望老师能在评论区详细解释一下
    2020-06-22
    1
    5
  • Kyle(
    为啥这么少评论,组复制我是真听的有点模糊,按这么说到组复制了是不是比上面两个效率更低了?然后读写事务过一致性协议,那纯写的事务呢?会不会过,如果不会过的话是否还是会有一致性问题呢
    2021-01-28
    4
  • Ryoma
    mysql 的 主从 binlog 复制,是从库与主库建立了长连接么?是主库主动推给从库,还是从库定时轮询从主库取呢?
    2020-03-21
    1
    3
  • 木杉
    想请教一下 有没有关于 主从同步 配置方面的教程 感觉网上的教程都是乱七八糟的 希望老师可以推荐几个比较好的教程
    2020-03-07
    2
收起评论
显示
设置
留言
13
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部