mirror of
https://github.com/MariaDB/server.git
synced 2025-02-04 21:02:17 +01:00
ebb2db5912
Added a new wsrep_mode feature DISALLOW_LOCAL_GTID for this. Nodes can have GTIDs for local transactions in the following scenarios: A DDL statement is executed with wsrep_OSU_method=RSU set. A DML statement writes to a non-InnoDB table. A DML statement writes to an InnoDB table with wsrep_on=OFF set. If user has set wsrep_mode=DISALLOW_LOCAL_GTID these operations produce a error ERROR HY000: Galera replication not supported
104 lines
2.8 KiB
Text
104 lines
2.8 KiB
Text
--source include/galera_cluster.inc
|
|
--source include/have_aria.inc
|
|
#
|
|
# Nodes can have GTIDs for local transactions in the following scenarios:
|
|
#
|
|
# A DDL statement is executed with wsrep_OSU_method=RSU set.
|
|
# A DML statement writes to a non-InnoDB table.
|
|
# A DML statement writes to an InnoDB table with wsrep_on=OFF set.
|
|
#
|
|
call mtr.add_suppression("WSREP: ALTER TABLE isolation failure");
|
|
#
|
|
# A DDL statement is executed with wsrep_OSU_method=RSU set.
|
|
#
|
|
--connection node_1
|
|
CREATE TABLE tab(a int not null primary key) engine=InnoDB;
|
|
CREATE TABLE tab1(a int not null primary key) engine=MyISAM;
|
|
CREATE TABLE tab2(a int not null primary key) engine=Aria;
|
|
CREATE TABLE tab3(a int not null primary key) engine=MEMORY;
|
|
|
|
SET GLOBAL wsrep_mode = DISALLOW_LOCAL_GTID;
|
|
SET SESSION wsrep_OSU_method='RSU';
|
|
|
|
--error ER_GALERA_REPLICATION_NOT_SUPPORTED
|
|
ALTER TABLE tab FORCE;
|
|
|
|
SET SESSiON sql_log_bin=0;
|
|
ALTER TABLE tab FORCE;
|
|
SET SESSION wsrep_OSU_method='TOI';
|
|
#
|
|
# A DML statement writes to an InnoDB table with wsrep_on=OFF set.
|
|
#
|
|
SET SESSION sql_log_bin=1;
|
|
SET SESSION wsrep_on=OFF;
|
|
--error ER_GALERA_REPLICATION_NOT_SUPPORTED
|
|
INSERT INTO tab VALUES (1);
|
|
SET SESSiON sql_log_bin=0;
|
|
INSERT INTO tab VALUES (1);
|
|
SET SESSiON sql_log_bin=1;
|
|
SET SESSION wsrep_on=ON;
|
|
INSERT INTO tab VALUES (2);
|
|
|
|
SELECT * FROM tab;
|
|
--connection node_2
|
|
SELECT * FROM tab;
|
|
#
|
|
# A DML statement writes to a non-InnoDB table.
|
|
#
|
|
--connection node_1
|
|
--error ER_GALERA_REPLICATION_NOT_SUPPORTED
|
|
INSERT INTO tab1 VALUES(1);
|
|
--error ER_GALERA_REPLICATION_NOT_SUPPORTED
|
|
INSERT INTO tab2 VALUES(1);
|
|
--error ER_GALERA_REPLICATION_NOT_SUPPORTED
|
|
INSERT INTO tab3 VALUES(1);
|
|
#
|
|
# Set MyISAM and Aria replication on using TOI
|
|
#
|
|
SET GLOBAL wsrep_mode = "DISALLOW_LOCAL_GTID,REPLICATE_MYISAM,REPLICATE_ARIA";
|
|
INSERT INTO tab1 VALUES(2);
|
|
INSERT INTO tab2 VALUES(2);
|
|
--error ER_GALERA_REPLICATION_NOT_SUPPORTED
|
|
INSERT INTO tab3 VALUES(2);
|
|
SET SESSiON sql_log_bin=0;
|
|
INSERT INTO tab1 VALUES(3);
|
|
INSERT INTO tab2 VALUES(3);
|
|
INSERT INTO tab3 VALUES(3);
|
|
SET SESSION sql_log_bin=1;
|
|
SET SESSION wsrep_on=OFF;
|
|
--error ER_GALERA_REPLICATION_NOT_SUPPORTED
|
|
INSERT INTO tab1 VALUES(4);
|
|
--error ER_GALERA_REPLICATION_NOT_SUPPORTED
|
|
INSERT INTO tab2 VALUES(4);
|
|
--error ER_GALERA_REPLICATION_NOT_SUPPORTED
|
|
INSERT INTO tab3 VALUES(4);
|
|
SET SESSiON sql_log_bin=0;
|
|
INSERT INTO tab1 VALUES(5);
|
|
INSERT INTO tab2 VALUES(5);
|
|
INSERT INTO tab3 VALUES(5);
|
|
SET SESSION wsrep_on=ON;
|
|
INSERT INTO tab1 VALUES(6);
|
|
INSERT INTO tab2 VALUES(6);
|
|
INSERT INTO tab3 VALUES(6);
|
|
|
|
SELECT * FROM tab1;
|
|
SELECT * FROM tab2;
|
|
SELECT * FROM tab3;
|
|
|
|
--connection node_2
|
|
SELECT * FROM tab1;
|
|
SELECT * FROM tab2;
|
|
SELECT * FROM tab3;
|
|
|
|
--connection node_1
|
|
--disable_query_log
|
|
SET SESSION sql_log_bin=DEFAULT;
|
|
SET GLOBAL wsrep_mode=DEFAULT;
|
|
set GLOBAL wsrep_OSU_method=DEFAULT;
|
|
--enable_query_log
|
|
|
|
DROP TABLE tab;
|
|
DROP TABLE tab1;
|
|
DROP TABLE tab2;
|
|
DROP TABLE tab3;
|
|
|