我们从设计演化的角度来讲什么是 TDSQL-C MySQL 版本。
- 首先,我们有了一个纯净版 MySQL。它是一个单机数据库。
- 存算分离:然后,我们把 MySQL 的存储引擎拿掉,换成云存储。这就成了存算分离。这时,在用户看来它还是一个单机版 MySQL 数据库。
- 读扩展:接下来,把云存储做成 M 份,其中一份作主,其余作备。上层启动 N 个 MySQL 实例,不同实例读取不同的云存储:只有一个 MySQL 实例读写主云存储,其余 MySQL 实例读取备云存储。M 可以不等于 N。
- 平滑扩展:由于 M 可以不等于 N,所以云存储和计算节点都可以平滑扩展。所谓平滑的意思是,扩展阶段,原有服务不受损,扩展完成,服务能力提升。
- 快速读扩展:由于有了读写分离,读节点可以快速扩展和回收,具备良好的计算弹性。
- Serverless 架构:由于存算分离,计算节点可以快速启停,所以可以给用户提供 Serverless 体验,无需关心计算节点位置。
存疑点:
- TDSQL-C MySQL 的存储用的是三副本强一致。那么,是说最多三个副本吗?不可以扩展成三个以上?
- 计算节点之间是会传递 redo log 的,那么,各个只读节点是如何使用这些 redo log 的?
参考文献:
- https://www.infoq.cn/article/ynuvfbo8i9ypvixwhhhc
- https://cloud.tencent.com/document/product/1003/30489