青云 张雁飞 - RadonDB:新一代分布式关系型数据库

松思远

2017/12/18 发布于 技术 分类

RadonDB是一款基于MySQL的新一代分布式关系型数据库(MyNewSQL)。 RadonDB将MySQL GTID并行复制技术与分布式一致性协议Raft完美结合,并基于MySQL自身的XA事务实现的分布式事务,打造了一款具备金融级高可用、强一致、可扩展的分布式数据库产品。 本次分享将围绕如何把MySQL与当下最流行的分布式技术以及云计算相结合,来实现一款新式的企业级分布式数据库服务。

文字内容
1. RadonDB ෛӞդ‫૲ړ‬ୗ‫ى‬ᔮࣳහഝପ ୟᵛᷢ ᶆԯQingCloud හഝପṛᕆದ๞ӫਹ 12.09.2017
5. SPEAKER ●  TokuDBٖ໐ᖌಷᘏ̵XeLabs໐ஞ౮ާ ●  Ⴃਪ໐ஞᔮᕹ/ᴨ᯾ԯහഝପٖ໐ᕟ/ᶆԯහഝପࢫᴚ ●  ፓ‫ࣁڹ‬ᶆԯ՗ԪෛӞդහഝପԾߝᦡᦇӨᎸ‫ݎ‬ૡ֢ @BohuTANG
6. RadonDB ►  ‫ݢ‬ಘ઀ ►  ṛ‫ݢ‬አ ►  ୩Ӟᛘ ►  ฃ᮱ᗟ ►  MyNewSQL
7. Architecture Radon Distributed SQL Nodes (stateless) Storage Radon Radon MySQL Protocol raft raft Storaraftge raft raft Storage Nodes Storage Compute Nodes
8. Distributed SQL ►  ኞ౮‫૲ړ‬ୗಗᤈᦇ‫޾ښ‬ಗᤈ࢏ ►  ಗᤈ࢏ଚᤈಗᤈ ►  ‫૲ړ‬ୗԪ‫࢏᧣ܐۓ‬ ►  orderby/limit/groupby/aggregation/join … ►  ෫Ӿஞ۸ᦡᦇ
9. Storage Nodes ►  ਂ‫੶ؙ‬ኧग़ӻ node ᕟ౮ ►  ྯӻ node ᨮᨱ᮱‫ړ‬හഝਂ‫ؙ‬ ►  node ኧग़‫ۅ‬๜ᕟ౮ ►  ྯӻ‫ۅ‬๜ԅӞӻ MySQL ►  ӧՐਂ‫ؙ‬ᬮํᦇᓒᚆ‫ێ‬ Storage Nodes raft Storarftage raft
10. හഝ‫૲ړ‬ t1_0000 [0, 127] CREATE TABLE t1(id int, age id) PARTITION BY HASH(id) t1_0001 [128, 255] t1_0002 [256, 383] t1_0029 [3712, 3839] t1_0030 [3840, 3967] t1_0031 [3968, 4095] raft raft ►  ෆୟᤒ‫ و‬4096 slots ►  ྯӻੜᤒ 128 slots ►  ੜᤒ࣐۰‫ړ‬වࣁ nodeᜓᅩ
11. ಘ਻ ►  ੜᤒ‫ۖݢ‬ாᄈᑏ ►  ‫قض‬ᰁ‫ݸ‬ीᰁ ►  ᫾य़/ᅾଶṛᘏս‫ض‬ ►  ᩒრ‫ړ‬ᯈ๋ս۸ t1_0000 [0, 127] CREATE TABLE t1(id int, age id) PARTITION BY HASH(id) t1_0001 [128, 255] t1_0002 [256, 383] t1_0029 [3712, 3839] t1_0030 [3840, 3967] t1_0031 [3968, 4095] raft raft raft
12. ‫ۅ‬๜ ►  ԅՋԍӧฎKV? MySQL! ►  ᑞਧ‫ݢ‬ᶌ̵ग़ᔱ୚ٟܻৼ‫ᦤכ‬ ►  ᦇᓒӥവ҅හഝ੪ᬪᦇᓒܻ‫ڞ‬ ►  SQL Ө Storage හഝփᬌ๋ੜ۸ ►  MySQL 8.0ๅ‫ے‬୩य़...
13. ‫ۅ‬๜ṛ‫ݢ‬አ ►  GTID ֢ԅ Raft Log Index ►  Raft ‫ᦓܐ‬ᭌԆ̵Log ଚᤈ॔‫ګ‬ ►  Ԇ‫ۅ‬๜ඳᵑᑁᕆ‫ڔ‬ഘ‫ݢܨ‬๐‫ۓ‬ ►  ୩ Semi-Sync Ꮯ‫כ‬Ԫ‫ۓ‬ӧӶ० ►  ‫ۅ‬๜ඳᵑ‫ݢ‬ள᭛ၞୗ᯿ୌ ►  ෫Ӿஞ۸҅‫ݢ‬᪜๢಄᮱ᗟ VIP GTID+ Raft VIP X Raft+MySQL = Raft ᭌԆ+GTID ଚᤈ॔‫ګ‬+୩ Semi-Sync හഝ୩Ӟᛘ̵‫ڔ‬ഘᵭӶ०
14. ‫૲ړ‬ୗԪ‫ۓ‬ ►  Ԫ‫ۓ‬ᓕቘ ►  Ԫ‫ݢۓ‬ᶌ௔ ►  Snapshot Isolation ᵍᐶᕆ‫ڦ‬
15. SIᵍᐶᕆ‫ڦ‬ ►  ๚൉Իӧ‫ݢ‬ᥠ ►  ᮱‫ړ‬൉Իӧ‫ݢ‬ᥠ
16. SI༄ၥ ►  XeLabs/go-jepsen ►  1ӻๅෛᕚᑕ҅16ӻಚᤒᕚᑕ ►  100ग़Պེ඙֢޾༄ၥ ►  ᵋ๢ kill ਂ‫ᜓؙ‬ᅩԆ‫ۅ‬๜
17. Radon - Binlog ►  Statement + GTID໒ୗ ►  ‫ᦈᤩݢ‬ᴅአԭහഝ‫ᦇ(ྍݶ‬ᓒᜓᅩ)
18. OLTP + OLAP ►  ᇿᒈᦇᓒᜓᅩ(Compute Node) ►  හഝ᭗ᬦ Radon Binlog ᬰᤈள᭛‫ྍݶ‬ ►  SQL ੶ᛔۖ᪠ኧ॔๥ັᧃ‫ᦇک‬ᓒᜓᅩ ►  սᅩ: ṛଚ‫ݎ‬Ԫ‫ۓ‬Ө॔๥ັᧃᩒრᵍᐶ ►  ᗌᅩ: ਂ‫ ؙ‬2 ղ҅ፓ‫ֵڹ‬አܴᖽᥴ٬
19. Backup & restore ►  XeLabs/go-mydumper ►  ಢᰁଚᤈၞୗ੕‫҅ڊ‬snapshot॓ղ ►  ಢᰁଚᤈ੕‫ف‬
20. ௔ᚆ sysbench: 16ᤒ, 512ᕚᑕ҅ᵋ๢ٟ҅5000ӡ๵හഝ Transaction Per Second(TPS) RadonDB (1SQLᜓᅩ҅4 ਂ‫ᜓؙ‬ᅩ) 26,589 Response Time(avg) 20ms ᥢ໒ 4 ਂ‫ᜓؙ‬ᅩ(16C64G᩻ṛ௔ᚆԆ๢) sync_binlog=1 innodb_flush_log_at_trx_commit=1 ‫ܔ‬๢ MySQL (QingCloud RDB) 9,346 73ms RDB(16C64G᩻ṛ௔ᚆԆ๢) sync_binlog=1 innodb_flush_log_at_trx_commit=1
21. ᮱ᗟ ►  ԯ۸᮱ᗟ ►  ᓌ‫ܔ‬ளഠ
22. ᩒრፊഴ ►  CPU ►  ٖਂ ►  ᏝፏIOPS/ֵአሲ...
23. ፊഴ ►  ‫ق‬᱾᪠ፊഴ ►  mysql> show processlist; ►  mysql> show txnz; ►  mysql> show queryz;
24. ઀๕ ►  MyNewSQL‫୏ڟڟ‬ত ►  Hybrid Row/Column Data Storage ►  ‫૲ړ‬ୗԪ‫ۓ‬දᬰ(Linearizability) ►  RadonDBਖ਼‫ق‬᮱୏რ(2018)
25. Thank you. Array@yunify.com