rpl_loaddata.test
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:4k
- # See if replication of a "LOAD DATA in an autoincrement column"
- # Honours autoincrement values
- # i.e. if the master and slave have the same sequence
- #
- # check replication of load data for temporary tables with additional
- # parameters
- #
- # check if duplicate entries trigger an error (they should unless IGNORE or
- # REPLACE was used on the master) (bug 571).
- #
- # check if START SLAVE, RESET SLAVE, CHANGE MASTER reset Last_slave_error and
- # Last_slave_errno in SHOW SLAVE STATUS (1st and 3rd commands did not: bug 986)
- source include/master-slave.inc;
- connection slave;
- reset master;
- connection master;
- create table t1(a int not null auto_increment, b int, primary key(a) );
- load data infile '../../std_data/rpl_loaddata.dat' into table t1;
- create temporary table t2 (day date,id int(9),category enum('a','b','c'),name varchar(60));
- load data infile '../../std_data/rpl_loaddata2.dat' into table t2 fields terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by 'n##n' starting by '>' ignore 1 lines;
- create table t3 (day date,id int(9),category enum('a','b','c'),name varchar(60));
- insert into t3 select * from t2;
- save_master_pos;
- connection slave;
- sync_with_master;
- select * from t1;
- select * from t3;
- # We want to be sure that LOAD DATA is in the slave's binlog.
- # But we can't simply read this binlog, because as the slave has not been
- # restarted for this test, the file_id is uncertain (would cause test
- # failures). So instead, we test if the binlog looks long enough to
- # contain LOAD DATA. That is, I (Guilhem) have done SHOW BINLOG EVENTS on my
- # machine, saw that the binlog is of size 964 when things go fine.
- # If LOAD DATA was not logged, the binlog would be shorter.
- show master status;
- connection master;
- drop table t1;
- drop table t2;
- drop table t3;
- create table t1(a int, b int, unique(b));
- save_master_pos;
- connection slave;
- sync_with_master;
- # See if slave stops when there's a duplicate entry for key error in LOAD DATA
- insert into t1 values(1,10);
- connection master;
- load data infile '../../std_data/rpl_loaddata.dat' into table t1;
- save_master_pos;
- connection slave;
- # The SQL slave thread should be stopped now.
- wait_for_slave_to_stop;
- # Skip the bad event and see if error is cleared in SHOW SLAVE STATUS by START
- # SLAVE, even though we are not executing any event (as sql_slave_skip_counter
- # takes us directly to the end of the relay log).
- set global sql_slave_skip_counter=1;
- start slave;
- sync_with_master;
- --replace_result $MASTER_MYPORT MASTER_PORT
- --replace_column 1 # 33 #
- show slave status;
- # Trigger error again to test CHANGE MASTER
- connection master;
- set sql_log_bin=0;
- delete from t1;
- set sql_log_bin=1;
- load data infile '../../std_data/rpl_loaddata.dat' into table t1;
- save_master_pos;
- connection slave;
- # The SQL slave thread should be stopped now.
- wait_for_slave_to_stop;
- # CHANGE MASTER and see if error is cleared in SHOW SLAVE STATUS.
- stop slave;
- change master to master_user='test';
- change master to master_user='root';
- --replace_result $MASTER_MYPORT MASTER_PORT
- --replace_column 1 # 33 #
- show slave status;
- # Trigger error again to test RESET SLAVE
- set global sql_slave_skip_counter=1;
- start slave;
- sync_with_master;
- connection master;
- set sql_log_bin=0;
- delete from t1;
- set sql_log_bin=1;
- load data infile '../../std_data/rpl_loaddata.dat' into table t1;
- save_master_pos;
- connection slave;
- # The SQL slave thread should be stopped now.
- wait_for_slave_to_stop;
- # RESET SLAVE and see if error is cleared in SHOW SLAVE STATUS.
- stop slave;
- reset slave;
- --replace_result $MASTER_MYPORT MASTER_PORT
- --replace_column 1 # 33 #
- show slave status;
- # Finally, see if logging is done ok on master for a failing LOAD DATA INFILE
- connection master;
- reset master;
- create table t2 (day date,id int(9),category enum('a','b','c'),name varchar(60),
- unique(day));
- --error 1062
- load data infile '../../std_data/rpl_loaddata2.dat' into table t2 fields
- terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by
- 'n##n' starting by '>' ignore 1 lines;
- # To test that there is Create_file & Delete_file, we test if the binlog is as
- # long as expected (can't do SHOW BINLOG EVENTS because of varying file_id).
- show master status;
- drop table t2;
- # End of 4.1 tests