最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

后端分布式系列:分布式存储-MySQL数据库事务与复制_MySQL

来源:懂视网 责编:小采 时间:2020-11-09 20:09:52
文档

后端分布式系列:分布式存储-MySQL数据库事务与复制_MySQL

后端分布式系列:分布式存储-MySQL数据库事务与复制_MySQL: 好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适。最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类。结合实际工作中碰到的问题,以寻找答案的方式来剖解技术,很多时候我们都不是在创造新技术,
推荐度:
导读后端分布式系列:分布式存储-MySQL数据库事务与复制_MySQL: 好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适。最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类。结合实际工作中碰到的问题,以寻找答案的方式来剖解技术,很多时候我们都不是在创造新技术,
\

好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适。最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类。结合实际工作中碰到的问题,以寻找答案的方式来剖解技术,很多时候我们都不是在创造新技术,而是在应用技术。为了更有效率与效果的用好技术,我们需要了解一些技术的原理与工作方式。带着问题从使用者的角度去剖析技术原理,并将开源技术产品和框架作为一类技术的参考实现来讲解。以讲清原理为主要目的,对于具体实现的技术细节若无特别之处则尽可能点到即止。

事务与复制

近期参与了一个数据分布化相关的项目,涉及到数据库 MySQL 的数据分布化。简单来说就是需要在异地数据中心实现多点可写并保证分布后的数据能达成最终一致性。以前对 MySQL 作数据分布仅仅是读写分离,通过数据库自身的主从复制即可实现写主库、读从库。现在则需要双写主库并在经历一个短暂的延时后达成最终一致性,这个问题乍一想比较复杂,但归根结底还是数据最终一致性的问题。

先回到最简单的情况,只有一个 MySQL 数据库时,数据一致性是怎么保证的?了解数据库的都知道,这是通过数据库的事务特性来保证的,事务包括四大特性:

Atomicity 原子性 Consistency 一致性 Isolation 隔离性 Durability 持久性

事务的 ACID 四大特性不是本文重点,就不展开做学术性解说了,不了解的可以在后面参考文献里[3]去看相关文章。这里只想提一个问题,单一数据库事务能保证数据的一致性,那么 MySQL 在部署成主从架构时,如何保证主从之间数据的一致性的?

MySQL 为了提供主从复制功能引入了一个新的日志文件叫 binlog,它包含了引发数据变更的事件日志集合。从库请求主库发送 binlog 并通过日志事件还原数据写入从库,所以从库的数据来源为 binlog。这样 MySQL 主库只需做到 binlog 与本地数据一致就可以保证主从库数据一致(暂且忽略网络传输引发的主从不一致)。我们知道保证本地数据一致性是靠数据库事务特性来达成的,而数据库事务是如何实现的呢?先看下面这张图:

\vcrHu/nT2iByZWRvIGxvZyC6zSB1bmRvIGxvZ6GjvPK1pcC0y7WjrHJlZG8gbG9nILzHwrzKws7x0N64xLrztcTK/b7dLCB1bmRvIGxvZyC8x8K8ysLO8cewtcTUrcq8yv2+3aGjy/nS1LWx0ru49srCzvHWtNDQyrHKtbzKt6LJ+rn9s8y88ruvw+jK9sjnz8KjujwvcD4NCs/IvMfCvCB1bmRvL3JlZG8gbG9no6zIt7GjyNXWvsuitb20xcXMyc+z1r7DtOa0oqGjILj80MLK/b7dvMfCvKOsu7q05rLZ1/eyotLssr3LosXMoaMgzOG9u8rCzvGjrNTaIHJlZG8gbG9nINbQ0LTI6yBjb21taXQgvMfCvKGjDQo8cD7U2iBNeVNRTCDWtNDQysLO8bn9s8zW0MjnufvS8rnK1c/W0LbPo6y/ydLUzai5/SByZWRvIGxvZyDAtNbY1/bKws7xu/LNqLn9IHVuZG8gbG9nIMC0u9i59qOsyLexo8HLyv2+3bXE0rvWwtDUoaPV4tCptrzKx9PJysLO8dDUtOa0otL9x+bAtM3qs8m1xKOstasgYmlubG9nILK71NrKws7xtOa0otL9x+a3ts6nxNqjrLb4ysfTySBNeVNRTCBTZXJ2ZXIgwLS8x8K8tcSho8THw7S+zbHY0Ouxo9akIGJpbmxvZyDK/b7dus0gcmVkbyBsb2cg1q685LXE0rvWwtDUo6zL+dLUv6rG9MHLIGJpbmxvZyC688q1vMq1xMrCzvHWtNDQvs224MHL0ruyvaOsyOfPwqO6PC9wPg0Kz8i8x8K8IHVuZG8vcmVkbyBsb2ejrMi3saPI1da+y6K1vbTFxczJz7PWvsO05rSioaMguPzQwsr9vt28x8K8o6y7urTmstnX97Ki0uyyvcuixcyhoyC9q8rCzvHI1da+s9a+w7uvtb0gYmlubG9noaMgzOG9u8rCzvGjrNTaIHJlZG8gbG9nINbQ0LTI68zhvbu8x8K8oaMNCjxwPtXi0fm1xLuwo6zWu9KqIGJpbmxvZyDDu9C0s8m5pqOs1fu49srCzvHKx9Do0qq72Ln2tcSjrLb4IGJpbmxvZyDQtLPJuaa687y0yrkgTXlTUUwgQ3Jhc2ggwcu2vL/J0tS71ri0ysLO8bKizeqzyczhvbuho9Kq1/a1vdXiteOjrL7N0OjSqrDRIGJpbmxvZyC6zcrCzvG52MGqxvDAtKOstvjWu9PQsaPWpMHLIGJpbmxvZyC6zcrCzvHK/b7dtcTSu9bC0NSjrLLFxNyxo9ak1ve008r9vt21xNK71sLQ1KGjy/nS1CBiaW5sb2cgtcTQtMjruf2zzLK7tcOyu8e2yOu1vbS/tOK1xMrCzvG05rSi0v3H5ta00NC5/bPM1tCjrLKi0tTE2rK/t9ayvMq9ysLO8aOoeGEgysLO8aOptcS3vcq9zeqzycG9vde2zszhvbuho7340ruyvbXEz7i92r7NsrvVub+qwcujrL/J0tSyzr+0uvPD5rLOv7zOxM/XWzVdoaM8L3A+DQo8aDIgaWQ9"总结">总结

我们前面先提出了一个问题,然后从数据一致性的角度去思考,参考了 MySQL 的实现方式。理清并分析了 MySQL 单机环境是如何保证复制机制的数据一致性,也就是 binlog 和事务数据的一致。后面我们才能基于 binlog 这个机制去实现复制并保证主从复制的一致性。主从复制又引入了网络因素,进一步增加了保证主从数据一致性的复杂度,后面还会撰文进一步分析这个问题。

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

后端分布式系列:分布式存储-MySQL数据库事务与复制_MySQL

后端分布式系列:分布式存储-MySQL数据库事务与复制_MySQL: 好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适。最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类。结合实际工作中碰到的问题,以寻找答案的方式来剖解技术,很多时候我们都不是在创造新技术,
推荐度:
标签: 复制 数据库 mysql
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top