LoginSignup
0
0

More than 1 year has passed since last update.

TiDB 検証ライフ(5-ディスク障害検証の準備)

Last updated at Posted at 2021-12-07

ディスク障害時、TiDBがどこまで対処できるか検証します

まずはTiDBストレージのコンセプトを理解しないと

ストレージレイヤーのアーキテクチャー

RowベースのTiKVクラスタと、ColumnベースのTiFlashクラスタにより構成されています。
TiKVはKey-Valueのストレージモデルを採用しているようです。
データ保存単位はRegionとStore(これが何かは後で調べようっと)。

image.png

※ 引用: https://docs.pingcap.com/tidb/stable/tidb-storage

データはどのように保存されるか

キーワードが二つありました。

  • RocksDBをローカルストレージとして採用
    • RocksDBは、Facebook社から提供されたOSSのスタンドアロンストレージエンジン
  • Raftプロトコルにて複数マシンでレプリケーションを構成
    • Raftアルゴリズムを使ってレプリカ管理など行い、マシン障害に備える

image.png

※ 引用: https://docs.pingcap.com/tidb/stable/tidb-storage

Region

Regionの中身はこんな感じのようです。

image.png

※ 引用: https://docs.pingcap.com/tidb/stable/tidb-storage

分散ACIDトランザクション

TiKVのトランザクションはGoogleのBigTableでも採用されているPercolatorモデルを採用しているとのことです。
これは興味深いので、別途検証してみようと思います。

TiDBストレージの論理構造はわかったが実態はどうよ

実際、TiKVプロセスが開いているファイルやらを確認してみました。

DockerのコンテナIDを確認

$ docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED      STATUS          PORTS                       NAMES
17818ffab074   kindest/node:v1.21.1   "/usr/local/bin/entr…"   3 days ago   Up 10 minutes   127.0.0.1:50444->6443/tcp   kind-control-plane

コンテナIDを指定しログイン

$ docker exec -it 17818ffab074 /bin/bash

lsofコマンドをインストール

root@kind-control-plane:/# apt-get update
root@kind-control-plane:/# apt-get install lsof

tikv-serverのプロセスIDを確認

root@kind-control-plane:/# ps -ef | grep tikv-server | grep -v grep
root        2054    1600  4 13:09 ?        00:00:30 /tikv-server --pd=http://basic-pd:2379 --advertise-addr=basic-tikv-0.basic-tikv-peer.tidb-cluster.svc:20160 --addr=0.0.0.0:20160 --status-addr=0.0.0.0:20180 --advertise-status-addr=basic-tikv-0.basic-tikv-peer.tidb-cluster.svc:20180 --data-dir=/var/lib/tikv --capacity=0 --config=/etc/tikv/tikv.toml

上記プロセスIDを指定しオープンされているファイルを確認

TiDBストレージのディレクトリやファイル構成がなんとなく見えてきました。

  • tikv-server: サイズが大きいのでこれがコア部?
  • /var/lib/tikv/rocksdb.info: RocksDBの情報がここに記載されている?
  • /var/lib/tikv/raftdb.info: Raft関連情報がここに記載されている?
  • /var/lib/tikv/raft: MANIFEST、LOCK、.sst, .log などのファイル存在
  • /var/lib/tikv/db: MANIFEST、LOCK、.sst, .log などのファイル存在
