TiDBBinlogクラスターの操作
このドキュメントでは、次のTiDBBinlogクラスタ操作を紹介します。
- ポンプノードとドレイナーノードの状態
- ポンプまたはドレイナープロセスの開始または終了
- binlogctlツールを使用するか、TiDBでSQL操作を直接実行することによるTiDBBinlogクラスタの管理
ポンプまたはドレイナーの状態
ポンプまたはドレイナーの状態の説明:
online
:正常に動作していますpausing
:一時停止中paused
:停止しましたclosing
:オフラインプロセス中offline
:オフラインになっています
ノート:
ポンプノードまたはドレイナーノードの状態情報は、サービス自体によって維持され、配置ドライバー(PD)に定期的に更新されます。
ポンプまたはドレイナープロセスの開始と終了
ポンプ
- 開始:開始すると、ポンプノードは
online
状態のすべてのドレイナーノードに通知します。通知が成功すると、Pumpノードはその状態をonline
に設定します。それ以外の場合、Pumpノードはエラーを報告し、その状態をpaused
に設定して、プロセスを終了します。 - 終了:プロセスが正常に終了する前に、ポンプノードは
paused
またはoffline
の状態になります。プロセスが異常終了した場合(kill -9
コマンド、プロセスパニック、クラッシュが原因)、ノードはonline
状態のままです。- 一時停止:
kill
コマンド(kill -9
ではなく)を使用するか、 Ctrl + Cを押すか、binlogctlツールのpause-pump
コマンドを使用して、Pumpプロセスを一時停止できます。一時停止命令を受信した後、Pumpノードはその状態をpausing
に設定し、binlog書き込み要求の受信を停止し、Drainerノードへのbinlogデータの提供を停止します。すべてのスレッドが安全に終了した後、Pumpノードはその状態をpaused
に更新し、プロセスを終了します。 - オフライン:binlogctlツールの
offline-pump
コマンドを使用することによってのみ、Pumpプロセスを閉じることができます。オフライン命令を受信した後、Pumpノードはその状態をclosing
に設定し、binlog書き込み要求の受信を停止します。 Pumpノードは、すべてのbinlogデータがDrainerノードによって消費されるまで、Drainerノードにbinlogを提供し続けます。次に、Pumpノードはその状態をoffline
に設定し、プロセスを終了します。
- 一時停止:
ドレイナー
- 開始:開始すると、Drainerノードはその状態を
online
に設定し、offline
状態ではないすべてのPumpノードからbinlogをプルしようとします。 binlogの取得に失敗した場合は、試行を続けます。 - 終了:プロセスが正常に終了する前に、Drainerノードは
paused
またはoffline
の状態になります。プロセスが異常終了した場合(kill -9
、プロセスパニック、クラッシュが原因)、Drainerノードはonline
状態のままです。- 一時停止:
kill
コマンド(kill -9
ではなく)を使用するか、 Ctrl + Cを押すか、binlogctlツールのpause-drainer
コマンドを使用して、Drainerプロセスを一時停止できます。一時停止命令を受け取った後、Drainerノードはその状態をpausing
に設定し、Pumpノードからのbinlogのプルを停止します。すべてのスレッドが安全に終了した後、Drainerノードはその状態をpaused
に設定し、プロセスを終了します。 - オフライン:binlogctlツールの
offline-drainer
コマンドを使用することによってのみ、Drainerプロセスを閉じることができます。オフライン命令を受け取った後、Drainerノードはその状態をclosing
に設定し、Pumpノードからのbinlogのプルを停止します。すべてのスレッドが安全に終了した後、Drainerノードはその状態をoffline
に更新し、プロセスを終了します。
- 一時停止:
Drainerの状態を一時停止、閉じる、確認、および変更する方法については、 binlogctlガイドを参照してください。
binlogctlを使用してPump/ binlogctl
を管理します
binlogctl
は、次の機能を備えたTiDBBinlogの操作ツールです。
- ポンプまたはドレイナーの状態を確認する
- ポンプまたはドレイナーの一時停止または閉鎖
- ポンプまたはドレイナーの異常状態への対応
binlogctl
の詳細な使用法については、 binlogctlの概要を参照してください。
SQLステートメントを使用してPumpまたはDrainerを管理する
binlog関連の状態を表示または変更するには、TiDBで対応するSQLステートメントを実行します。
binlogが有効になっているかどうかを確認します。
show variables like "log_bin";+---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin | 0 | +---------------+-------+値が
0
の場合、binlogが有効になります。値が1
の場合、binlogは無効になります。すべてのポンプノードまたはドレイナーノードのステータスを確認します。
show pump status;+--------|----------------|--------|--------------------|---------------------| | NodeID | Address | State | Max_Commit_Ts | Update_Time | +--------|----------------|--------|--------------------|---------------------| | pump1 | 127.0.0.1:8250 | Online | 408553768673342237 | 2019-05-01 00:00:01 | +--------|----------------|--------|--------------------|---------------------| | pump2 | 127.0.0.2:8250 | Online | 408553768673342335 | 2019-05-01 00:00:02 | +--------|----------------|--------|--------------------|---------------------|show drainer status;+----------|----------------|--------|--------------------|---------------------| | NodeID | Address | State | Max_Commit_Ts | Update_Time | +----------|----------------|--------|--------------------|---------------------| | drainer1 | 127.0.0.3:8249 | Online | 408553768673342532 | 2019-05-01 00:00:03 | +----------|----------------|--------|--------------------|---------------------| | drainer2 | 127.0.0.4:8249 | Online | 408553768673345531 | 2019-05-01 00:00:04 | +----------|----------------|--------|--------------------|---------------------|異常な状況でポンプまたはドレイナーノードの状態を変更します
change pump to node_state ='paused' for node_id 'pump1';Query OK, 0 rows affected (0.01 sec)change drainer to node_state ='paused' for node_id 'drainer1';Query OK, 0 rows affected (0.01 sec)上記のSQLステートメントの実行は、binlogctlの
update-pump
またはupdate-drainer
コマンドと同じように機能します。上記のSQLステートメントは、PumpノードまたはDrainerノードが異常な状況にある場合にのみ使用してください。
ノート:
- binlogが有効になっているかどうか、およびポンプまたはドレイナーの実行ステータスがTiDBv2.1.7以降のバージョンでサポートされているかどうかを確認します。
- ポンプまたはドレイナーのステータスの変更は、TiDBv3.0.0-rc.1以降のバージョンでサポートされています。この機能は、PDに保存されているポンプノードまたはドレイナーノードのステータスの変更のみをサポートします。ノードを一時停止または閉じるには、
binlogctl
ツールを使用します。