rpl_rotate_logs.test
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:4k
源码类别:
MySQL数据库
开发平台:
Visual C++
- #
- # Test is run with max_binlog_size=2048 to force automatic rotation of the
- # binary log
- # Tests done:
- # - Check that slaves reports correct failures if master.info has strange
- # modes/information
- # - Automatic binary log rotation
- # - Ensure that temporary tables works over flush logs and binary log
- # changes
- # - Test creating a duplicate key error and recover from it
- connect (master,localhost,root,,test,$MASTER_MYPORT,master.sock);
- --disable_warnings
- drop table if exists t1, t2, t3, t4;
- --enable_warnings
- connect (slave,localhost,root,,test,$SLAVE_MYPORT,slave.sock);
- system cat /dev/null > var/slave-data/master.info;
- system chmod 000 var/slave-data/master.info;
- connection slave;
- --disable_warnings
- drop table if exists t1, t2, t3, t4;
- --enable_warnings
- # START SLAVE will fail because it can't read the file (mode 000)
- # (system error 13)
- --error 1201
- start slave;
- system chmod 600 var/slave-data/master.info;
- # It will fail again because the file is empty so the slave cannot get valuable
- # info about how to connect to the master from it (failure in
- # init_strvar_from_file() in init_master_info()).
- --error 1201
- start slave;
- --replace_result $MASTER_MYPORT MASTER_PORT
- # CHANGE MASTER will fail because it first parses master.info before changing
- # it (so when master.info is bad, people have to use RESET SLAVE first).
- --error 1201
- eval change master to master_host='127.0.0.1',master_port=$MASTER_MYPORT, master_user='root';
- reset slave;
- --replace_result $MASTER_MYPORT MASTER_PORT
- eval change master to master_host='127.0.0.1',master_port=$MASTER_MYPORT, master_user='root';
- connection master;
- reset master;
- connection slave;
- start slave;
- connection master;
- #
- # Test FLUSH LOGS
- #
- create temporary table temp_table (a char(80) not null);
- insert into temp_table values ("testing temporary tables");
- create table t1 (s text);
- insert into t1 values('Could not break slave'),('Tried hard');
- sync_slave_with_master;
- --replace_result $MASTER_MYPORT MASTER_PORT
- --replace_column 1 # 33 #
- show slave status;
- select * from t1;
- connection master;
- flush logs;
- create table t2(m int not null auto_increment primary key);
- insert into t2 values (34),(67),(123);
- flush logs;
- show binary logs;
- create table t3 select * from temp_table;
- sync_slave_with_master;
- select * from t3;
- connection master;
- drop table temp_table, t3;
- #
- # Now lets make some duplicate key mess and see if we can recover from it
- #
- # First insert a value on the slave
- connection slave;
- insert into t2 values(1234);
- #same value on the master
- connection master;
- set insert_id=1234;
- insert into t2 values(NULL);
- connection slave;
- wait_for_slave_to_stop;
- #restart slave skipping one event
- set global sql_slave_skip_counter=1;
- start slave;
- connection master;
- #let slave catch up
- sync_slave_with_master;
- connection master;
- purge master logs to 'master-bin.000002';
- show master logs;
- # we just tests if synonyms are accepted
- purge binary logs to 'master-bin.000002';
- show binary logs;
- # sleeping 10 seconds or more would make the slave believe connection is down
- --real_sleep 1
- purge master logs before now();
- show binary logs;
- insert into t2 values (65);
- sync_slave_with_master;
- --replace_result $MASTER_MYPORT MASTER_PORT
- --replace_column 1 # 33 #
- show slave status;
- select * from t2;
- #
- # Test forcing the replication log to rotate
- #
- connection master;
- create temporary table temp_table (a char(80) not null);
- insert into temp_table values ("testing temporary tables part 2");
- let $1=100;
- create table t3 (n int);
- disable_query_log;
- while ($1)
- {
- #eval means expand $ expressions
- eval insert into t3 values($1 + 4);
- dec $1;
- }
- enable_query_log;
- select count(*) from t3 where n >= 4;
- create table t4 select * from temp_table;
- show binary logs;
- show master status;
- save_master_pos;
- connection slave;
- sync_with_master;
- select * from t4;
- --replace_result $MASTER_MYPORT MASTER_PORT
- --replace_column 1 # 33 #
- show slave status;
- # because of concurrent insert, the table may not be up to date
- # if we do not lock
- lock tables t3 read;
- select count(*) from t3 where n >= 4;
- unlock tables;
- #clean up
- connection master;
- drop table if exists t1,t2,t3,t4;
- sync_slave_with_master;
- # End of 4.1 tests