mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-30 04:26:45 +03:00 
			
		
		
		
	mysql-test/t/ndb_alter_table.test: Remove file that the test leaves behind mysql-test/t/partition.test: Remove file that the other tests leaves behind mysql-test/t/rpl_ndb_bank.test: Remove file that the test leaves behind mysql-test/t/rpl_ndb_dd_advance.test: Remove file that the test leaves behind
		
			
				
	
	
		
			182 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			182 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #
 | |
| # Currently this test only runs in the source tree with the 
 | |
| # ndb/test programs compiled.
 | |
| # invoke with:  ./mysql-test-run --ndb-extra-test --do-test=rpl_ndb_bank
 | |
| #
 | |
| # 1. start a "bank" application running on the master cluster
 | |
| # 2. perform online sync of slave
 | |
| # 3. periodically check consistency of slave
 | |
| # 4. stop the bank application
 | |
| # 5. check that the slave and master BANK databases are the same
 | |
| #
 | |
|  
 | |
| --source include/have_ndb.inc
 | |
| --source include/have_ndb_extra.inc
 | |
| --source include/have_binlog_format_row.inc
 | |
| --source include/master-slave.inc
 | |
| 
 | |
| # kill any trailing processes
 | |
| --system killall lt-bankTransactionMaker lt-bankTimer lt-bankMakeGL || true
 | |
| 
 | |
| --disable_warnings
 | |
| # initialize master
 | |
| --connection master
 | |
| CREATE DATABASE IF NOT EXISTS BANK;
 | |
| DROP DATABASE BANK;
 | |
| CREATE DATABASE BANK default charset=latin1 default collate=latin1_bin;
 | |
| --enable_warnings
 | |
| 
 | |
| #
 | |
| # These tables should correspond to the table definitions in
 | |
| # storage/ndb/test/src/NDBT_Tables.cpp
 | |
| #
 | |
| --connection master
 | |
| USE BANK;
 | |
| CREATE TABLE GL ( TIME BIGINT UNSIGNED NOT NULL,
 | |
|                   ACCOUNT_TYPE INT UNSIGNED NOT NULL,
 | |
|                   BALANCE INT UNSIGNED NOT NULL,
 | |
|                   DEPOSIT_COUNT INT UNSIGNED NOT NULL,
 | |
|                   DEPOSIT_SUM INT UNSIGNED NOT NULL,
 | |
|                   WITHDRAWAL_COUNT INT UNSIGNED NOT NULL,
 | |
|                   WITHDRAWAL_SUM INT UNSIGNED NOT NULL,
 | |
|                   PURGED INT UNSIGNED NOT NULL,
 | |
|                   PRIMARY KEY USING HASH (TIME,ACCOUNT_TYPE))
 | |
|    ENGINE = NDB;
 | |
| 
 | |
| CREATE TABLE ACCOUNT ( ACCOUNT_ID INT UNSIGNED NOT NULL,
 | |
|                        OWNER INT UNSIGNED NOT NULL,
 | |
|                        BALANCE INT UNSIGNED NOT NULL,
 | |
|                        ACCOUNT_TYPE INT UNSIGNED NOT NULL,
 | |
|                        PRIMARY KEY USING HASH (ACCOUNT_ID))
 | |
|    ENGINE = NDB;
 | |
| 
 | |
| CREATE TABLE TRANSACTION ( TRANSACTION_ID BIGINT UNSIGNED NOT NULL,
 | |
|                            ACCOUNT INT UNSIGNED NOT NULL,
 | |
|                            ACCOUNT_TYPE INT UNSIGNED NOT NULL,
 | |
|                            OTHER_ACCOUNT INT UNSIGNED NOT NULL,
 | |
|                            TRANSACTION_TYPE INT UNSIGNED NOT NULL,
 | |
|                            TIME BIGINT UNSIGNED NOT NULL,
 | |
|                            AMOUNT INT UNSIGNED NOT NULL,
 | |
|                            PRIMARY KEY USING HASH (TRANSACTION_ID,ACCOUNT))
 | |
|    ENGINE = NDB;
 | |
| 
 | |
| CREATE TABLE SYSTEM_VALUES ( SYSTEM_VALUES_ID INT UNSIGNED NOT NULL,
 | |
|                              VALUE BIGINT UNSIGNED NOT NULL,
 | |
|                              PRIMARY KEY USING HASH (SYSTEM_VALUES_ID))
 | |
|    ENGINE = NDB;
 | |
| 
 | |
| CREATE TABLE ACCOUNT_TYPE ( ACCOUNT_TYPE_ID INT UNSIGNED NOT NULL,
 | |
|                             DESCRIPTION CHAR(64) NOT NULL,
 | |
|                             PRIMARY KEY USING HASH (ACCOUNT_TYPE_ID))
 | |
|    ENGINE = NDB;
 | |
| 
 | |
| #
 | |
| # create "BANK" application
 | |
| #
 | |
| --exec NDB_CONNECTSTRING=localhost:$NDBCLUSTER_PORT ../storage/ndb/test/ndbapi/bank/bankCreator >> $NDB_TOOLS_OUTPUT
 | |
| 
 | |
| #
 | |
| # start main loop
 | |
| # repeat backup-restore-check
 | |
| #
 | |
| 
 | |
| # set this high if testing to run many syncs in loop
 | |
| --let $2=1
 | |
| while ($2)
 | |
