青云 张雁飞《RandonDb新一代分布式关系型数据库》

随着数据规模越来越大,存储和运维成本逐渐增加,有人认为MySQL架构的分布式数据库已经过时,现在是NewSQL的天下,本次分享把分布式一致性协议Raft与MySQL高可用集群相结合,打造一款新式分布式数据库架构(MyNewSQL)。 听众受益:如何做到高可用、如何做到强一致、如何做到可扩展、如何设计Binlog,并行/串行回放、数据如何压缩及快速检索。
展开查看详情

1. RadonDB 新一代分布式关系型数据库 演讲者/张雁飞

2.SPEAKER ▶ TokuDB内核维护者、XeLabs核心成员 ▶ 淘宝核心系统/阿里云数据库内核组/青云数据库团队 ▶ 目前在青云从事新一代数据库产品设计与研发工作 @BohuTANG

3.RadonDB ►可扩展 ►高可用 ►强一致 ►易部署 ►MyNewSQL

4.Architecture Distributed SQL Nodes (stateless) Storage Radon Radon Radon MySQL Protocol raft raft raft raft raft Storage Storage Storage Nodes Compute Nodes

5.Distributed SQL ►生成分布式执行计划 ►执行器并行执行 ►orderby/limit/groupby/aggr/join … ►主从模式

6.Storage Nodes ►存储层由多个 node 组成 Storage Nodes ►每个node 由多副本组成 raft raft Storage raft ►每个副本为一个 MySQL ►不仅存储还有计算能力

7.副本 ▶ 为什么不是KV? MySQL! ▶ 稳定可靠、多索引写原子保证 ▶ 计算下推,数据就近计算原则 ▶ 不仅存储还有计算能力 ▶ SQL 与 Storage 数据传输最小化 ▶ MySQL 8.0更加强大...

8.高可用 ►GTID 作为 Raft Log Index VIP VIP ►Raft 协议选主、Log 并行复制 X ►主副本故障秒级切换即可服务 GTID ►强 Semi-Sync 确保事务不丢失 + Raft ►单副本故障可快速流式重建 ►无中心化,可跨机房部署 Raft+MySQL = Raft 选主+GTID 并行复制+强 Semi-Sync 数据强一致、切换零丢 失

9.数据分布 CREATE TABLE t1(id int, age id) PARTITION BY HASH(id) t1_0000 t1_0001 t1_0002 t1_0029 t1_0030 t1_0031 [0, 127] [128, 255] [256, 383] [3712, 3839] [3840, 3967] [3968, 4095] raft raft ►整张表共 4096 slots ►每个小表 128 slots ►小表均匀分散在 node节点

10.扩容 ►小表可动态漂移 CREATE TABLE t1(id int, age id) PARTITION BY HASH(id) ►先全量后增量 t1_0000 [0, 127] t1_0001 [128, 255] t1_0002 [256, 383] t1_0029 [3712, 3839] t1_0030 [3840, 3967] t1_0031 [3968, 4095] ►较大/热度高者优先 raft raft raft ►资源分配最优化

11.分布式事务 ►事务管理 ►事务可靠性 ►Snapshot Isolation 隔离级别

12.SI隔离级别 ►未提交不可见 ►部分提交不可见

13.SI检测 ►xelabs/go-jepsen ►1个更新线程,16个扫表线程 ►100多亿次操作和检测 ►随机 kill 存储节点主副本

14.Radon - Binlog ►Statement + GTID格式 ►可被订阅用于数据同步(计算节点) ►show binlog events [GTID] [limit] ►实时流式获取

15.OLTP + OLAP ►独立计算节点(Compute Node) ►数据通过 Radon Binlog 进行快速同步 ►SQL 层自动路由复杂查询到计算节点 ►优点: 高并发事务与复杂查询资源隔离 ►缺点: 存储 2 份,目前使用压缩解决

16.审计日志 ►支持多种审计模式 ►可定位慢查询等

17.Backup & restore ►xelabs/go-mydumper ►批量并行流式导出 ►批量并行导入

18.性能 sysbench: 16表, 512线程,随机写,5000万条数据 Transaction Per Response Time(avg) 规格 Second(TPS) 4 存储节点(16C64G超高性能主机) RadonDB sync_binlog=1 (1SQL节点,4 存储节 26,589 20ms innodb_flush_log_at_trx_commit=1 点) RDB(16C64G超高性能主机) 单机 MySQL sync_binlog=1 9,346 73ms (QingCloud RDB) innodb_flush_log_at_trx_commit=1

19.部署 ►云化部署 ►简单快捷

20.资源监控 ►CPU ►内存 ►硬盘IOPS/使用率...

21.监控 ►全链路监控 ►mysql> show processlist; ►mysql> show txnz; ►mysql> show queryz;

22.展望 ►MyNewSQL 刚刚开始 ►Hybrid Row/Column Data Storage ►RadonDB 即将开源

23.