mysql数据库的致性与可靠性bos.itdks.com/76c213d5118448c1969254dfde165db6.pdf · group...
TRANSCRIPT
-
MySQL数据库的⼀一致性与可靠性2017-8
-
⾃自我介绍
⼄乙休(崔京)
从事过Oracle/MySQL DBA Python/Docker 玩家、DevOps践⾏行行者
现负责阿⾥里里云 MySQL产品
-
MySQL历史关系型、最⼴广泛
-
MySQL @ Aliyun No. 2
2003 2011 2014 2017
*ALibaba集团 内部业务
针对高并发压力下性能优化
* RDS for MySQL 5.1 商用
关注、合并社区更新,兼容官方版本
* RDS for MySQL 5.6 商用
AliSQL开源最初蓝本
* RDS for MySQL 5.7 商用
* MySQL 5.6 金融版商用
https://github.com/alibaba/
开源&解决⽅方案
-
MySQL常⽤用架构
M SM M SM
P
SM S M S
P
M S M S
P
M S M S
北北京 上海海
binlog⽆无处不不在
-
主从复制模式的演进
Group ReplicationDouble-binlog ReplicationSynchronous Replication via Raft/Paxos
Semi-sync Replication
Asynchronous Replication
异步
半同步
双通道
组复制
5.1 5.5 5.6 5.7
对数据的可⽤用性和可靠性越来越关注
-
异步复制性能和可⽤用性优先
-
半同步复制开始关注数据的完整性
-
双通道不不再是瞎⼦子
-
强同步复制(⼀一主两备)彻底解决主备不不⼀一致问题
-
内核选主(Raft)
Master
Slave Slave
Raft
Role Database Role State Term Expired
Leader Master read-write 1001 170526 16:20:09
Follower Slave read-only 1001 170526 16:20:09
Follower Slave read-only 1001 170526 16:20:09
这是节点的状态,包含他们的⻆角⾊色,数据库状态,选举的Term值,以及租约过期时间。
⻆角⾊色决定了了他们的读写状态,以及⽇日志复制流向。
Raft分布式⼀一致性协议
避免脑裂时的数据污染
-
Flashback回滚未提交事务主备完全⼀一致
Flashback确保数据强⼀一致
Node-A
Node-B
Transaction 1
Transaction 1
Transaction 2
Transaction 3
Insertintot(c)values(1); updatetsetc=c*2;
updatetsetc=c*2;
updatetsetc=c*2;
Transaction 3
1
1
2 4
21
Flashback是利利⽤用Binlog,通过Rollback指定的事务的⽅方式,快速恢复误删除的数据。
MariaDB⾥里里有了了这样的Feature,提供的是⼯工具。我们引⼊入到AliSQL,同时⽀支持SQL命令的⽅方式恢复数据,即将在阿⾥里里云数据库公共云上线。
在三节点中,利利⽤用此Feature是为了了在⽼老老Master回滚尚没有传输到备库的事务,确保新⽼老老Master数据完全⼀一致。
-
系统架构
资源与调度中⼼心 (物理理机/ECS/Docker/供应链)
主节点
备节点 备节点
Raft
业务⽀支撑 (安全/备份/审计/⽣生命周期管理理/弹性)
监控 容灾
(全链路路监控/ CloudDBA/ 机房容灾/ 两地三中⼼心)
运维⽀支撑 (多版本管理理,DevOps,⾃自动化运维)
-
为什什么这么实现
兼容性
性能
成本各式各样的SQL/Driver 各种各样的MetaData
互联⽹网、物联⽹网、⾦金金融、电商、游戏、政务、通信等
云服务
-
云数据库
普惠时代 品质时代• 性能可预期(稳定) • 敏敏捷、效率 • 便便捷、傻⽠瓜式 • API&SaaS&⽣生态
-
未来
上⾯面说的都不不对,过去的历史,终将被未来改写。
说重点,,招⼈人。。。。
要求很简单,只要你对数据库、云计算感兴趣,有⾜足够的好奇⼼心和学习能⼒力力, 希望通过产品或技术为中国80%的企业解决数据上的问题,请勾搭~
产品/架构/研发/DBA/测试