Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TiKV - Raftによるデータ整合性の実現

TiKV - Raftによるデータ整合性の実現

このスライドでは、分散型データベースのTiDBが、複数のレプリカの間でどのようにデータの一貫性・整合性を維持しているかを紹介します。また、Raft Consensus Algorithm、TiDBのRaft Consensus Algorithmの使用方法、ログ・レプリケーション、リーダー選挙の仕組みについて解説します。また、TiDBが分散型でありながら、Raft Consensus Algorithm、ログ・レプリケーション、リーダー選挙などの仕組みを組み合わせることによって、複数のTiKVノード間でデータの一貫性・整合性が実現されていることについて解説します。

トピック:
・Raft Consensus Algorithmの概要
・ログ・レプリケーション
・リーダーの選挙

アーカイブ動画:
https://youtu.be/dBkcMvuwg9Q

QUIZ(資料P25)の解答:
 ACDF
(解説)
・A については、TiKVはTiDBクラスタのデータの永続化との役割を持っていますので、Aは正しいです。
・B については、TiKVではなく、PDの役割となります。Bは誤っています。
・CとDはTiKVの2回目Webinarの内容となり、正しいです。
・Eの物理実行計画の生成はTiDB コンポーネントで行われているため、誤りです。
・Fのデータの永続化はTiKVの役割となるため、正しいです。

PingCAP-Japan

October 21, 2022
Tweet

More Decks by PingCAP-Japan

Other Decks in Technology

