申请试用
HOT
登录
注册
 
青云 张雁飞《RandonDb新一代分布式关系型数据库》
青色的海牛
/
发布于
/
2511
人观看
随着数据规模越来越大,存储和运维成本逐渐增加,有人认为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 .

14 点赞
6 收藏
0下载
相关文档