按关键词阅读:
本文插图
核心问题:
数据的备份同步问题:参考4.4.3 。
读写比例支持动态设置:结合业务 , 如淘宝可设置为20:1 。
4.3.2 容灾
主备倒换:提高可靠性 > 应对个别数据库宕机场景 , 尤其主库宕机 。
本文插图
主备倒换
说明:DB2主库宕机后 , 自动将主库转为DB3 。
核心问题:
数据的备份同步问题:binlog 参考4.4.3 。
检测数据库的在线状态:心跳机制 。
4.3.3 数据备份与同步
当只有单机或者一份数据时 , 一但数据库出问题 , 那么整体服务将不可用 , 而且更严重的是会造成数据损害丢失不可逆 。
在读写分离与主备倒换的场景下 , 核心要解决的是多个数据库的数据同步与备份问题 。
当前主流的是采用日志备份方式(redis也类似) 。
实现原理:binlog日志备份 。
本文插图
数据备份:bin-log同步
说明:
主库负责写操作 , 在数据变更时 , 会写入binlog , 同时通知各从库 。
从库收到通知后 , IO线程会主动过来读取主库的binlog , 并写入自己的log 。
写完从库log后 , 通知sql线程 , sql线程读取自己的日志 , 写入从库 。
4.3.4 动态扩容
动态扩容的意义在于:随着后期业务量增大 , 数据库个数可以通过增多的方式来应对 , 而相对的改造代价很小 。
扩容前:
本文插图
扩容后:
本文插图
核心内容:
在添加新库时
注册机器与库
路由算法调整:固定哈希算法-调整模数/一致性哈希算法天然支持扩容
可选的权重调整
修改权重 , 数据插入偏向于新库5 。
在各库数量平衡时 , 触发修改回原来平衡的权重 , 以保证后续的均衡分配 。
五 架构成型
sql流向
下图介绍sql从流入TDD到流入数据库 , 期间TDDL各模块对Sql的处理 。
本文插图
架构图
本文插图
下图介绍了TDDL三层的位置以及作用 。
本文插图
核心能力图
TDDL 核心能力 , 核心组建示意图 , 其中标出了各模块核心要解决功能 , 核心算法等 。
本文插图
参考
TDDL 官方文档
https://mw.alibaba-inc.com/products/tddl/_book/
TDD产品原理介绍
https://gitlab.alibaba-inc.com/middleware/tddl5-wiki/raw/master/docs/Tddl_Intro.ppt
TDDL(07-10年)初始版本介绍
https://wenku.baidu.com/view/9cb630ab7f1922791788e825.html
阿里云SQL调优指南
https://help.aliyun.com/document_detail/144293.html
一致性哈希算法原理
https://www.cnblogs.com/lpfuture/p/5796398.html
TDDL初期源码(码云)
https://gitee.com/justwe9891/TDDL
MyISAM与InnoDB 的区别(9个不同点)
MySQL实操
稿源:(ZAKER汽车)
【】网址:http://www.shadafang.com/c/hn092Y452G2020.html
标题:大数据&云计算|作为数据库核心成员,如何让淘宝不卡顿?( 五 )