1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
|
--source include/not_group_replication_plugin.inc
let $rpl_privilege_checks_user_grant_option = 1;
source include/master-slave.inc;
# Default replication setup at master-slave.inc does not set MASTER_SSL
--connection slave
--let $current_master_ssl= query_get_value(SHOW SLAVE STATUS, Master_SSL_Allowed, 1)
--let $assert_text= Master_SSL_Allowed should be NO by default
--let $assert_cond= "$current_master_ssl" = "NO"
--source include/assert.inc
# The slave should be initially connected to the master without SSL/TLS
--connection master
--let $connection_type= `SELECT CONNECTION_TYPE FROM performance_schema.threads WHERE PROCESSLIST_COMMAND LIKE "Binlog Dump%"`
--let $assert_text= Without MASTER_SSL, the slave should be connected to the master without SSL/TLS
--let $assert_cond= "$connection_type" <> "SSL/TLS" AND "$connection_type" <> ""
--source include/assert.inc
# create a user for replication that requires ssl encryption
connection master;
create user replssl@localhost require ssl;
grant replication slave on *.* to replssl@localhost;
create table t1 (t int auto_increment, KEY(t));
--source include/sync_slave_sql_with_master.inc
# Set slave to use SSL for connection to master
stop slave;
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
--replace_column 2 ####
eval CHANGE REPLICATION SOURCE to
SOURCE_USER='replssl',
SOURCE_PASSWORD='',
SOURCE_SSL=1,
SOURCE_SSL_CA ='$MYSQL_TEST_DIR/std_data/cacert.pem',
SOURCE_SSL_CERT='$MYSQL_TEST_DIR/std_data/client-cert.pem',
SOURCE_SSL_KEY='$MYSQL_TEST_DIR/std_data/client-key.pem';
start slave;
# Switch to master and insert one record, then sync it to slave
connection master;
insert into t1 values(1);
--source include/sync_slave_sql_with_master.inc
# The record should now be on slave
select * from t1;
# The slave is synced and waiting/reading from master
# SHOW SLAVE STATUS will show "Waiting for source to send event"
let $status_items= Master_SSL_Allowed, Master_SSL_CA_Path, Master_SSL_CA_File, Master_SSL_Cert, Master_SSL_Key;
source include/show_slave_status.inc;
source include/check_slave_is_running.inc;
# Stop the slave, as reported in bug#21871 it would hang
STOP SLAVE;
select * from t1;
# Do the same thing a number of times
disable_query_log;
disable_result_log;
# 2007-11-27 mats Bug #32756 Starting and stopping the slave in a loop can lose rows
# After discussions with Engineering, I'm disabling this part of the test to avoid it causing
# red trees.
disable_testcase BUG#32756;
let $i= 100;
while ($i)
{
start slave;
connection master;
insert into t1 values (NULL);
select * from t1; # Some variance
connection slave;
select * from t1; # Some variance
stop slave;
dec $i;
}
enable_testcase;
START SLAVE;
enable_query_log;
enable_result_log;
connection master;
# INSERT one more record to make sure
# the sync has something to do
insert into t1 values (NULL);
let $master_count= `select count(*) from t1`;
--source include/sync_slave_sql_with_master.inc
--source include/wait_for_slave_to_start.inc
source include/show_slave_status.inc;
source include/check_slave_is_running.inc;
let $slave_count= `select count(*) from t1`;
if ($slave_count != $master_count)
{
echo master and slave differed in number of rows;
echo master: $master_count;
echo slave: $slave_count;
connection master;
echo === master ===;
select count(*) t1;
select * from t1;
connection slave;
echo === slave ===;
select count(*) t1;
select * from t1;
query_vertical show slave status;
}
connection master;
drop user replssl@localhost;
drop table t1;
--source include/sync_slave_sql_with_master.inc
# ==== BUG#18165937: HITTING CRASH WHEN SETTING SSL OPTIONS THROUGH CHANGE MASTER COMMAND ====
--source include/stop_slave.inc
--replace_column 2 ####
CHANGE REPLICATION SOURCE TO
SOURCE_USER = 'root',
SOURCE_SSL = 0,
SOURCE_SSL_CA = '',
SOURCE_SSL_CERT = '',
SOURCE_SSL_KEY = '',
SOURCE_SSL_CRL='',
SOURCE_SSL_CRLPATH='';
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
eval CHANGE REPLICATION SOURCE TO SOURCE_SSL= 1, SOURCE_SSL_CRL='$MYSQL_TEST_DIR/std_data/crl-client-revoked.crl', SOURCE_SSL_CRLPATH='$MYSQL_TEST_DIR/std_data/crldir';
--source include/start_slave.inc
--source include/stop_slave.inc
--replace_column 2 ####
CHANGE REPLICATION SOURCE TO
SOURCE_USER = 'root',
SOURCE_SSL = 0,
SOURCE_SSL_CA = '',
SOURCE_SSL_CERT = '',
SOURCE_SSL_KEY = '',
SOURCE_SSL_CRL='',
SOURCE_SSL_CRLPATH='';
--echo End of 5.0 tests
--let $rpl_only_running_threads= 1
--source include/rpl_end.inc
|