rpl_loaddata.test
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. # See if replication of a "LOAD DATA in an autoincrement column"
  2. # Honours autoincrement values
  3. # i.e. if the master and slave have the same sequence
  4. #
  5. # check replication of load data for temporary tables with additional
  6. # parameters
  7. #
  8. # check if duplicate entries trigger an error (they should unless IGNORE or
  9. # REPLACE was used on the master) (bug 571).
  10. #
  11. # check if START SLAVE, RESET SLAVE, CHANGE MASTER reset Last_slave_error and
  12. # Last_slave_errno in SHOW SLAVE STATUS (1st and 3rd commands did not: bug 986)
  13. source include/master-slave.inc;
  14. connection slave;
  15. reset master;
  16. connection master;
  17. create table t1(a int not null auto_increment, b int, primary key(a) );
  18. load data infile '../../std_data/rpl_loaddata.dat' into table t1;
  19. create temporary table t2 (day date,id int(9),category enum('a','b','c'),name varchar(60));
  20. 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;
  21. create table t3 (day date,id int(9),category enum('a','b','c'),name varchar(60));
  22. insert into t3 select * from t2;
  23. save_master_pos;
  24. connection slave;
  25. sync_with_master;
  26. select * from t1;
  27. select * from t3;
  28. # We want to be sure that LOAD DATA is in the slave's binlog.
  29. # But we can't simply read this binlog, because as the slave has not been
  30. # restarted for this test, the file_id is uncertain (would cause test
  31. # failures). So instead, we test if the binlog looks long enough to
  32. # contain LOAD DATA. That is, I (Guilhem) have done SHOW BINLOG EVENTS on my
  33. # machine, saw that the binlog is of size 964 when things go fine.
  34. # If LOAD DATA was not logged, the binlog would be shorter.
  35. show master status;
  36. connection master;
  37. drop table t1;
  38. drop table t2;
  39. drop table t3;
  40. create table t1(a int, b int, unique(b));
  41. save_master_pos;
  42. connection slave;
  43. sync_with_master;
  44. # See if slave stops when there's a duplicate entry for key error in LOAD DATA
  45. insert into t1 values(1,10);
  46. connection master;
  47. load data infile '../../std_data/rpl_loaddata.dat' into table t1;
  48. save_master_pos;
  49. connection slave;
  50. # The SQL slave thread should be stopped now.
  51. wait_for_slave_to_stop;
  52. # Skip the bad event and see if error is cleared in SHOW SLAVE STATUS by START
  53. # SLAVE, even though we are not executing any event (as sql_slave_skip_counter
  54. # takes us directly to the end of the relay log).
  55. set global sql_slave_skip_counter=1;
  56. start slave;
  57. sync_with_master;
  58. --replace_result $MASTER_MYPORT MASTER_PORT
  59. --replace_column 1 # 33 #
  60. show slave status;
  61. # Trigger error again to test CHANGE MASTER
  62. connection master;
  63. set sql_log_bin=0;
  64. delete from t1;
  65. set sql_log_bin=1;
  66. load data infile '../../std_data/rpl_loaddata.dat' into table t1;
  67. save_master_pos;
  68. connection slave;
  69. # The SQL slave thread should be stopped now.
  70. wait_for_slave_to_stop;
  71. # CHANGE MASTER and see if error is cleared in SHOW SLAVE STATUS.
  72. stop slave;
  73. change master to master_user='test';
  74. change master to master_user='root';
  75. --replace_result $MASTER_MYPORT MASTER_PORT
  76. --replace_column 1 # 33 #
  77. show slave status;
  78. # Trigger error again to test RESET SLAVE
  79. set global sql_slave_skip_counter=1;
  80. start slave;
  81. sync_with_master;
  82. connection master;
  83. set sql_log_bin=0;
  84. delete from t1;
  85. set sql_log_bin=1;
  86. load data infile '../../std_data/rpl_loaddata.dat' into table t1;
  87. save_master_pos;
  88. connection slave;
  89. # The SQL slave thread should be stopped now.
  90. wait_for_slave_to_stop;
  91. # RESET SLAVE and see if error is cleared in SHOW SLAVE STATUS.
  92. stop slave;
  93. reset slave;
  94. --replace_result $MASTER_MYPORT MASTER_PORT
  95. --replace_column 1 # 33 #
  96. show slave status;
  97. # Finally, see if logging is done ok on master for a failing LOAD DATA INFILE
  98. connection master;
  99. reset master;
  100. create table t2 (day date,id int(9),category enum('a','b','c'),name varchar(60),
  101. unique(day));
  102. --error 1062
  103. load data infile '../../std_data/rpl_loaddata2.dat' into table t2 fields
  104. terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by
  105. 'n##n' starting by '>' ignore 1 lines;
  106. # To test that there is Create_file & Delete_file, we test if the binlog is as
  107. # long as expected (can't do SHOW BINLOG EVENTS because of varying file_id).
  108. show master status;
  109. drop table t2;
  110. # End of 4.1 tests