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

Drainer

  • 開始: 開始されると、 Drainerノードはその状態をonlineに設定し、状態offlineにないすべてのPumpノードからバイナリログを取得しようとします。バイナリログの取得に失敗した場合は、試行を続けます。
  • 終了: プロセスが正常に終了する前に、 Drainerノードはpausedまたはoffline状態に入ります。プロセスが異常終了した場合 ( kill -9 、プロセスpanic、クラッシュが原因)、 Drainerノードは依然としてonline状態のままです。
    • 一時停止: Drainerプロセスを一時停止するには、 killコマンド ( kill -9ではありません) を使用するか、 Ctrl + Cを押すか、binlogctl ツールでpause-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ノードが異常な状況にある場合にのみ使用してください。

注記:

  • binlog が有効になっているかどうか、およびPumpまたはDrainerの実行ステータスを確認することは、TiDB v2.1.7 以降のバージョンでサポートされています。
  • PumpまたはDrainerのステータスの変更は、TiDB v3.0.0-rc.1 以降のバージョンでサポートされています。この機能は、PD に保存されているPumpまたはDrainerノードのステータスの変更のみをサポートしています。ノードを一時停止または閉じるには、 binlogctlツールを使用します。

このページは役に立ちましたか?