Sign In Try Free

TiDB Binlog Cluster Operations

This document introduces the following TiDB Binlog cluster operations:

  • 泵的状态和排水器节点
  • Starting or exiting a Pump or Drainer process
  • Managing the TiDB Binlog cluster by using the binlogctl tool or by directly performing SQL operations in TiDB

Pump or Drainer state

Pump or Drainer state description:

  • online: running normally
  • pausing: in the pausing process
  • paused: has been stopped
  • closing: in the offline process
  • offline: has been offline

Starting and exiting a Pump or Drainer process

Pump

  • Starting: When started, the Pump node notifies all Drainer nodes in theonlinestate. If the notification is successful, the Pump node sets its state toonline. Otherwise, the Pump node reports an error, sets its state topausedand exits the process.
  • Exiting: The Pump node enters thepausedorofflinestate before the process is exited normally; if the process is exited abnormally (caused by thekill -9command, process panic, crash), the node is still in theonlinestate.
    • Pause: You can pause a Pump process by using thekillcommand (notkill -9), pressingCtrl+Cor using thepause-pumpcommand in the binlogctl tool. After receiving the pause instruction, the Pump node sets its state topausing, stops receiving binlog write requests and stops providing binlog data to Drainer nodes. After all threads are safely exited, the Pump node updates its state topausedand exits the process.
    • Offline: You can close a Pump process only by using theoffline-pumpcommand in the binlogctl tool. After receiving the offline instruction, the Pump node sets its state toclosingand stops receiving the binlog write requests. The Pump node continues providing binlog to Drainer nodes until all binlog data is consumed by Drainer nodes. Then, the Pump node sets its state toofflineand exits the process.

Drainer

  • Starting: When started, the Drainer node sets its state toonlineand tries to pull binlogs from all Pump nodes which are not in theofflinestate. If it fails to get the binlogs, it keeps trying.
  • Exiting: The Drainer node enters thepausedorofflinestate before the process is exited normally; if the process is exited abnormally (caused bykill -9, process panic, crash), the Drainer node is still in theonlinestate.
    • Pause: You can pause a Drainer process by using thekillcommand (notkill -9), pressingCtrl+Cor using thepause-drainercommand in the binlogctl tool. After receiving the pause instruction, the Drainer node sets its state topausingand stops pulling binlogs from Pump nodes. After all threads are safely exited, the Drainer node sets its state topausedand exits the process.
    • Offline: You can close a Drainer process only by using theoffline-drainercommand in the binlogctl tool. After receiving the offline instruction, the Drainer node sets its state toclosingand stops pulling binlogs from Pump nodes. After all threads are safely exited, the Drainer node updates its state toofflineand exits the process.

For how to pause, close, check, and modify the state of Drainer, see thebinlogctl guide.

Usebinlogctlto manage Pump/Drainer

binlogctlis an operations tool for TiDB Binlog with the following features:

  • Checking the state of Pump or Drainer
  • Pausing or closing Pump or Drainer
  • Handling the abnormal state of Pump or Drainer

For detailed usage ofbinlogctl, refer tobinlogctl overview.

Use SQL statements to manage Pump or Drainer

To view or modify binlog related states, execute corresponding SQL statements in TiDB.

  • Check whether binlog is enabled:

    
                    
    showvariableslike"log_bin";
    
                    
    +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin | 0 | +---------------+-------+

    When the Value is0, binlog is enabled. When the Value is1, binlog is disabled.

  • Check the status of all the Pump or Drainer nodes:

    
                    
    showpump 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 | +--------|----------------|--------|--------------------|---------------------|
    
                    
    showdrainer 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 | +----------|----------------|--------|--------------------|---------------------|
  • Modify the state of a Pump or Drainer node in abnormal situations

    
                    
    change pumptonode_state= 'paused' fornode_id'pump1';
    
                    
    Query OK, 0 rows affected (0.01 sec)
    
                    
    change drainertonode_state= 'paused' fornode_id'drainer1';
    
                    
    Query OK, 0 rows affected (0.01 sec)

    Executing the above SQL statements works the same as theupdate-pumporupdate-drainercommands in binlogctl. Use the above SQL statementsonlywhen the Pump or Drainer node is in abnormal situations.

Download PDF Request docs changes Ask questions on Discord
Playground
New
One-stop & interactive experience of TiDB's capabilities WITHOUT registration.
Was this page helpful?
Products
TiDB
TiDB Dedicated
TiDB Serverless
Pricing
Get Demo
Get Started
©2023PingCAP. All Rights Reserved.