164 lines
4.7 KiB
Plaintext
164 lines
4.7 KiB
Plaintext
##############################################################################
|
|
# This test checks the basic functionality of replication with Xplugin setup.
|
|
#
|
|
# NOTE : All queries will run through mysqlx plugin using MYSQLXTEST --ssl-mode=REQUIRED.
|
|
#
|
|
# Steps involved in this test :
|
|
# 0. This test requires 2 servers.
|
|
# 1. Set up master and slave servers.
|
|
# 2. Start the slave server.
|
|
# 3. Perform ddl and dml operations on master and slave servers.
|
|
# a) master : Create table T1 and perform ddl on T1.
|
|
# b) slave : Create table T2 and perform ddl on T1 & T2.
|
|
# 4. Assert for values on on tables from slave server.
|
|
# 5. Stop slave through mysqlx.
|
|
# 6. uninstall mysqlx plugin on both master and slave servers.
|
|
# 7. clean-up
|
|
##############################################################################
|
|
|
|
--source include/have_mysqlx_plugin.inc
|
|
|
|
--let $rpl_skip_start_slave= 1
|
|
--source include/master-slave.inc
|
|
|
|
CALL mtr.add_suppression("Statement is unsafe because it is being used inside a XA transaction");
|
|
|
|
# Install Mysqlx plugin on both master and slave servers.
|
|
|
|
--source include/rpl_connection_master.inc
|
|
--source include/xplugin_wait_for_interfaces.inc
|
|
|
|
--source include/rpl_connection_slave.inc
|
|
--source include/xplugin_wait_for_interfaces.inc
|
|
|
|
# File for starting slave through X-protocol
|
|
|
|
--write_file $MYSQL_TMP_DIR/start_slave.tmp
|
|
-->sql
|
|
CHANGE MASTER TO MASTER_HOST= '127.0.0.1', MASTER_USER= 'root';
|
|
START SLAVE;
|
|
-->endsql
|
|
EOF
|
|
|
|
# Starting the slave through mysqlx
|
|
--echo Starting the slave server
|
|
--exec $MYSQLXTEST --ssl-mode=REQUIRED -u root --port=$SLAVE_X_MYPORT --file=$MYSQL_TMP_DIR/start_slave.tmp 2>&1
|
|
|
|
# Temp file for performing ddl and dml on master
|
|
|
|
--source include/rpl_connection_master.inc
|
|
--write_file $MYSQL_TMP_DIR/ddl_dml_on_master.tmp
|
|
-->sql
|
|
USE test;
|
|
CREATE TABLE T1 (C1 INT PRIMARY KEY, C2 INT );
|
|
|
|
XA START 'xstatement1';
|
|
INSERT INTO T1 VALUES (1,12);
|
|
INSERT INTO T1 VALUES (2,1234);
|
|
INSERT INTO T1 VALUES (3,98765);
|
|
UPDATE T1 SET C2 = C2 - 10;
|
|
XA END 'xstatement1';
|
|
XA PREPARE 'xstatement1';
|
|
XA COMMIT 'xstatement1';
|
|
|
|
DELETE FROM T1 WHERE C2 = 0;
|
|
-->endsql
|
|
EOF
|
|
|
|
--disable_result_log
|
|
--exec $MYSQLXTEST --ssl-mode=REQUIRED -u root --port=$MASTER_X_MYPORT --file=$MYSQL_TMP_DIR/ddl_dml_on_master.tmp 2>&1
|
|
--enable_result_log
|
|
|
|
# Wait Until slave is in sync with master
|
|
|
|
--source include/sync_slave_sql_with_master.inc
|
|
|
|
# Temp file for performing ddl and dml on slave
|
|
|
|
--write_file $MYSQL_TMP_DIR/ddl_dml_on_slave.tmp
|
|
-->sql
|
|
USE test;
|
|
CREATE TABLE T2 (C1 CHAR(20) PRIMARY KEY, C2 INT );
|
|
INSERT INTO T2 VALUES ('ABC',23);
|
|
UPDATE T2 SET C2 = C2 + 27;
|
|
INSERT INTO T1 VALUES (4,34);
|
|
INSERT INTO T2 VALUES ('ABCDEF',23);
|
|
INSERT INTO T1 VALUES (5,1234);
|
|
INSERT INTO T2 VALUES ('ABCDEFGHIJ',23);
|
|
DELETE FROM T2 WHERE C1 = 'ABC';
|
|
INSERT INTO T2 VALUES ('XYZ',23);
|
|
UPDATE T2 SET C1 = 'ABC' WHERE C1 ='XYZ';
|
|
-->endsql
|
|
EOF
|
|
|
|
--exec $MYSQLXTEST --ssl-mode=REQUIRED -u root --port=$SLAVE_X_MYPORT --file=$MYSQL_TMP_DIR/ddl_dml_on_slave.tmp 2>&1
|
|
|
|
# Asserts for values on each table.
|
|
|
|
--write_file $MYSQL_TMP_DIR/assert.tmp
|
|
|
|
-->echo Checking the value on T1
|
|
-->wait_for 2 SELECT C2 FROM test.T1 WHERE C1=1
|
|
|
|
-->echo Checking the value on T2
|
|
-->wait_for 23 SELECT C2 FROM test.T2 WHERE C1="ABC"
|
|
EOF
|
|
|
|
--exec $MYSQLXTEST --ssl-mode=REQUIRED -u root --port=$SLAVE_X_MYPORT --file=$MYSQL_TMP_DIR/assert.tmp 2>&1
|
|
|
|
|
|
# Temp for drop table on slave.
|
|
--write_file $MYSQL_TMP_DIR/delete_tables_slave.tmp
|
|
-->sql
|
|
USE test;
|
|
DROP TABLE T2;
|
|
-->endsql
|
|
EOF
|
|
|
|
# Deleting second table on slave.
|
|
--exec $MYSQLXTEST --ssl-mode=REQUIRED -u root --port=$SLAVE_X_MYPORT --file=$MYSQL_TMP_DIR/delete_tables_slave.tmp 2>&1
|
|
|
|
# Temp for drop table.
|
|
--write_file $MYSQL_TMP_DIR/delete_tables.tmp
|
|
-->sql
|
|
USE test;
|
|
DROP TABLE T1;
|
|
-->endsql
|
|
EOF
|
|
|
|
--source include/rpl_connection_master.inc
|
|
# Deleting table
|
|
--exec $MYSQLXTEST --ssl-mode=REQUIRED -u root --port=$MASTER_X_MYPORT --file=$MYSQL_TMP_DIR/delete_tables.tmp 2>&1
|
|
|
|
--source include/sync_slave_sql_with_master.inc
|
|
|
|
# Creating temp file to stop slave.
|
|
--write_file $MYSQL_TMP_DIR/stop_slave.tmp
|
|
-->stmtsql STOP SLAVE;
|
|
-->recvresult
|
|
EOF
|
|
|
|
# Stopping slave
|
|
--echo Stopping slave
|
|
--exec $MYSQLXTEST --ssl-mode=REQUIRED -u root --port=$SLAVE_X_MYPORT --file=$MYSQL_TMP_DIR/stop_slave.tmp 2>&1
|
|
|
|
|
|
--source include/rpl_connection_master.inc
|
|
|
|
--source include/rpl_connection_slave.inc
|
|
|
|
# clean-up
|
|
--remove_file $MYSQL_TMP_DIR/start_slave.tmp
|
|
--remove_file $MYSQL_TMP_DIR/ddl_dml_on_master.tmp
|
|
--remove_file $MYSQL_TMP_DIR/ddl_dml_on_slave.tmp
|
|
--remove_file $MYSQL_TMP_DIR/delete_tables.tmp
|
|
--remove_file $MYSQL_TMP_DIR/delete_tables_slave.tmp
|
|
--remove_file $MYSQL_TMP_DIR/assert.tmp
|
|
--remove_file $MYSQL_TMP_DIR/stop_slave.tmp
|
|
|
|
--source include/start_slave.inc
|
|
--source include/rpl_end.inc
|
|
|
|
--connection master
|
|
--source suite/xengine/include/check_xengine_log_error.inc
|