CHANGE REPLICATION FILTER

更新时间:
复制为 MD 格式

本文介绍如何使用CHANGE REPLICATION FILTER语句修改主从复制链路的过滤配置语法。

语法

CHANGE REPLICATION FILTER option [, option] ... [ channel_option ]
option: {
    REPLICATE_DO_DB = (do_db_list)
  | REPLICATE_IGNORE_DB = (ignore_db_list)
  | REPLICATE_DO_TABLE = (do_table_list)
  | REPLICATE_IGNORE_TABLE = (ignore_table_list)
  | REPLICATE_WILD_DO_TABLE = (wild_do_table_list)
  | REPLICATE_WILD_IGNORE_TABLE = (wile_ignore_table_list)
  | REPLICATE_SKIP_TSO = 'tso_num'
  | REPLICATE_SKIP_UNTIL_TSO = 'tso_num'
  | REPLICATE_ENABLE_DDL = {TRUE|FALSE}
}
channel_option:
    FOR CHANNEL channel

注意事项

  • PolarDB-X5.4.19及以上版本的实例支持该SQL。

  • 执行CHANGE REPLICATION FILTER需要为当前实例的高权限账号。

  • channel_option表示只对名字为 'channel' 的主从复制链路生效,不带channel option表示对该实例所有的主从复制链路生效。

  • 执行上述SQL需要对应生效的主从复制链路处于非运行状态,可先使用STOP SLAVE语句暂停对应的链路。

参数说明

  • REPLICATE_SKIP_TSO:跳过该TSO对应的binlog event,TSO相关介绍请参见分布式事务

  • REPLICATE_SKIP_UNTIL_TSO:跳过该TSO之前所有的binlog event(不包含该TSO)。

  • REPLICATE_ENABLE_DDL:是否同步DDL,默认为TRUE。

  • 以下参数说明请参见CHANGE REPLICATION FILTER

    • REPLICATE_DO_DB

    • REPLICATE_IGNORE_DB

    • REPLICATE_DO_TABLE

    • REPLICATE_IGNORE_TABLE

    • REPLICATE_WILD_DO_TABLE

    • REPLICATE_WILD_IGNORE_TABLE

示例1

执行以下语句,可修改复制链路,只同步库TEST内的变更。

CHANGE REPLICATION FILTER REPLICATE_DO_DB=(TEST);

示例2

TSO获取

执行SHOW BINLOGS EVENTS语句获取对应binlog eventTSO,返回示例如下:

mysql> show binlog events limit 5;
+----------------+-----+-------------+------------+-------------+----------------------------------------------------------------------+
| LOG_NAME       | POS | EVENT_TYPE  | SERVER_ID  | END_LOG_POS | INFO                                                                 |
+----------------+-----+-------------+------------+-------------+----------------------------------------------------------------------+
| binlog.000001  |   4 | Format_desc | 2304845447 |         123 | Server ver: 5.6.29-TDDL-5.4.19-17085013, Binlog ver: 4              |
| binlog.000001  | 123 | Rows_query  | 2304845447 |         206 | CTS::71666906440547697281697755859590852608000000000000000000          |
| binlog.000001  | 206 | Rows_query  | 2304845447 |         289 | CTS::71666906449691280016977558605052190370300000000000000000          |
| binlog.000001  | 289 | Rows_query  | 2304845447 |         372 | CTS::71666906459004457792169775586142376552000000000000000000          |
| binlog.000001  | 372 | Rows_query  | 2304845447 |         455 | CTS::71666906468339758416977558623632834560000000000000000000          |
+----------------+-----+-------------+------------+-------------+----------------------------------------------------------------------+
5 rows in set (0.03 sec)

其中INFO列中以CTS:: 开头的数字串即为该event对应的TSO。

跳过TSO对应的event

执行以下语句,可修改复制链路,跳过TSO:716669064683978758416977558623632834560000000000000000对应的binlog event,即上方示例中POS=372binlog event。

CHANGE REPLICATION FILTER REPLICATE_SKIP_TSO='716669064683978758416977558623632834560000000000000000';

更多内容请参见CHANGE REPLICATION FILTER