mirror of
https://github.com/MariaDB/server.git
synced 2025-02-04 21:02:17 +01:00
c132bce1a1
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>
45 lines
1 KiB
SQL
45 lines
1 KiB
SQL
# 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
|