TiDBBinlogクラスタ操作
このドキュメントでは、次の 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状態のままになります。- 一時停止: Pumpプロセスを一時停止するには、 
killコマンド (kill -9ではありません) を使用するか、 Ctrl + Cを押すか、binlogctl ツールでpause-pumpコマンドを使用します。一時停止命令を受信すると、 Pumpノードは状態をpausingに設定し、 binlog書き込み要求の受信を停止し、 Drainerノードへのbinlogデータの提供を停止します。すべてのスレッドが安全に終了すると、 Pumpノードは状態をpausedに更新し、プロセスを終了します。 - オフライン: Pumpプロセスを閉じるには、binlogctl ツールの
offline-pumpコマンドのみを使用します。オフライン命令を受信すると、 Pumpノードは状態をclosingに設定し、 binlog書き込み要求の受信を停止します。Pump ノードは、すべてのbinlogデータがDrainerノードによって消費されるまで、 Drainerノードにbinlog を提供し続けます。その後、 Pumpノードは状態をofflineに設定し、プロセスを終了します。 
 - 一時停止: Pumpプロセスを一時停止するには、 
 
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ノードからの binlog のプルを停止します。すべてのスレッドが安全に終了すると、 Drainerノードは状態をpausedに設定し、プロセスを終了します。 - オフライン: Drainerプロセスを閉じるには、binlogctl ツールの
offline-drainerコマンドを使用する必要があります。オフライン命令を受信すると、 Drainerノードは状態をclosingに設定し、 Pumpノードからの binlog の取得を停止します。すべてのスレッドが安全に終了すると、 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ツールを使用します。