Transcript

  1. スケールアウトアーキテクチャ
 TiDB クエリの増加 
 ノード追加で対応 
 TiDB TiDB Cluster
 TiKV

    Cluster
 負荷分散・領域管理 
 3ノードのみ必要 
 PD Cluster
 TiDB TiKV TiKV TiKV TiKV 容量拡張
 ノード追加で対応
 TSO / Data Location
 Metadata
 PD PD PD Application via MySQL Protocol Application via MySQL Protocol Application via MySQL Protocol Application via MySQL Protocol データストアレイヤー 
 アプリケーション
 (MySQLClient利用可能)
 - アプリケーションから見ると1台のMySQLのように見える
 - スケールアウト型アーキテクチャ(1台あたり約2.5万QPS。100万QPS程度まで拡張可能)
 - TiDB…MySQLプロトコルを理解し、Parser,Optimizer機能を提供。ノード増で性能拡張可能
 - TiKV…実際にデータが保存されている。3面コピーにより冗長性を高めている(マルチAZ構成可能)
 SQL解析レイヤー
 (Parser, Optimizer)

  2. 本日の位置づけ
 https://pingcap.co.jp/event/
 
 
 2022年6月16日(木) 14:00-15:00 
 PingCAP Education:TiKV- RocksDBについて

    
 2022年7月28日(木) 14:00-15:00 
 PingCAP Education:TiDBでの表設計 
 2022年9月9日(金) 14:00-15:00 
 PingCAP Education:TiKV-トランザクション&MVCC 
 2022年9月30日(金) 14:00-15:00 
 PingCAP Education: TiDBでのSQL実行の仕組み 
 2022年10月21日(金) 14:00-15:00 
 PingCAP Education: TiKV-データの整合性 
 2022年10月28日(金) 14:00-15:00 
 PingCAP Education:TiDB でのロック競合のトラブルシューティング 
 
 
 ※過去開催アーカイブ : https://www.youtube.com/channel/UCatxrGZANSnii2fe7FeEwvg/playlists 

  3. Xinke Qiao / 喬 心軻(キョウ シンカ) 
 Technical support engineer 


    PingCAP Japan
 PingCAP Education
 PingCAP Education:
 TiKV-データの整合性

  4. TiKVの5つの役割
 1. データの永続化の実現
 2. 分散型データベースでのデータ整合性の保証
 3. MVCC(Multi-Version Concurrency Control)
 4.

    トランザクションの実現
 5. Coprocessor
 ➔ raft コンセンサス・アルゴリズム
 ➔ raft group
 ➔ multi-raft
 ➔ raft の複製
 ➔ leader の選挙
 ➔ …

  5. ログ・レプリケーション
 
 
 • Propose 
 • Append 
 •

    Replicate 
 ◦ Append 
 • Committed 
 • Apply 

  6. ログ・レプリケーション
 
 
 • Propose 
 • Append 
 •

    Replicate 
 ◦ Append 
 • Committed 
 • Apply 

  7. ログ・レプリケーション
 
 
 • Propose 
 • Append 
 •

    Replicate 
 ◦ Append 
 • Committed 
 • Apply 

  8. ログ・レプリケーション
 
 • 
 • Propose 
 • Append 


    • Replicate 
 ◦ Append 
 • Committed 
 • Apply 

  9. ログ・レプリケーション
 
 
 • Propose 
 • Append 
 •

    Replicate 
 ◦ Append 
 • Committed 
 • Apply 

  10. リーダー選挙(2)~リーダーがない場合
 • 流れ
 1. election timeout に至ったノードから Term を増やして、自分を「Candidate」ロールに変更して、選挙を起こす
 2.

    自分に1票を入れて、他のノードに「私に投票してください!」とのメッセージを送信する
 3. 他の Follower は投票依頼を受信したら、自分のTerm値と比較して、自分のTerm値より新しい(大きい)場合、「賛同票」をCandidateに返信する
 4. 半分以上の賛同票をもらったら、Candidate から Leader に変更し、新しいTermを始まる
 5. 新しい Leader によりフォロワーにハートビートを定期的に送る
 ② vote for me
 (term=2)
 ② vote for me
 (term=2)
 ③ agree
 ③ agree
 ② vote myself
 ①
 ③
 ③
 ④

  11. リーダー選挙(4)〜障害時
 • heartbeat time interval (デフォルト2s)
 • 流れ
 1. 先にハートビートを受け取っていなかった間に先に

    election timeout に至ったノードから Term を増やして、自分を「Candidate」ロールに変更して、選挙を 起こす
 2. 自分に1票を入れて、他のノードに「私に投票してください!」とのメッセージを送信する
 3. 他の生きている Follower は投票依頼を受信したら、自分のTerm値と比較して、自分のTerm値より新しい(大きい)場合、「賛同票」をCandidateに返信する
 4. 半分以上の賛同票をもらったら、Candidate から Leader に変更し、新しいTermを始まる
 5. 新しい Leader によりフォロワーにハートビートを定期的に送る
 ② vote for me
 (term=3)
 ② vote myself
 ③ agree
 ①
 ③
 ④

  12. リーダー選挙(5)
 
 • election timeout(デフォルト:10s~20s)
 値:raft-min-election-timeout-ticks x raft-base-tick-interval ~ raft-max-election-timeout-ticks

    x raft-base-tick-interval 
 • heartbeat time interval(デフォルト:2s)
 値:raft-heartbeat-ticks x raft-base-tick-interval 
 

  13. Quiz
 1) TiKV の役割に該当するものは?(4 つを選ぶ) 
 
 A.システム・パラメータおよびデータの永続化 
 


    B. TSO の生成
 
 C.分散トランザクションの実現 
 
 D. MVCC 
 
 E.物理実行計画の生成 
 
 F.表の統計情報の永続化 

  14. Quiz(2)
 2) TiKV 永続化に関する記載について、以下の記述が 誤っているのは?
 
 A. RocksDB は2つのインスタンスがあり、それぞれは raft

    log と key-value を保存している
 
 B. RocksDB の WAL が RocksDB に書き込まれたデータの欠落を防ぐ 
 
 C.削除操作に関しては、元の key-value に「削除済み」とマークされるだけ 
 
 D. RocksDB では Level 0 のデータ以外に他の Level のデータすべてはソート、かつ永続化されている 
 

  15. PingCAP Education トレーニング トレーニング全体リンク   https://en.pingcap.com/education/ 無償コース(推奨)   TiDB Technical Essentials 101:

    内容   - TiDB全体のアーキテクチャ   - TiDBの各コンポーネントのアーキテクチャ   - HTAP Overview & TiFlashのアーキテクチャ   - TiDB Cloudの始め方   - TiDB 6.0情報 Course: TiDB Essentials 101 トレーニングを通じ、TiDBの理解を深めることができます。
  16. クラウドアプリのスタートをご支援! TiDB Cloud 1年無料キャンペーン 日本進出から1周年を記念し、TiDB Cloudをご利用いただいたことがないお客様を対象にTiDB Cloud1年間相当の値引きキャンペーンを実施します。 キャンペーン期間 2022年5月18日~2023年3月31日 申込み分まで キャンペーン内容

    最大700万円相当(TiDB Cloud典型構成で1年分相当)の値引きを提供します。 対象・適用条件 下記条件をみたすお客様 ※1(最大10社※2)  - TiDB Cloudを使用したことがないお客様  - 事例・プロモーションにご協力いただけるお客様  - 設立から1年以上経過しているお客様 適用方法 フォームにご入力の上、キャンペーンにお申し込みください。審査結果およびキャンペーン の詳細について担当者より連絡いたします。 URL https://pingcap.co.jp/start-dash-202205/ ※1 別途所定の審査あり
 ※2 予定数に達し次第終了する可能性があります。

  17. OSS Insight : 活発度が分かる分析サービス 46億を超えるGitHub上のイベント分析するデータベースとしてTiDB (TiFlash)を活用 https://ossinsight.io/ ①各イベント発生の推移 ①GitHubイベント データを1分おきに同期

    +TiFlash https://ossinsight.io/ ②Pull requests地域の表示 ②分析クエリを TiFlash(カラムストア ) で高速処理 ③ジャンル内での比較(人気言語等) etc…