| {
 | |
| 
 | |
| #
 | |
| # start "BANK" application
 | |
| #
 | |
| --exec NDB_CONNECTSTRING=localhost:$NDBCLUSTER_PORT ../storage/ndb/test/ndbapi/bank/bankTimer -w 5 >> $NDB_TOOLS_OUTPUT &
 | |
| --exec NDB_CONNECTSTRING=localhost:$NDBCLUSTER_PORT ../storage/ndb/test/ndbapi/bank/bankMakeGL >> $NDB_TOOLS_OUTPUT &
 | |
| --exec NDB_CONNECTSTRING=localhost:$NDBCLUSTER_PORT ../storage/ndb/test/ndbapi/bank/bankTransactionMaker >> $NDB_TOOLS_OUTPUT &
 | |
| 
 | |
| #
 | |
| # let the "BANK" run for a while
 | |
| #
 | |
| --sleep 5
 | |
| 
 | |
| --disable_warnings
 | |
| # initialize slave for sync
 | |
| --connection slave
 | |
| STOP SLAVE;
 | |
| RESET SLAVE;
 | |
| # to make sure we drop any ndbcluster tables
 | |
| CREATE DATABASE IF NOT EXISTS BANK;
 | |
| DROP DATABASE BANK;
 | |
| # create database
 | |
| CREATE DATABASE BANK;
 | |
| --enable_warnings
 | |
| 
 | |
| #
 | |
| # Time to sync the slave:
 | |
| # start by taking a backup on master
 | |
| --connection master
 | |
| RESET MASTER;
 | |
| --exec $NDB_MGM --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT" -e "start backup" >> $NDB_TOOLS_OUTPUT
 | |
| 
 | |
| # there is no neat way to find the backupid, this is a hack to find it...
 | |
| --exec $NDB_TOOLS_DIR/ndb_select_all --ndb-connectstring="localhost:$NDBCLUSTER_PORT" -d sys --delimiter=',' SYSTAB_0 | grep 520093696 > $MYSQLTEST_VARDIR/tmp.dat
 | |
| CREATE TABLE IF NOT EXISTS cluster.backup_info (id INT, backup_id INT) ENGINE = HEAP;
 | |
| DELETE FROM cluster.backup_info;
 | |
| LOAD DATA INFILE '../tmp.dat' INTO TABLE cluster.backup_info FIELDS TERMINATED BY ',';
 | |
| --exec rm $MYSQLTEST_VARDIR/tmp.dat || true
 | |
| --replace_column 1 <the_backup_id>
 | |
| SELECT @the_backup_id:=backup_id FROM cluster.backup_info;
 | |
| let the_backup_id=`select @the_backup_id`;
 | |
| 
 | |
| # restore on slave, first check that nothing is there
 | |
| --connection slave
 | |
| --exec $NDB_TOOLS_DIR/ndb_restore --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT_SLAVE" -p 8 -b $the_backup_id -n 1 -m -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT
 | |
| --exec $NDB_TOOLS_DIR/ndb_restore --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT_SLAVE" -p 8 -b $the_backup_id -n 2 -r -e --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT
 | |
| 
 | |
| #
 | |
| # now setup replication to continue from last epoch
 | |
| --source include/ndb_setup_slave.inc
 | |
| --connection slave
 | |
| START SLAVE;
 | |
| 
 | |
| 
 | |
| #
 | |
| # Now loop and check consistency every 2 seconds on slave
 | |
| #
 | |
| --connection slave
 | |
| --let $1=10
 | |
| while ($1)
 | |
| {
 | |
|   --sleep 2
 | |
|   --replace_result $MASTER_MYPORT MASTER_PORT
 | |
|   --replace_column 1 <Slave_IO_State> 7 <Read_Master_Log_Pos> 8 <Relay_Log_File> 9 <Relay_Log_Pos> 16 <Replicate_Ignore_Table> 22 <Exec_Master_Log_Pos> 23 <Relay_Log_Space> 33 <Seconds_Behind_Master>
 | |
|   SHOW SLAVE STATUS;
 | |
|   STOP SLAVE;
 | |
|   --exec NDB_CONNECTSTRING=localhost:$NDBCLUSTER_PORT_SLAVE ../storage/ndb/test/ndbapi/bank/bankValidateAllGLs >> $NDB_TOOLS_OUTPUT
 | |
|   START SLAVE;
 | |
|   --dec $1
 | |
| }
 | |
| 
 | |
| #
 | |
| # Stop transactions
 | |
| #
 | |
| --exec killall lt-bankTransactionMaker lt-bankTimer lt-bankMakeGL
 | |
| 
 | |
| #
 | |
| # Check that the databases are the same on slave and master
 | |
| # 1. dump database BANK on both master and slave
 | |
| # 2. compare, there should be no difference
 | |
| #
 | |
| --exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info BANK ACCOUNT_TYPE ACCOUNT GL TRANSACTION > $MYSQLTEST_VARDIR/tmp/master_BANK.sql
 | |
| --connection master
 | |
| use test;
 | |
| create table t1 (a int primary key) engine=ndb;
 | |
| insert into t1 values (1);
 | |
| --sync_slave_with_master
 | |
| --exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info BANK ACCOUNT_TYPE ACCOUNT GL TRANSACTION > $MYSQLTEST_VARDIR/tmp/slave_BANK.sql
 | |
| --connection master
 | |
| drop table t1;
 | |
| 
 | |
| --exec diff $MYSQLTEST_VARDIR/tmp/master_BANK.sql $MYSQLTEST_VARDIR/tmp/slave_BANK.sql
 | |
| 
 | |
|   --dec $2
 | |
| }
 |