重要
このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください。

Binlogクラスターの操作

このドキュメントでは、次のBinlogクラスタ操作を紹介します。

  • PumpとDrainerノードの状態
  • PumpまたはDrainerプロセスの開始または終了
  • binlogctlツールを使用するか、TiDBでSQL操作を直接実行することによるBinlogクラスタの管理

PumpまたはDrainerの状態

PumpまたはDrainerの状態の説明:

  • online :正常に動作しています
  • pausing :一時停止中
  • paused :停止しました
  • closing :オフラインプロセス中
  • offline :オフラインになっています

ノート:

PumpノードまたはDrainerノードの状態情報は、サービス自体によって維持され、配置Driver(PD)に定期的に更新されます。

PumpまたはDrainerプロセスの開始と終了

Pump

  • 開始:開始すると、 Pumpノードはonline状態のすべてのDrainerノードに通知します。通知が成功すると、 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に更新し、プロセスを終了します。
    • オフライン:binlogctlツールのoffline-pumpコマンドを使用することによってのみ、 Pumpプロセスを閉じることができます。オフライン命令を受信した後、 Pumpノードはその状態をclosingに設定し、binlog書き込み要求の受信を停止します。Pumpノードは、すべてのbinlogデータがDrainerノードによって消費されるまで、 Drainerノードにbinlogを提供し続けます。次に、 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ノードからのbinlogのプルを停止します。すべてのスレッドが安全に終了した後、 Drainerノードはその状態をpausedに設定し、プロセスを終了します。
    • オフライン:binlogctlツールのoffline-drainerコマンドを使用することによってのみ、 Drainerプロセスを閉じることができます。オフライン命令を受信した後、 Drainerノードはその状態をclosingに設定し、 Pumpノードからのbinlogのプルを停止します。すべてのスレッドが安全に終了した後、 Drainerノードはその状態をofflineに更新し、プロセスを終了します。

Drainerの状態を一時停止、閉じる、確認、および変更する方法については、 binlogctlガイドを参照してください。

Drainerを使用してPump/ binlogctlを管理します

binlogctlは、次の機能を備えた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の実行ステータスがTiDBv2.1.7以降のバージョンでサポートされているかどうかを確認します。
  • PumpまたはDrainerのステータスの変更は、TiDBv3.0.0-rc.1以降のバージョンでサポートされています。この機能は、PDに保存されているPumpノードまたはDrainerノードのステータスの変更のみをサポートします。ノードを一時停止または閉じるには、 binlogctlツールを使用します。