仕切られたRaftKV
v6.6.0 より前は、TiKV の Raft ベースのstorageエンジンは単一の RocksDB インスタンスを使用して、TiKV インスタンスのすべてのリージョンのデータを保存していました。
大規模なクラスターをより安定してサポートするために、TiDB v6.6.0 からは、複数の RocksDB インスタンスを使用して TiKVリージョンデータを保存する新しい TiKVstorageエンジンが導入され、各リージョンのデータは個別の RocksDB インスタンスに個別に保存されます。
新しいエンジンは、各 RocksDB インスタンス内のファイルの数とレベルをより適切に制御し、リージョン間のデータ操作の物理的な分離を実現し、より多くのデータの安定した管理をサポートします。これは、パーティショニングを通じて複数の RocksDB インスタンスを管理する TiKV として見ることができます。そのため、この機能は Partitioned Raft KV と呼ばれています。
アプリケーションシナリオ
TiKV クラスターに次の特性がある場合、この機能を使用できます。
- 単一の TiKV インスタンスは、より多くのデータをサポートする必要があります。
- 書き込みリクエストが多いです。
- スケールインおよびスケールアウト操作は頻繁に行われます。
- ワークロードの読み取りおよび書き込みが大幅に増加します。
- TiKV には十分なメモリがあります。
この機能の利点は、書き込みパフォーマンスの向上、スケーリング速度の高速化、および同じハードウェアでサポートされるデータ量の増加です。より大きなクラスター規模もサポートできます。
使用法
Partitioned Raft KV を有効にするには、クラスター作成時に設定項目storage.engine
~ "partitioned-raft-kv"
を設定します。同時に、構成項目rocksdb.write-buffer-flush-oldest-first
とrocksdb.write-buffer-limit
を使用して、 Raft KV を使用するときに RocksDB のメモリ使用量を制御できます。
制限
パーティション化されたRaft KV には次の制限があります。
- EBS ボリューム スナップショット バックアップはまだサポートされていません。
- オンラインの安全でない復元や Titan はまだサポートされていません。
- tikv-ctl コマンドライン ツールの次のサブコマンドはサポートされていません。
unsafe-recover
raw-scan
remove-fail-stores
recreate-region
reset-to-version
- TiFlashにはまだ対応していません。
- クラスターの初期化後は、この機能を有効または無効にすることはできません。