mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
MDEV-20119: Implement the --do-domain-ids, --ignore-domain-ids, and --ignore-server-ids options for mysqlbinlog
New Feature: ============ Extend mariadb-binlog command-line tool to allow for filtering events using GTID domain and server ids. The functionality mimics that of a replica server’s DO_DOMAIN_IDS, IGNORE_DOMAIN_IDS, and IGNORE_SERVER_IDS from CHANGE MASTER TO. For completeness, this patch additionally adds the option --do-server-ids as an alias for --server-id, which now accepts a list of server ids instead of a single one. Example usage: mariadb-binlog --do-domain-ids=2,3,4 --do-server-ids=1,3 master-bin.000001 Functional Notes: 1. --do-domain-ids cannot be combined with --ignore-domain-ids 2. --do-server-ids cannot be combined with --ignore-server-ids 3. A domain id filter can be combined with a server id filter 4. When any new filter options are combined with the --gtid-strict-mode option, events from excluded domains/servers are not validated. 5. Domain/server id filters can be combined with GTID ranges (i.e. specifications of --start-position and --stop-position). However, because the --stop-position option implicitly undertakes filtering to only output events within its range of domains, when combined with --do-domain-ids or --ignore-domain-ids, output will consist of the intersection between the filters. Specifically, with --do-domain-ids and --stop-position, only events with domain ids present in both argument lists will be output. Conversely, with --ignore-domain-ids and --stop-position, only events with domain ids present in the --stop-position and absent from the --ignore-domain-ids options will be output. Reviewed By ============ Andrei Elkin <andrei.elkin@mariadb.com>
This commit is contained in:
45
mysql-test/suite/rpl/include/sql_multisource.inc
Normal file
45
mysql-test/suite/rpl/include/sql_multisource.inc
Normal file
@@ -0,0 +1,45 @@
|
||||
# Populate the active connection server with events that come from varying
|
||||
# domain and server ids
|
||||
|
||||
--disable_query_log
|
||||
|
||||
# Save old state
|
||||
let $ORIG_GTID_DOMAIN_ID = `select @@session.gtid_domain_id`;
|
||||
let $ORIG_SERVER_ID = `select @@session.server_id`;
|
||||
|
||||
SET @@session.gtid_domain_id= 0;
|
||||
SET @@session.server_id= 1;
|
||||
CREATE TABLE t1 (a int);
|
||||
|
||||
SET @@session.server_id= 3;
|
||||
CREATE TABLE t2 (a int);
|
||||
INSERT INTO t2 values (3);
|
||||
|
||||
SET @@session.gtid_domain_id= 1;
|
||||
SET @@session.server_id= 1;
|
||||
CREATE TABLE t3 (a int);
|
||||
INSERT INTO t3 values (4);
|
||||
|
||||
SET @@session.server_id= 4;
|
||||
CREATE TABLE t4 (a int);
|
||||
INSERT INTO t4 values (5);
|
||||
|
||||
SET @@session.gtid_domain_id= 0;
|
||||
SET @@session.server_id= 1;
|
||||
INSERT INTO t1 values (1);
|
||||
|
||||
SET @@session.gtid_domain_id= 2;
|
||||
SET @@session.server_id= 1;
|
||||
CREATE TABLE t5 (a int);
|
||||
INSERT INTO t5 values (6);
|
||||
|
||||
SET @@session.gtid_domain_id= 0;
|
||||
SET @@session.server_id= 1;
|
||||
INSERT INTO t1 values (2);
|
||||
|
||||
FLUSH LOGS;
|
||||
|
||||
--eval SET @@session.gtid_domain_id= $ORIG_GTID_DOMAIN_ID
|
||||
--eval SET @@session.server_id= $ORIG_SERVER_ID
|
||||
|
||||
--enable_query_log
|
Reference in New Issue
Block a user