DS201: Foundations of Apache Cassandra™ and DataStax Enterprise の学習記録です。
NodeSync (ノードシンク)
**NodeSync(ノードシンク)**は、DataStax Enterprise (DSE) が提供する機能で、Cassandraクラスター内のデータの整合性を継続的に検証し、自動的に修復する仕組みです。従来のアンチエントロピー・リペア(例: nodetool repair
)に代わる、より効率的でオーバーヘッドの少ないデータ整合性維持の手段として設計されています。
NodeSyncの主な特徴
- 継続的な検証と修復: すべてのレプリカ間でデータの同期を継続的に検証し、不整合が見つかった場合は自動的にリペアを実行します。
- 低オーバーヘッド: 常にバックグラウンドで実行されますが、クラスターのパフォーマンスへの影響は最小限に抑えられています。
- 完全自動化: 手動での介入は不要で、データ整合性の維持を自動化します。
- アンチエントロピー・リペアの代替:
従来の
nodetool repair
コマンドの代替として機能し、より効率的な方法でデータ整合性を保証します。
動作原理
NodeSyncサービスは、デフォルトで各ノードで実行されます。NodeSyncはテーブルごとに有効にすることができ、有効にされたテーブルのローカルデータ範囲を連続的に検証します。
- セグメント分割: データ範囲は、小さな単位である「セグメント」に分割されます。これにより、一度に処理するデータ量を小さくし、リソースへの影響を抑えます。
- 優先順位付け: セグメントは、検証の必要性に応じて優先順位が付けられます。
- 検証とリペア: NodeSyncはセグメントを選択し、そのセグメント内のデータを読み取り、レプリカ間で不整合がないかチェックします。不整合が見つかった場合は、必要に応じてリペア(データの同期)を実行します。
- 検証状態の記録:
各セグメントの検証状態は、
system_distributed.nodesync_status
テーブルに保存されます。これにより、管理者はNodeSyncの進行状況や結果を監視できます。
セグメントの検証状態
system_distributed.nodesync_status
テーブルには、以下のようなセグメントの検証状態が記録されます。
successful
: 正常に検証が完了し、整合性が確認された状態。full_in_sync
: セグメント全体が完全に同期されている状態。full_repaired
: セグメント全体が正常にリペアされた状態。unsuccessful
: 検証が失敗した状態。partial_in_sync
: セグメントの一部が同期されている状態。partial_repaired
: セグメントの一部がリペアされた状態。uncompleted
: 検証が未完了の状態。failed
: エラーにより検証が中断された状態。
NodeSyncは、DSEクラスターにおけるデータ整合性維持の運用を大幅に簡素化し、信頼性を向上させる重要な機能です。