root@kind-control-plane:/# lsof -p 2054 | egrep 'REG|DIR'
tikv-serv 2054 root  cwd       DIR  0,442      4096 3148202 /
tikv-serv 2054 root  rtd       DIR  0,442      4096 3148202 /
tikv-serv 2054 root  txt       REG  0,442 210685000 3277893 /tikv-server
tikv-serv 2054 root  mem       REG  254,1           3277893 /tikv-server (stat: No such file or directory)
tikv-serv 2054 root  mem       REG  254,1           3278505 /usr/glibc-compat/lib/libresolv.so.2 (stat: No such file or directory)
tikv-serv 2054 root  mem       REG  254,1           3278492 /usr/glibc-compat/lib/libnss_dns.so.2 (stat: No such file or directory)
tikv-serv 2054 root  mem       REG  254,1           3278495 /usr/glibc-compat/lib/libnss_files.so.2 (stat: No such file or directory)
tikv-serv 2054 root  mem       REG  254,1           3278091 /lib/ld-musl-x86_64.so.1 (stat: No such file or directory)
tikv-serv 2054 root  mem       REG  254,1           3278468 /usr/glibc-compat/lib/libc.so.6 (stat: No such file or directory)
tikv-serv 2054 root  mem       REG  254,1           3278477 /usr/glibc-compat/lib/libm.so.6 (stat: No such file or directory)
tikv-serv 2054 root  mem       REG  254,1           3278508 /usr/glibc-compat/lib/librt.so.1 (stat: No such file or directory)
tikv-serv 2054 root  mem       REG  254,1           3278527 /usr/lib/libgcc_s.so.1 (stat: No such file or directory)
tikv-serv 2054 root  mem       REG  254,1           3278502 /usr/glibc-compat/lib/libpthread.so.0 (stat: No such file or directory)
tikv-serv 2054 root  mem       REG  254,1           3278474 /usr/glibc-compat/lib/libdl.so.2 (stat: No such file or directory)
tikv-serv 2054 root  mem       REG  254,1           3278458 /usr/glibc-compat/lib/ld-linux-x86-64.so.2 (stat: No such file or directory)
tikv-serv 2054 root    3w      REG  254,1    678326 2756881 /var/lib/tikv/rocksdb.info
tikv-serv 2054 root    4w      REG  254,1    318742 2756880 /var/lib/tikv/raftdb.info
tikv-serv 2054 root   21wW     REG  0,442         0 3281684 /tmp/0_TIKV_LOCK_FILES/0.0.0.0_20160
tikv-serv 2054 root   22wW     REG  254,1         0 2757057 /var/lib/tikv/LOCK
tikv-serv 2054 root   23r      DIR  254,1      4096 2757055 /var/lib/tikv/raft
tikv-serv 2054 root   24uW     REG  254,1         0 2757058 /var/lib/tikv/raft/LOCK
tikv-serv 2054 root   25r      REG  254,1     10930 2756875 /var/lib/tikv/raft/000007.sst
tikv-serv 2054 root   26r      REG  254,1     96153 2757039 /var/lib/tikv/raft/000004.sst
tikv-serv 2054 root   27r      DIR  254,1      4096 2757055 /var/lib/tikv/raft
tikv-serv 2054 root   28r      REG  254,1     13329 2756872 /var/lib/tikv/raft/000010.sst
tikv-serv 2054 root   29w      REG  254,1       231 2756873 /var/lib/tikv/raft/MANIFEST-000011
tikv-serv 2054 root   30w      REG  254,1     50729 2756877 /var/lib/tikv/raft/000012.log
tikv-serv 2054 root   31r      DIR  254,1      4096 2757070 /var/lib/tikv/db
tikv-serv 2054 root   32uW     REG  254,1         0 2757071 /var/lib/tikv/db/LOCK
tikv-serv 2054 root   33r      REG  254,1    570495 2757224 /var/lib/tikv/db/000012.sst
tikv-serv 2054 root   34r      REG  254,1     17583 2756908 /var/lib/tikv/db/000023.sst
tikv-serv 2054 root   35r      REG  254,1    137932 2757227 /var/lib/tikv/db/000015.sst
tikv-serv 2054 root   37r      DIR  254,1      4096 2757070 /var/lib/tikv/db
tikv-serv 2054 root   38r      DIR  254,1      4096 2757070 /var/lib/tikv/db
tikv-serv 2054 root   39r      DIR  254,1      4096 2757070 /var/lib/tikv/db
tikv-serv 2054 root   40r      DIR  254,1      4096 2757070 /var/lib/tikv/db
tikv-serv 2054 root   41w      REG  254,1      1037 2756878 /var/lib/tikv/db/MANIFEST-000030
tikv-serv 2054 root   43r      REG  254,1     23367 2757256 /var/lib/tikv/db/000032.sst
tikv-serv 2054 root   45w      REG  254,1     31332 2757258 /var/lib/tikv/db/000034.log
tikv-serv 2054 root   46r      REG  254,1      3401 2756910 /var/lib/tikv/db/000037.sst

終わりに

TiDBストレージ検証の準備として、関連構成を確認できました。
各ファイルの機能など詳細まで理解できていませんが、徐々に理解を深めていきます。
次回は取り敢えず、データ破壊しどうなるか見てみます。お楽しみに。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0