mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-30 02:16:32 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			195 lines
		
	
	
	
		
			5.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			195 lines
		
	
	
	
		
			5.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| # This file provides the structure to run a single test that ensures the
 | |
| # mariadb-binlog command line tool is consistent with replicas for event
 | |
| # filtering. The test is configured using the following input parameters, where
 | |
| # each is nullable (i.e. it will not be used to configure mariadb-binlog or
 | |
| # the replica).
 | |
| #
 | |
| # param $do_domain_ids     : A list of domain ids to include in replication
 | |
| # param $ignore_domain_ids : A list of domain ids to exclude from replication
 | |
| # param $ignore_server_ids : A list of server ids to exclude from replication
 | |
| # param $start_position    : The GTID positions to begin replication from in
 | |
| #                            the specified domains
 | |
| # param $stop_position     : The GTID positions that mark the end of an event
 | |
| #                            stream in a particular domain
 | |
| #
 | |
| # param $con1              : The connection name of the primary server
 | |
| # param $con2              : The connection name of the replica server
 | |
| # param $strict_mode       : Uses input and checks for out of order GTIDs
 | |
| # param $strict_mode_err   : A boolean that provides expectations for strict
 | |
| #                            mode to error
 | |
| # param $slave_sql_errno   : Expected error number of the slave SQL thread
 | |
| 
 | |
| 
 | |
| --let $include_filename= mysqlbinlog_slave_consistency.inc
 | |
| --source include/begin_include_file.inc
 | |
| 
 | |
| --enable_query_log
 | |
| 
 | |
| if (!$con1)
 | |
| {
 | |
|     --let $con1=master
 | |
| }
 | |
| if (!$con2)
 | |
| {
 | |
|     --let $con2=slave
 | |
| }
 | |
| 
 | |
| if (!$strict_mode)
 | |
| {
 | |
|     --connection $con2
 | |
|     set @@global.gtid_strict_mode=0;
 | |
|     --let $sql_input_file=include/sql_multisource.inc
 | |
| }
 | |
| 
 | |
| if ($strict_mode)
 | |
| {
 | |
|     --connection $con2
 | |
|     set @@global.gtid_strict_mode=1;
 | |
|     --let $sql_input_file=include/sql_out_of_order_gtid.inc
 | |
| }
 | |
| 
 | |
| --connection $con2
 | |
| --source include/stop_slave.inc
 | |
| 
 | |
| --connection $con1
 | |
| --echo # Populating $con1 data
 | |
| --source $sql_input_file
 | |
| --source include/save_master_gtid.inc
 | |
| 
 | |
| --let $MYSQLD_DATADIR=`select @@datadir`
 | |
| --let $MYSQLBINLOG_STDERR=$MYSQLD_DATADIR/mysqlbinlog_stderr.out
 | |
| --let BINLOG_FILENAME= query_get_value(SHOW BINARY LOGS, Log_name, 1)
 | |
| --let BINLOG_FILE_PARAM= $MYSQLD_DATADIR/$BINLOG_FILENAME.orig
 | |
| --copy_file $MYSQLD_DATADIR/$BINLOG_FILENAME $BINLOG_FILE_PARAM
 | |
| 
 | |
| --connection $con2
 | |
| --let $msbl_args=
 | |
| if (`SELECT strcmp("$start_position","") != 0`)
 | |
| {
 | |
|     eval set global gtid_slave_pos="$start_position";
 | |
|     --let $msbl_args= $msbl_args --start-position=$start_position
 | |
| }
 | |
| 
 | |
| --let $cm_args= MASTER_USE_GTID=slave_pos
 | |
| if (`SELECT strcmp("$do_domain_ids","") != 0`)
 | |
| {
 | |
|     --let $cm_args= $cm_args, DO_DOMAIN_IDS=($do_domain_ids)
 | |
|     --let $msbl_args= $msbl_args --do-domain-ids=$do_domain_ids
 | |
| }
 | |
| if (`SELECT strcmp("$ignore_domain_ids","") != 0`)
 | |
| {
 | |
|     --let $cm_args= $cm_args, IGNORE_DOMAIN_IDS=($ignore_domain_ids)
 | |
|     --let $msbl_args= $msbl_args --ignore-domain-ids=$ignore_domain_ids
 | |
| }
 | |
| if (`SELECT strcmp("$ignore_server_ids","") != 0`)
 | |
| {
 | |
|     --let $cm_args= $cm_args, IGNORE_SERVER_IDS=($ignore_server_ids)
 | |
|     --let $msbl_args= $msbl_args --ignore-server-ids=$ignore_server_ids
 | |
| }
 | |
| if ($strict_mode)
 | |
| {
 | |
|     --let $msbl_args= $msbl_args --gtid-strict-mode
 | |
| }
 | |
