TiDB Binlogクラスタの操作
このドキュメントでは、次の TiDB Binlogクラスター操作について説明します。
- PumpとDrainerノードの状態
- PumpまたはDrainerプロセスの開始または終了
- binlogctl ツールを使用するか、TiDB で SQL 操作を直接実行して、TiDB Binlogクラスターを管理する
PumpまたはDrainerの状態
PumpまたはDrainerの状態の説明:
online
: 通常稼働pausing
: 一時停止中paused
: 停止中closing
: オフライン プロセス中offline
: オフラインです
ノート:
PumpまたはDrainerノードの状態情報は、サービス自体によって維持され、配置Driver(PD) に定期的に更新されます。
PumpまたはDrainerプロセスの開始と終了
Pump
- 開始中: 開始すると、 PumpノードはすべてのDrainerノードに
online
状態で通知します。通知が成功した場合、 Pumpノードはその状態をonline
に設定します。それ以外の場合、 Pumpノードはエラーを報告し、状態をpaused
に設定してプロセスを終了します。 - 終了: Pumpノードは、プロセスが正常に終了する前に
paused
またはoffline
状態に入ります。プロセスが異常終了した場合 (kill -9
コマンド、プロセスpanic、クラッシュが原因)、ノードはまだonline
状態です。- 一時停止:
kill
コマンド (kill -9
ではなく) を使用するか、 Ctrl + Cを押すか、binlogctl ツールでpause-pump
コマンドを使用して、 Pumpプロセスを一時停止できます。一時停止命令を受け取った後、 Pumpノードはその状態をpausing
に設定し、 binlog書き込み要求の受信を停止し、 binlogデータのDrainerノードへの提供を停止します。すべてのスレッドが安全に終了した後、 Pumpノードはその状態をpaused
に更新し、プロセスを終了します。 - オフライン:Pumpプロセスを閉じるには、binlogctl ツールで
offline-pump
コマンドを使用する必要があります。オフライン命令を受信した後、 Pumpノードはその状態をclosing
に設定し、 binlog書き込み要求の受信を停止します。 Pumpノードは、すべてのbinlogデータがDrainerノードによって消費されるまで、 binlog をDrainerノードに提供し続けます。次に、 Pumpノードは状態をoffline
に設定し、プロセスを終了します。
- 一時停止:
Drainer
- 開始: 開始すると、 Drainerノードはその状態を
online
に設定し、offline
状態にないすべてのPumpノードから binlog をプルしようとします。 binlog の取得に失敗した場合は、試行を続けます。 - 終了: Drainerノードは、プロセスが正常に終了する前に
paused
またはoffline
状態に入ります。プロセスが異常終了した場合 (kill -9
、プロセスpanic、クラッシュが原因)、 Drainerノードはまだonline
状態です。- 一時停止:
kill
コマンド (kill -9
ではありません) を使用するか、 Ctrl + Cを押すか、binlogctl ツールでpause-drainer
コマンドを使用して、 Drainerプロセスを一時停止できます。一時停止命令を受け取った後、 Drainerノードはその状態をpausing
に設定し、 Pumpノードからのバイナリログのプルを停止します。すべてのスレッドが安全に終了した後、 Drainerノードはその状態をpaused
に設定し、プロセスを終了します。 - オフライン: Drainerプロセスを閉じるには、binlogctl ツールで
offline-drainer
コマンドを使用する必要があります。オフライン命令を受け取った後、 Drainerノードはその状態をclosing
に設定し、 Pumpノードからのバイナリログのプルを停止します。すべてのスレッドが安全に終了した後、 Drainerノードはその状態をoffline
に更新し、プロセスを終了します。
- 一時停止:
Drainerの状態を一時停止、終了、確認、および変更する方法については、 binlogctl ガイドを参照してください。
binlogctl
使用してPump/ Drainerを管理します
binlogctl
は、次の機能を備えた TiDB Binlogの操作ツールです。
- PumpやDrainerの状態を確認する
- PumpまたはDrainerの一時停止または終了
- PumpやDrainerの異常時の対応
binlogctl
の詳しい使い方はbinlogctl の概要を参照。
SQL ステートメントを使用してPumpまたはDrainerを管理する
binlog関連の状態を表示または変更するには、TiDB で対応する SQL ステートメントを実行します。
binlog が有効になっているかどうかを確認します。
show variables like "log_bin";+---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin | 0 | +---------------+-------+値が
0
の場合、 binlogが有効になります。値が1
の場合、 binlog は無効になります。すべてのPumpノードまたはDrainerノードのステータスを確認します。
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 | +----------|----------------|--------|--------------------|---------------------|異常な状況でPumpまたはDrainerノードの状態を変更する
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ノードが異常な状態にある場合にのみ使用してください。
ノート:
- TiDB v2.1.7 以降のバージョンでbinlog が有効になっていて、 PumpまたはDrainerの実行ステータスがサポートされているかどうかを確認します。
- PumpまたはDrainerのステータスの変更は、TiDB v3.0.0-rc.1 以降のバージョンでサポートされています。この機能は、PD に保存されているPumpまたはDrainerノードのステータスの変更のみをサポートします。ノードを一時停止または閉じるには、
binlogctl
ツールを使用します。