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

MySQL数据库

开发平台:

Visual C++

  1. # This one assumes we are ignoring updates on tables in database mysqltest2,
  2. # but doing the ones in database mysqltest
  3. source include/master-slave.inc;
  4. --disable_warnings
  5. drop database if exists mysqltest;
  6. drop database if exists mysqltest2;
  7. drop database if exists mysqltest3;
  8. connection slave;
  9. drop database if exists mysqltest;
  10. drop database if exists mysqltest2;
  11. drop database if exists mysqltest3;
  12. connection master;
  13. create database mysqltest2;
  14. create database mysqltest;
  15. --enable_warnings
  16. save_master_pos;
  17. connection slave;
  18. sync_with_master;
  19. create database mysqltest2;
  20. create table mysqltest2.foo (n int);
  21. insert into mysqltest2.foo values(4);
  22. connection master;
  23. create table mysqltest2.foo (n int);
  24. insert into mysqltest2.foo values(5);
  25. create table mysqltest.bar (m int);
  26. insert into mysqltest.bar values(15);
  27. save_master_pos;
  28. connection slave;
  29. sync_with_master;
  30. select mysqltest2.foo.n,mysqltest.bar.m from mysqltest2.foo,mysqltest.bar;
  31. connection master;
  32. drop database mysqltest;
  33. drop database if exists mysqltest2;
  34. save_master_pos;
  35. connection slave;
  36. sync_with_master;
  37. --error 1008
  38. drop database mysqltest;
  39. drop database mysqltest2;
  40. # Now let's test load data from master
  41. # First create some databases and tables on the master
  42. connection master;
  43. set sql_log_bin = 0;
  44. create database mysqltest2;
  45. create database mysqltest;
  46. show databases;
  47. create table mysqltest2.t1(n int, s char(20));
  48. create table mysqltest2.t2(n int, s text);
  49. insert into mysqltest2.t1 values (1, 'one'), (2, 'two'), (3, 'three'); 
  50. insert into mysqltest2.t2 values (11, 'eleven'), (12, 'twelve'), (13, 'thirteen'); 
  51. create table mysqltest.t1(n int, s char(20));
  52. create table mysqltest.t2(n int, s text);
  53. insert into mysqltest.t1 values (1, 'one test'), (2, 'two test'), (3, 'three test'); 
  54. insert into mysqltest.t2 values (11, 'eleven test'), (12, 'twelve test'),
  55.  (13, 'thirteen test'); 
  56. set sql_log_bin = 1;
  57. save_master_pos;
  58. connection slave;
  59. sync_with_master;
  60. # This should show that the slave is empty at this point
  61. show databases;
  62. # Create mysqltest2 and mysqltest3 on slave; we expect that LOAD DATA FROM
  63. # MASTER will neither touch database mysqltest nor mysqltest3
  64. create database mysqltest2;
  65. create table mysqltest2.t1(n int, s char(20));
  66. insert into mysqltest2.t1 values (1, 'original foo.t1');
  67. create table mysqltest2.t3(n int, s char(20));
  68. insert into mysqltest2.t3 values (1, 'original foo.t3');
  69. create database mysqltest3;
  70. create table mysqltest3.t1(n int, s char(20));
  71. insert into mysqltest3.t1 values (1, 'original foo2.t1');
  72. # Create mysqltest, and mysqltest.t1, to check that it gets replaced,
  73. # and mysqltest.t3 to check that it is not touched (there is no
  74. # mysqltest.t3 on master)
  75. create database mysqltest;
  76. create table mysqltest.t1(n int, s char(20));
  77. insert into mysqltest.t1 values (1, 'original bar.t1');
  78. create table mysqltest.t3(n int, s char(20));
  79. insert into mysqltest.t3 values (1, 'original bar.t3');
  80. load data from master;
  81. # Now let's check if we have the right tables and the right data in them
  82. show databases;
  83. use mysqltest2;
  84. # LOAD DATA FROM MASTER uses only replicate_*_db rules to decide which
  85. # databases have to be copied. So it thinks "mysqltest" has to be
  86. # copied. Before 4.0.16 it would first drop "mysqltest", then create
  87. # "mysqltest". This "drop" is a bug; in that case t3 would disappear.  So
  88. # here the effect of this bug (BUG#1248) would be to leave an empty
  89. # "mysqltest" on the slave.
  90. show tables; # should be t1 & t3
  91. select * from t1; # should be slave's original
  92. use mysqltest3;
  93. show tables; # should be t1
  94. select * from t1; # should be slave's original
  95. use mysqltest;
  96. show tables; # should contain master's copied t1&t2, slave's original t3
  97. select * from mysqltest.t1;
  98. select * from mysqltest.t2;
  99. select * from mysqltest.t3;
  100. # Now let's see if replication works
  101. connection master;
  102. insert into mysqltest.t1 values (4, 'four test');
  103. save_master_pos;
  104. connection slave;
  105. sync_with_master;
  106. select * from mysqltest.t1;
  107. # Check that LOAD DATA FROM MASTER is able to create master.info
  108. # if needed (if RESET SLAVE was used before), before writing to it (BUG#2922).
  109. stop slave;
  110. reset slave;
  111. load data from master;
  112. start slave;
  113. # see if replication coordinates were restored fine
  114. connection master;
  115. insert into mysqltest.t1 values (5, 'five bar');
  116. save_master_pos;
  117. connection slave;
  118. sync_with_master;
  119. select * from mysqltest.t1;
  120. # Check that LOAD DATA FROM MASTER reports the error if it can't drop a
  121. # table to be overwritten.
  122. # DISABLED FOR NOW AS chmod IS NOT PORTABLE ON NON-UNIX
  123. # insert into mysqltest.t1 values(10, 'should be there');
  124. # flush tables;
  125. # system chmod 500 var/slave-data/mysqltest/;
  126. # --error 6
  127. # load data from master;  # should fail (errno 13)
  128. # system chmod 700 var/slave-data/mysqltest/;
  129. # select * from mysqltest.t1; # should contain the row (10, ...)
  130. # Check that LOAD TABLE FROM MASTER fails if the table exists on slave
  131. --error 1050
  132. load table mysqltest.t1 from master;
  133. drop table mysqltest.t1;
  134. load table mysqltest.t1 from master;
  135. # Check what happens when requestion not existing table
  136. #
  137. --error 1188
  138. load table bar.t1 from master;
  139. # as LOAD DATA FROM MASTER failed it did not restart slave threads
  140. # DISABLED FOR NOW
  141. # start slave;
  142. # Now time for cleanup
  143. connection master;
  144. drop database mysqltest;
  145. drop database mysqltest2;
  146. save_master_pos;
  147. connection slave;
  148. sync_with_master;
  149. # These have to be dropped on slave because they are not replicated
  150. drop database mysqltest2;
  151. drop database mysqltest3;
  152. # End of 4.1 tests