# # Test Galera as a slave to a MariaDB master using GTIDs # # suite/galera/galera_2nodes_as_slave.cnf describes the setup of the nodes # suite/galera/t/galera_as_slave_gtid.cnf has the GTID options # # This test will replicate writes to MyISAM table and check that slave node is able # to apply them. # mysql.gtid_slave_pos table should be defined as innodb engine, original problem # by writes to mysql.gtid_slave_pos, whereas the replicated transaction contained # no innodb writes # --source include/have_innodb.inc --source include/have_log_bin.inc --source include/galera_cluster.inc SELECT @@WSREP_ON; # As node #3 is not a Galera node, and galera_cluster.inc does not open connetion to it # we open the node_3 connection here --connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3 SELECT @@wsrep_on; --connection node_1 # make sure gtid_slave_pos is of innodb engine, mtr does not currently provide that ALTER TABLE mysql.gtid_slave_pos engine = InnoDB; --disable_query_log --eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_SSL_VERIFY_SERVER_CERT=0, MASTER_PORT=$NODE_MYPORT_3; --enable_query_log START SLAVE; --connection node_3 CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=MyISAM; INSERT INTO t1 VALUES(1); SELECT LENGTH(@@global.gtid_binlog_state) > 1; --let $gtid_binlog_state_node1 = `SELECT @@global.gtid_binlog_state;` --connection node_1 --let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1'; --source include/wait_condition.inc --let $wait_condition = SELECT COUNT(*) = 1 FROM t1; --source include/wait_condition.inc SELECT COUNT(*) AS EXPECT_1 FROM t1; --disable_query_log --eval SELECT '$gtid_binlog_state_node1' = @@global.gtid_binlog_state AS gtid_binlog_state_equal; --enable_query_log --connection node_2 --let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1'; --source include/wait_condition.inc --let $wait_condition = SELECT COUNT(*) = 1 FROM t1; --source include/wait_condition.inc SELECT COUNT(*) AS EXPECT_1 FROM t1; --disable_query_log --eval SELECT '$gtid_binlog_state_node1' = @@global.gtid_binlog_state AS gtid_binlog_state_equal; --enable_query_log --echo #cleanup --connection node_3 DROP TABLE t1; --connection node_1 --let $wait_condition = SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1'; --source include/wait_condition.inc --connection node_2 --let $wait_condition = SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1'; --source include/wait_condition.inc --connection node_3 --let $wait_condition = SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1'; --source include/wait_condition.inc RESET MASTER; --connection node_1 STOP SLAVE; RESET SLAVE ALL; SET GLOBAL WSREP_ON=OFF; reset master; SET GLOBAL WSREP_ON=ON; --connection node_2 SET GLOBAL WSREP_ON=OFF; reset master; SET GLOBAL WSREP_ON=ON; --connection node_3 RESET MASTER;