| eval CHANGE MASTER TO $cm_args;
 | |
| 
 | |
| --let $start_slave_args=
 | |
| if (`SELECT strcmp("$stop_position","") != 0`)
 | |
| {
 | |
|     --let $start_slave_args= UNTIL master_gtid_pos="$stop_position"
 | |
|     --let $msbl_args= $msbl_args --stop-position=$stop_position
 | |
| }
 | |
| 
 | |
| eval START SLAVE $start_slave_args;
 | |
| 
 | |
| if ($slave_sql_errno)
 | |
| {
 | |
|     --echo # $con2 SQL Thread error expected - waiting for errno $slave_sql_errno
 | |
|     --source include/wait_for_slave_sql_error.inc
 | |
| }
 | |
| 
 | |
| # If we are not expecting an error, wait for con2 to catch up
 | |
| if (!$slave_sql_errno)
 | |
| {
 | |
|     --echo # No $con2 error expecting - waiting for $con2 to catch up to $con1
 | |
| 
 | |
|     # Stop position was not specified
 | |
|     if (`SELECT strcmp("$stop_position","") = 0`)
 | |
|     {
 | |
|         --source include/sync_with_master_gtid.inc
 | |
|     }
 | |
| 
 | |
|     # Stop position was specified
 | |
|     if (`SELECT strcmp("$stop_position","") != 0`)
 | |
|     {
 | |
|         --echo # Because there is a stop position we wait for all events to process
 | |
|         --echo # and $con2 to automatically stop
 | |
|         --source include/wait_for_slave_to_stop.inc
 | |
|     }
 | |
| }
 | |
| 
 | |
| --echo # Stop $con2 so it stops receiving $con1 events.
 | |
| --let $rpl_allow_error= 1
 | |
| --source include/stop_slave.inc
 | |
| 
 | |
| --connection $con1
 | |
| DROP TABLE IF EXISTS t1, t2, t3, t4, t5;
 | |
| RESET MASTER;
 | |
| --echo # MYSQL_BINLOG BINLOG_FILE_PARAM $msbl_args 2> MYSQLBINLOG_STDERR | MYSQL
 | |
| --exec $MYSQL_BINLOG $BINLOG_FILE_PARAM $msbl_args 2> $MYSQLBINLOG_STDERR | $MYSQL
 | |
| 
 | |
| --source include/rpl_check_table_consistency.inc
 | |
| 
 | |
| if ($strict_mode)
 | |
| {
 | |
|     --echo # Strict mode enabled - checking mysqlbinlog error output for out
 | |
|     --echo #                       of order GTIDs
 | |
|     --let SEARCH_FILE=$MYSQLBINLOG_STDERR
 | |
|     --let SEARCH_PATTERN=Found out of order GTID
 | |
|     if ($strict_mode_err)
 | |
|     {
 | |
|         --echo # Expecting to find out of order GTID error..
 | |
|     }
 | |
|     if (!$strict_mode_err)
 | |
|     {
 | |
|         --echo # Not expecting to find out of order GTID error..
 | |
|     }
 | |
|     --source include/search_pattern_in_file.inc
 | |
| }
 | |
| 
 | |
| --echo # Test finished - resetting $con1 and $con2..
 | |
| --connection $con2
 | |
| RESET SLAVE;
 | |
| RESET MASTER;
 | |
| set global gtid_slave_pos="";
 | |
| CHANGE MASTER TO DO_DOMAIN_IDS=(), IGNORE_DOMAIN_IDS=(), IGNORE_SERVER_IDS=();
 | |
| 
 | |
| --connection $con1
 | |
| RESET MASTER;
 | |
| DROP TABLE IF EXISTS t1, t2, t3, t4, t5;
 | |
| --source include/save_master_gtid.inc
 | |
| 
 | |
| --connection $con2
 | |
| --source include/start_slave.inc
 | |
| --source include/wait_for_slave_to_start.inc
 | |
| --source include/sync_with_master_gtid.inc
 | |
| --source include/stop_slave.inc
 | |
| RESET SLAVE;
 | |
| set global gtid_slave_pos="";
 | |
| RESET MASTER;
 | |
| 
 | |
| --connection $con1
 | |
| RESET MASTER;
 | |
| 
 | |
| --connection $con2
 | |
| if ($strict_mode)
 | |
| {
 | |
|     set @@global.gtid_strict_mode=0;
 | |
| }
 | |
| --source include/start_slave.inc
 | |
| 
 | |
| --connection $con1
 | |
| --remove_file $BINLOG_FILE_PARAM
 | |
| --remove_file $MYSQLBINLOG_STDERR
 | |
| 
 | |
| --let $include_filename= mysqlbinlog_slave_consistency.inc
 | |
| --source include/end_include_file.inc
 | 
