mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Manual merge fixes
This commit is contained in:
@ -289,4 +289,5 @@
|
|||||||
#define ER_CANT_AGGREGATE_NCOLLATIONS 1270
|
#define ER_CANT_AGGREGATE_NCOLLATIONS 1270
|
||||||
#define ER_VARIABLE_IS_NOT_STRUCT 1271
|
#define ER_VARIABLE_IS_NOT_STRUCT 1271
|
||||||
#define ER_UNKNOWN_COLLATION 1272
|
#define ER_UNKNOWN_COLLATION 1272
|
||||||
#define ER_ERROR_MESSAGES 273
|
#define ER_SLAVE_IGNORED_SSL_PARAMS 1273
|
||||||
|
#define ER_ERROR_MESSAGES 274
|
||||||
|
@ -22,7 +22,8 @@ testdir = $(benchdir_root)/mysql-test
|
|||||||
EXTRA_SCRIPTS = mysql-test-run.sh install_test_db.sh
|
EXTRA_SCRIPTS = mysql-test-run.sh install_test_db.sh
|
||||||
EXTRA_DIST = $(EXTRA_SCRIPTS)
|
EXTRA_DIST = $(EXTRA_SCRIPTS)
|
||||||
test_SCRIPTS = mysql-test-run install_test_db
|
test_SCRIPTS = mysql-test-run install_test_db
|
||||||
CLEANFILES = $(test_SCRIPTS)
|
test_DATA = std_data/client-key.pem std_data/client-cert.pem std_data/cacert.pem
|
||||||
|
CLEANFILES = $(test_SCRIPTS) $(test_DATA)
|
||||||
|
|
||||||
dist-hook:
|
dist-hook:
|
||||||
mkdir -p $(distdir)/t $(distdir)/r $(distdir)/include \
|
mkdir -p $(distdir)/t $(distdir)/r $(distdir)/include \
|
||||||
@ -32,6 +33,8 @@ dist-hook:
|
|||||||
$(INSTALL_DATA) $(srcdir)/r/*.result $(srcdir)/r/*.require $(distdir)/r
|
$(INSTALL_DATA) $(srcdir)/r/*.result $(srcdir)/r/*.require $(distdir)/r
|
||||||
$(INSTALL_DATA) $(srcdir)/std_data/*.dat $(srcdir)/std_data/*.000001 $(distdir)/std_data
|
$(INSTALL_DATA) $(srcdir)/std_data/*.dat $(srcdir)/std_data/*.000001 $(distdir)/std_data
|
||||||
$(INSTALL_DATA) $(srcdir)/std_data/des_key_file $(distdir)/std_data
|
$(INSTALL_DATA) $(srcdir)/std_data/des_key_file $(distdir)/std_data
|
||||||
|
$(INSTALL_DATA) $(srcdir)/std_data/*.pem $(distdir)/std_data
|
||||||
|
|
||||||
|
|
||||||
install-data-local:
|
install-data-local:
|
||||||
$(mkinstalldirs) \
|
$(mkinstalldirs) \
|
||||||
@ -49,6 +52,11 @@ install-data-local:
|
|||||||
$(INSTALL_DATA) $(srcdir)/include/*.inc $(DESTDIR)$(testdir)/include
|
$(INSTALL_DATA) $(srcdir)/include/*.inc $(DESTDIR)$(testdir)/include
|
||||||
$(INSTALL_DATA) $(srcdir)/std_data/*.dat $(DESTDIR)$(testdir)/std_data
|
$(INSTALL_DATA) $(srcdir)/std_data/*.dat $(DESTDIR)$(testdir)/std_data
|
||||||
$(INSTALL_DATA) $(srcdir)/std_data/des_key_file $(DESTDIR)$(testdir)/std_data
|
$(INSTALL_DATA) $(srcdir)/std_data/des_key_file $(DESTDIR)$(testdir)/std_data
|
||||||
|
$(INSTALL_DATA) $(srcdir)/std_data/*.pem $(DESTDIR)$(testdir)/std_data
|
||||||
|
|
||||||
|
std_data/%.pem:
|
||||||
|
@CP@ $(top_srcdir)/SSL/$(@F) $(srcdir)/std_data
|
||||||
|
|
||||||
|
|
||||||
SUFFIXES = .sh
|
SUFFIXES = .sh
|
||||||
|
|
||||||
|
@ -4,20 +4,20 @@ File Position Binlog_do_db Binlog_ignore_db
|
|||||||
master-bin.000001 79
|
master-bin.000001 79
|
||||||
reset slave;
|
reset slave;
|
||||||
show slave status;
|
show slave status;
|
||||||
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space
|
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key
|
||||||
change master to master_host='127.0.0.1';
|
change master to master_host='127.0.0.1';
|
||||||
show slave status;
|
show slave status;
|
||||||
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space
|
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key
|
||||||
127.0.0.1 test MASTER_PORT 7 4 slave-relay-bin.000001 4 No No 0 0 0 4
|
127.0.0.1 test MASTER_PORT 7 4 slave-relay-bin.000001 4 No No 0 0 0 4 No
|
||||||
change master to master_host='127.0.0.1',master_user='root',
|
change master to master_host='127.0.0.1',master_user='root',
|
||||||
master_password='',master_port=MASTER_PORT;
|
master_password='',master_port=MASTER_PORT;
|
||||||
show slave status;
|
show slave status;
|
||||||
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space
|
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key
|
||||||
127.0.0.1 root MASTER_PORT 7 4 slave-relay-bin.000001 4 No No 0 0 0 4
|
127.0.0.1 root MASTER_PORT 7 4 slave-relay-bin.000001 4 No No 0 0 0 4 No
|
||||||
start slave;
|
start slave;
|
||||||
show slave status;
|
show slave status;
|
||||||
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space
|
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key
|
||||||
127.0.0.1 root MASTER_PORT 7 master-bin.000001 79 slave-relay-bin.000001 123 master-bin.000001 Yes Yes 0 0 79 123
|
127.0.0.1 root MASTER_PORT 7 master-bin.000001 79 slave-relay-bin.000001 123 master-bin.000001 Yes Yes 0 0 79 123 No
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
create table t1 (n int);
|
create table t1 (n int);
|
||||||
insert into t1 values (10),(45),(90);
|
insert into t1 values (10),(45),(90);
|
||||||
|
@ -5,7 +5,7 @@ reset slave;
|
|||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
start slave;
|
start slave;
|
||||||
show slave status;
|
show slave status;
|
||||||
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space
|
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key
|
||||||
load table t1 from master;
|
load table t1 from master;
|
||||||
ERROR 08S01: Error connecting to master: Master is not configured
|
ERROR 08S01: Error connecting to master: Master is not configured
|
||||||
load table t1 from master;
|
load table t1 from master;
|
||||||
|
@ -13,5 +13,5 @@ master_password='',master_port=SLAVE_PORT;
|
|||||||
start slave;
|
start slave;
|
||||||
flush logs;
|
flush logs;
|
||||||
show slave status;
|
show slave status;
|
||||||
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space
|
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key
|
||||||
127.0.0.1 root SLAVE_PORT 60 slave-bin.000001 79 relay-log.000002 4 slave-bin.000001 Yes Yes 0 0 79 4
|
127.0.0.1 root SLAVE_PORT 60 slave-bin.000001 79 relay-log.000002 4 slave-bin.000001 Yes Yes 0 0 79 4 No
|
||||||
|
@ -92,7 +92,7 @@ slave-bin.000002 4 Query 1 110 use `test`; create table t1 (n int)
|
|||||||
slave-bin.000002 62 Query 1 168 use `test`; insert into t1 values (1)
|
slave-bin.000002 62 Query 1 168 use `test`; insert into t1 values (1)
|
||||||
slave-bin.000002 122 Query 1 228 use `test`; drop table t1
|
slave-bin.000002 122 Query 1 228 use `test`; drop table t1
|
||||||
show slave status;
|
show slave status;
|
||||||
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space
|
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key
|
||||||
127.0.0.1 root MASTER_PORT 1 master-bin.000002 276 slave-relay-bin.000003 214 master-bin.000002 Yes Yes 0 0 276 214
|
127.0.0.1 root MASTER_PORT 1 master-bin.000002 276 slave-relay-bin.000003 214 master-bin.000002 Yes Yes 0 0 276 214 No
|
||||||
show binlog events in 'slave-bin.000005' from 4;
|
show binlog events in 'slave-bin.000005' from 4;
|
||||||
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log
|
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log
|
||||||
|
@ -8,26 +8,26 @@ show master status;
|
|||||||
File Position Binlog_do_db Binlog_ignore_db
|
File Position Binlog_do_db Binlog_ignore_db
|
||||||
master-bin.000001 79
|
master-bin.000001 79
|
||||||
show slave status;
|
show slave status;
|
||||||
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space
|
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key
|
||||||
127.0.0.1 root MASTER_PORT 1 master-bin.000001 79 slave-relay-bin.000002 123 master-bin.000001 Yes Yes 0 0 79 123
|
127.0.0.1 root MASTER_PORT 1 master-bin.000001 79 slave-relay-bin.000002 123 master-bin.000001 Yes Yes 0 0 79 123 No
|
||||||
stop slave;
|
stop slave;
|
||||||
change master to master_log_pos=73;
|
change master to master_log_pos=73;
|
||||||
start slave;
|
start slave;
|
||||||
stop slave;
|
stop slave;
|
||||||
change master to master_log_pos=73;
|
change master to master_log_pos=73;
|
||||||
show slave status;
|
show slave status;
|
||||||
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space
|
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key
|
||||||
127.0.0.1 root MASTER_PORT 1 master-bin.000001 73 slave-relay-bin.000001 4 master-bin.000001 No No 0 0 73 4
|
127.0.0.1 root MASTER_PORT 1 master-bin.000001 73 slave-relay-bin.000001 4 master-bin.000001 No No 0 0 73 4 No
|
||||||
start slave;
|
start slave;
|
||||||
show slave status;
|
show slave status;
|
||||||
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space
|
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key
|
||||||
127.0.0.1 root MASTER_PORT 1 master-bin.000001 73 slave-relay-bin.000001 48 master-bin.000001 No Yes 0 0 73 48
|
127.0.0.1 root MASTER_PORT 1 master-bin.000001 73 slave-relay-bin.000001 48 master-bin.000001 No Yes 0 0 73 48 No
|
||||||
stop slave;
|
stop slave;
|
||||||
change master to master_log_pos=173;
|
change master to master_log_pos=173;
|
||||||
start slave;
|
start slave;
|
||||||
show slave status;
|
show slave status;
|
||||||
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space
|
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key
|
||||||
127.0.0.1 root MASTER_PORT 1 master-bin.000001 173 slave-relay-bin.000001 4 master-bin.000001 No Yes 0 0 173 4
|
127.0.0.1 root MASTER_PORT 1 master-bin.000001 173 slave-relay-bin.000001 4 master-bin.000001 No Yes 0 0 173 4 No
|
||||||
show master status;
|
show master status;
|
||||||
File Position Binlog_do_db Binlog_ignore_db
|
File Position Binlog_do_db Binlog_ignore_db
|
||||||
master-bin.000001 79
|
master-bin.000001 79
|
||||||
|
30
mysql-test/r/rpl_openssl.result
Normal file
30
mysql-test/r/rpl_openssl.result
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
stop slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
reset master;
|
||||||
|
reset slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
start slave;
|
||||||
|
grant replication slave on *.* to replssl@'%' require ssl;
|
||||||
|
create table t1 (t int);
|
||||||
|
stop slave;
|
||||||
|
change master to master_user='replssl',master_password='';
|
||||||
|
start slave;
|
||||||
|
insert into t1 values (1);
|
||||||
|
select * from t1;
|
||||||
|
t
|
||||||
|
stop slave;
|
||||||
|
change master to master_ssl=1 , master_ssl_ca ='MYSQL_TEST_DIR/std_data/cacert.pem', master_ssl_cert='MYSQL_TEST_DIR/std_data/client-cert.pem', master_ssl_key='MYSQL_TEST_DIR/std_data/client-key.pem';
|
||||||
|
start slave;
|
||||||
|
select * from t1;
|
||||||
|
t
|
||||||
|
1
|
||||||
|
show slave status;
|
||||||
|
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key
|
||||||
|
127.0.0.1 replssl MASTER_MYPORT 1 master-bin.000001 289 slave-relay-bin.000001 64 master-bin.000001 Yes Yes 0 0 289 64 Yes MYSQL_TEST_DIR/std_data/cacert.pem MYSQL_TEST_DIR/std_data/client-cert.pem MYSQL_TEST_DIR/std_data/client-key.pem
|
||||||
|
stop slave;
|
||||||
|
change master to master_user='root',master_password='', master_ssl=0;
|
||||||
|
start slave;
|
||||||
|
drop table t1;
|
||||||
|
show slave status;
|
||||||
|
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key
|
||||||
|
127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 337 slave-relay-bin.000001 52 master-bin.000001 Yes Yes 0 0 337 52 No MYSQL_TEST_DIR/std_data/cacert.pem MYSQL_TEST_DIR/std_data/client-cert.pem MYSQL_TEST_DIR/std_data/client-key.pem
|
@ -5,7 +5,7 @@ reset slave;
|
|||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
start slave;
|
start slave;
|
||||||
SHOW SLAVE STATUS;
|
SHOW SLAVE STATUS;
|
||||||
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space
|
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key
|
||||||
SHOW SLAVE HOSTS;
|
SHOW SLAVE HOSTS;
|
||||||
Server_id Host Port Rpl_recovery_rank Master_id
|
Server_id Host Port Rpl_recovery_rank Master_id
|
||||||
2 127.0.0.1 SLAVE_PORT 2 1
|
2 127.0.0.1 SLAVE_PORT 2 1
|
||||||
|
@ -27,5 +27,5 @@ select * from t11;
|
|||||||
ERROR 42S02: Table 'test.t11' doesn't exist
|
ERROR 42S02: Table 'test.t11' doesn't exist
|
||||||
drop table if exists t1,t2,t11;
|
drop table if exists t1,t2,t11;
|
||||||
show slave status;
|
show slave status;
|
||||||
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space
|
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key
|
||||||
127.0.0.1 root MASTER_PORT 1 master-bin.000001 1281 slave-relay-bin.000002 1325 master-bin.000001 Yes Yes test.t1 0 0 1281 1325
|
127.0.0.1 root MASTER_PORT 1 master-bin.000001 1281 slave-relay-bin.000002 1325 master-bin.000001 Yes Yes test.t1 0 0 1281 1325 No
|
||||||
|
@ -15,8 +15,8 @@ insert into temp_table values ("testing temporary tables");
|
|||||||
create table t1 (s text);
|
create table t1 (s text);
|
||||||
insert into t1 values('Could not break slave'),('Tried hard');
|
insert into t1 values('Could not break slave'),('Tried hard');
|
||||||
show slave status;
|
show slave status;
|
||||||
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space
|
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key
|
||||||
127.0.0.1 root MASTER_PORT 60 master-bin.000001 417 slave-relay-bin.000001 461 master-bin.000001 Yes Yes 0 0 417 461
|
127.0.0.1 root MASTER_PORT 60 master-bin.000001 417 slave-relay-bin.000001 461 master-bin.000001 Yes Yes 0 0 417 461 No
|
||||||
select * from t1;
|
select * from t1;
|
||||||
s
|
s
|
||||||
Could not break slave
|
Could not break slave
|
||||||
@ -56,8 +56,8 @@ Log_name
|
|||||||
master-bin.000003
|
master-bin.000003
|
||||||
insert into t2 values (65);
|
insert into t2 values (65);
|
||||||
show slave status;
|
show slave status;
|
||||||
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space
|
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key
|
||||||
127.0.0.1 root MASTER_PORT 60 master-bin.000003 290 slave-relay-bin.000001 1088 master-bin.000003 Yes Yes 0 0 290 1088
|
127.0.0.1 root MASTER_PORT 60 master-bin.000003 290 slave-relay-bin.000001 1088 master-bin.000003 Yes Yes 0 0 290 1088 No
|
||||||
select * from t2;
|
select * from t2;
|
||||||
m
|
m
|
||||||
34
|
34
|
||||||
@ -80,8 +80,8 @@ select * from t4;
|
|||||||
a
|
a
|
||||||
testing temporary tables part 2
|
testing temporary tables part 2
|
||||||
show slave status;
|
show slave status;
|
||||||
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space
|
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key
|
||||||
127.0.0.1 root MASTER_PORT 60 master-bin.000004 2886 slave-relay-bin.000001 7891 master-bin.000004 Yes Yes 0 0 2886 7891
|
127.0.0.1 root MASTER_PORT 60 master-bin.000006 2886 slave-relay-bin.000001 7891 master-bin.000006 Yes Yes 0 0 2886 7891 No
|
||||||
lock tables t3 read;
|
lock tables t3 read;
|
||||||
select count(*) from t3 where n >= 4;
|
select count(*) from t3 where n >= 4;
|
||||||
count(*)
|
count(*)
|
||||||
|
60
mysql-test/t/rpl_openssl.test
Normal file
60
mysql-test/t/rpl_openssl.test
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
source include/have_openssl_1.inc;
|
||||||
|
source include/master-slave.inc;
|
||||||
|
|
||||||
|
# We don't test all types of ssl auth params here since it's a bit hard
|
||||||
|
# until problems with OpenSSL 0.9.7 are unresolved
|
||||||
|
|
||||||
|
# creating replication user for whom ssl auth is required
|
||||||
|
# preparing playground
|
||||||
|
connection master;
|
||||||
|
grant replication slave on *.* to replssl@'%' require ssl;
|
||||||
|
create table t1 (t int);
|
||||||
|
save_master_pos;
|
||||||
|
|
||||||
|
#syncing with master
|
||||||
|
connection slave;
|
||||||
|
sync_with_master;
|
||||||
|
|
||||||
|
#trying to use this user without ssl
|
||||||
|
stop slave;
|
||||||
|
change master to master_user='replssl',master_password='';
|
||||||
|
start slave;
|
||||||
|
|
||||||
|
#showing that replication don't work
|
||||||
|
connection master;
|
||||||
|
insert into t1 values (1);
|
||||||
|
#reasonable timeout for changes to propagate to slave
|
||||||
|
sleep 3;
|
||||||
|
connection slave;
|
||||||
|
select * from t1;
|
||||||
|
|
||||||
|
#showing that replication could work with ssl params
|
||||||
|
stop slave;
|
||||||
|
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
||||||
|
eval change master to master_ssl=1 , master_ssl_ca ='$MYSQL_TEST_DIR/std_data/cacert.pem', master_ssl_cert='$MYSQL_TEST_DIR/std_data/client-cert.pem', master_ssl_key='$MYSQL_TEST_DIR/std_data/client-key.pem';
|
||||||
|
start slave;
|
||||||
|
|
||||||
|
#avoiding unneeded sleeps
|
||||||
|
connection master;
|
||||||
|
save_master_pos;
|
||||||
|
connection slave;
|
||||||
|
sync_with_master;
|
||||||
|
|
||||||
|
#checking that replication is ok
|
||||||
|
select * from t1;
|
||||||
|
|
||||||
|
#checking show slave status
|
||||||
|
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR $MASTER_MYPORT MASTER_MYPORT
|
||||||
|
show slave status;
|
||||||
|
|
||||||
|
#checking if replication works without ssl also performing clean up
|
||||||
|
stop slave;
|
||||||
|
change master to master_user='root',master_password='', master_ssl=0;
|
||||||
|
start slave;
|
||||||
|
connection master;
|
||||||
|
drop table t1;
|
||||||
|
save_master_pos;
|
||||||
|
connection slave;
|
||||||
|
sync_with_master;
|
||||||
|
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR $MASTER_MYPORT MASTER_MYPORT
|
||||||
|
show slave status;
|
@ -249,6 +249,12 @@ static SYMBOL symbols[] = {
|
|||||||
{ "MASTER_PASSWORD", SYM(MASTER_PASSWORD_SYM),0,0},
|
{ "MASTER_PASSWORD", SYM(MASTER_PASSWORD_SYM),0,0},
|
||||||
{ "MASTER_PORT", SYM(MASTER_PORT_SYM),0,0},
|
{ "MASTER_PORT", SYM(MASTER_PORT_SYM),0,0},
|
||||||
{ "MASTER_SERVER_ID", SYM(MASTER_SERVER_ID_SYM),0,0},
|
{ "MASTER_SERVER_ID", SYM(MASTER_SERVER_ID_SYM),0,0},
|
||||||
|
{ "MASTER_SSL", SYM(MASTER_SSL_SYM),0,0},
|
||||||
|
{ "MASTER_SSL_CA", SYM(MASTER_SSL_CA_SYM),0,0},
|
||||||
|
{ "MASTER_SSL_CAPATH",SYM(MASTER_SSL_CAPATH_SYM),0,0},
|
||||||
|
{ "MASTER_SSL_CERT", SYM(MASTER_SSL_CERT_SYM),0,0},
|
||||||
|
{ "MASTER_SSL_CIPHER",SYM(MASTER_SSL_CIPHER_SYM),0,0},
|
||||||
|
{ "MASTER_SSL_KEY", SYM(MASTER_SSL_KEY_SYM),0,0},
|
||||||
{ "MASTER_USER", SYM(MASTER_USER_SYM),0,0},
|
{ "MASTER_USER", SYM(MASTER_USER_SYM),0,0},
|
||||||
{ "MAX_ROWS", SYM(MAX_ROWS),0,0},
|
{ "MAX_ROWS", SYM(MAX_ROWS),0,0},
|
||||||
{ "MAX_QUERIES_PER_HOUR", SYM(MAX_QUERIES_PER_HOUR), 0,0},
|
{ "MAX_QUERIES_PER_HOUR", SYM(MAX_QUERIES_PER_HOUR), 0,0},
|
||||||
|
@ -362,15 +362,15 @@ pthread_t signal_thread;
|
|||||||
pthread_attr_t connection_attrib;
|
pthread_attr_t connection_attrib;
|
||||||
|
|
||||||
/* replication parameters, if master_host is not NULL, we are a slave */
|
/* replication parameters, if master_host is not NULL, we are a slave */
|
||||||
my_bool master_ssl;
|
|
||||||
uint master_port= MYSQL_PORT, master_connect_retry = 60;
|
uint master_port= MYSQL_PORT, master_connect_retry = 60;
|
||||||
uint report_port= MYSQL_PORT;
|
uint report_port= MYSQL_PORT;
|
||||||
ulong master_retry_count=0;
|
ulong master_retry_count=0;
|
||||||
char *master_user, *master_password, *master_host, *master_info_file;
|
char *master_user, *master_password, *master_host, *master_info_file;
|
||||||
char *relay_log_info_file, *master_ssl_key, *master_ssl_cert;
|
char *relay_log_info_file, *report_user, *report_password, *report_host;
|
||||||
char *master_ssl_capath, *master_ssl_cipher, *report_user;
|
|
||||||
char *report_password, *report_host;
|
|
||||||
char *opt_relay_logname = 0, *opt_relaylog_index_name=0;
|
char *opt_relay_logname = 0, *opt_relaylog_index_name=0;
|
||||||
|
my_bool master_ssl;
|
||||||
|
char *master_ssl_key, *master_ssl_cert;
|
||||||
|
char *master_ssl_ca, *master_ssl_capath, *master_ssl_cipher;
|
||||||
|
|
||||||
/* Static variables */
|
/* Static variables */
|
||||||
|
|
||||||
@ -3445,7 +3445,7 @@ enum options
|
|||||||
OPT_MASTER_RETRY_COUNT,
|
OPT_MASTER_RETRY_COUNT,
|
||||||
OPT_MASTER_SSL, OPT_MASTER_SSL_KEY,
|
OPT_MASTER_SSL, OPT_MASTER_SSL_KEY,
|
||||||
OPT_MASTER_SSL_CERT, OPT_MASTER_SSL_CAPATH,
|
OPT_MASTER_SSL_CERT, OPT_MASTER_SSL_CAPATH,
|
||||||
OPT_MASTER_SSL_CIPHER,
|
OPT_MASTER_SSL_CIPHER, OPT_MASTER_SSL_CA,
|
||||||
OPT_SQL_BIN_UPDATE_SAME, OPT_REPLICATE_DO_DB,
|
OPT_SQL_BIN_UPDATE_SAME, OPT_REPLICATE_DO_DB,
|
||||||
OPT_REPLICATE_IGNORE_DB, OPT_LOG_SLAVE_UPDATES,
|
OPT_REPLICATE_IGNORE_DB, OPT_LOG_SLAVE_UPDATES,
|
||||||
OPT_BINLOG_DO_DB, OPT_BINLOG_IGNORE_DB,
|
OPT_BINLOG_DO_DB, OPT_BINLOG_IGNORE_DB,
|
||||||
@ -3783,27 +3783,28 @@ thread is in the master's binlogs.",
|
|||||||
(gptr*) &master_info_file, (gptr*) &master_info_file, 0, GET_STR,
|
(gptr*) &master_info_file, (gptr*) &master_info_file, 0, GET_STR,
|
||||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"master-ssl", OPT_MASTER_SSL,
|
{"master-ssl", OPT_MASTER_SSL,
|
||||||
"Planned to enable the slave to connect to the master using SSL. Does nothing yet.",
|
"Enable the slave to connect to the master using SSL.",
|
||||||
(gptr*) &master_ssl, (gptr*) &master_ssl, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
|
(gptr*) &master_ssl, (gptr*) &master_ssl, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
|
||||||
0, 0},
|
0, 0},
|
||||||
{"master-ssl-key", OPT_MASTER_SSL_KEY,
|
{"master-ssl-key", OPT_MASTER_SSL_KEY,
|
||||||
"Master SSL keyfile name. Only applies if you have enabled master-ssl. Does \
|
"Master SSL keyfile name. Only applies if you have enabled master-ssl.",
|
||||||
nothing yet.",
|
|
||||||
(gptr*) &master_ssl_key, (gptr*) &master_ssl_key, 0, GET_STR, OPT_ARG,
|
(gptr*) &master_ssl_key, (gptr*) &master_ssl_key, 0, GET_STR, OPT_ARG,
|
||||||
0, 0, 0, 0, 0, 0},
|
0, 0, 0, 0, 0, 0},
|
||||||
{"master-ssl-cert", OPT_MASTER_SSL_CERT,
|
{"master-ssl-cert", OPT_MASTER_SSL_CERT,
|
||||||
"Master SSL certificate file name. Only applies if you have enabled \
|
"Master SSL certificate file name. Only applies if you have enabled \
|
||||||
master-ssl. Does nothing yet.",
|
master-ssl",
|
||||||
(gptr*) &master_ssl_cert, (gptr*) &master_ssl_cert, 0, GET_STR, OPT_ARG,
|
(gptr*) &master_ssl_cert, (gptr*) &master_ssl_cert, 0, GET_STR, OPT_ARG,
|
||||||
0, 0, 0, 0, 0, 0},
|
0, 0, 0, 0, 0, 0},
|
||||||
|
{"master-ssl-ca", OPT_MASTER_SSL_CA,
|
||||||
|
"Master SSL CA file. Only applies if you have enabled master-ssl.",
|
||||||
|
(gptr*) &master_ssl_ca, (gptr*) &master_ssl_ca, 0, GET_STR, OPT_ARG,
|
||||||
|
0, 0, 0, 0, 0, 0},
|
||||||
{"master-ssl-capath", OPT_MASTER_SSL_CAPATH,
|
{"master-ssl-capath", OPT_MASTER_SSL_CAPATH,
|
||||||
"Master SSL CA path. Only applies if you have enabled master-ssl. \
|
"Master SSL CA path. Only applies if you have enabled master-ssl.",
|
||||||
Does nothing yet.",
|
|
||||||
(gptr*) &master_ssl_capath, (gptr*) &master_ssl_capath, 0, GET_STR, OPT_ARG,
|
(gptr*) &master_ssl_capath, (gptr*) &master_ssl_capath, 0, GET_STR, OPT_ARG,
|
||||||
0, 0, 0, 0, 0, 0},
|
0, 0, 0, 0, 0, 0},
|
||||||
{"master-ssl-cipher", OPT_MASTER_SSL_CIPHER,
|
{"master-ssl-cipher", OPT_MASTER_SSL_CIPHER,
|
||||||
"Master SSL cipher. Only applies if you have enabled master-ssl. \
|
"Master SSL cipher. Only applies if you have enabled master-ssl.",
|
||||||
Does nothing yet.",
|
|
||||||
(gptr*) &master_ssl_cipher, (gptr*) &master_ssl_capath, 0, GET_STR, OPT_ARG,
|
(gptr*) &master_ssl_cipher, (gptr*) &master_ssl_capath, 0, GET_STR, OPT_ARG,
|
||||||
0, 0, 0, 0, 0, 0},
|
0, 0, 0, 0, 0, 0},
|
||||||
{"myisam-recover", OPT_MYISAM_RECOVER,
|
{"myisam-recover", OPT_MYISAM_RECOVER,
|
||||||
@ -4787,8 +4788,9 @@ static void mysql_init_variables(void)
|
|||||||
master_user= (char*) "test";
|
master_user= (char*) "test";
|
||||||
master_password= master_host= 0;
|
master_password= master_host= 0;
|
||||||
master_info_file= (char*) "master.info",
|
master_info_file= (char*) "master.info",
|
||||||
relay_log_info_file= (char*) "relay-log.info",
|
relay_log_info_file= (char*) "relay-log.info";
|
||||||
master_ssl_key= master_ssl_cert= master_ssl_capath= master_ssl_cipher= 0;
|
master_ssl_key= master_ssl_cert= master_ssl_ca=
|
||||||
|
master_ssl_capath= master_ssl_cipher= 0;
|
||||||
report_user= report_password = report_host= 0; /* TO BE DELETED */
|
report_user= report_password = report_host= 0; /* TO BE DELETED */
|
||||||
opt_relay_logname= opt_relaylog_index_name= 0;
|
opt_relay_logname= opt_relaylog_index_name= 0;
|
||||||
|
|
||||||
|
@ -670,6 +670,17 @@ int connect_to_master(THD *thd, MYSQL* mysql, MASTER_INFO* mi)
|
|||||||
}
|
}
|
||||||
mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (char *) &slave_net_timeout);
|
mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (char *) &slave_net_timeout);
|
||||||
mysql_options(mysql, MYSQL_OPT_READ_TIMEOUT, (char *) &slave_net_timeout);
|
mysql_options(mysql, MYSQL_OPT_READ_TIMEOUT, (char *) &slave_net_timeout);
|
||||||
|
|
||||||
|
#ifdef HAVE_OPENSSL
|
||||||
|
if (mi->ssl)
|
||||||
|
mysql_ssl_set(mysql,
|
||||||
|
mi->ssl_key[0]?mi->ssl_key:0,
|
||||||
|
mi->ssl_cert[0]?mi->ssl_cert:0,
|
||||||
|
mi->ssl_ca[0]?mi->ssl_ca:0,
|
||||||
|
mi->ssl_capath[0]?mi->ssl_capath:0,
|
||||||
|
mi->ssl_cipher[0]?mi->ssl_cipher:0);
|
||||||
|
#endif
|
||||||
|
|
||||||
mysql_options(mysql, MYSQL_SET_CHARSET_NAME, default_charset_info->csname);
|
mysql_options(mysql, MYSQL_SET_CHARSET_NAME, default_charset_info->csname);
|
||||||
mysql_options(mysql, MYSQL_SET_CHARSET_DIR, (char *) charsets_dir);
|
mysql_options(mysql, MYSQL_SET_CHARSET_DIR, (char *) charsets_dir);
|
||||||
if (!mysql_real_connect(mysql, mi->host, mi->user, mi->password, 0,
|
if (!mysql_real_connect(mysql, mi->host, mi->user, mi->password, 0,
|
||||||
|
@ -278,3 +278,4 @@ v/*
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -272,3 +272,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -280,3 +280,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -274,3 +274,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -274,3 +274,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -269,3 +269,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -278,3 +278,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -269,3 +269,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -271,3 +271,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -269,3 +269,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -271,3 +271,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -269,3 +269,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -271,3 +271,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -271,3 +271,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -273,3 +273,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -269,3 +269,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -273,3 +273,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -271,3 +271,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -264,3 +264,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -277,3 +277,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -270,3 +270,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -269,3 +269,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
@ -274,3 +274,4 @@
|
|||||||
"Illegal mix of collations for operation '%s'",
|
"Illegal mix of collations for operation '%s'",
|
||||||
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)",
|
||||||
"Unknown collation: '%-.64s'",
|
"Unknown collation: '%-.64s'",
|
||||||
|
"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started."
|
||||||
|
147
sql/slave.cc
147
sql/slave.cc
@ -1557,6 +1557,18 @@ void init_master_info_with_options(MASTER_INFO* mi)
|
|||||||
strmake(mi->password, master_password, HASH_PASSWORD_LENGTH);
|
strmake(mi->password, master_password, HASH_PASSWORD_LENGTH);
|
||||||
mi->port = master_port;
|
mi->port = master_port;
|
||||||
mi->connect_retry = master_connect_retry;
|
mi->connect_retry = master_connect_retry;
|
||||||
|
|
||||||
|
mi->ssl= master_ssl;
|
||||||
|
if (master_ssl_ca)
|
||||||
|
strmake(mi->ssl_ca, master_ssl_ca, sizeof(mi->ssl_ca)-1);
|
||||||
|
if (master_ssl_capath)
|
||||||
|
strmake(mi->ssl_capath, master_ssl_capath, sizeof(mi->ssl_capath)-1);
|
||||||
|
if (master_ssl_cert)
|
||||||
|
strmake(mi->ssl_cert, master_ssl_cert, sizeof(mi->ssl_cert)-1);
|
||||||
|
if (master_ssl_cipher)
|
||||||
|
strmake(mi->ssl_cipher, master_ssl_cipher, sizeof(mi->ssl_cipher)-1);
|
||||||
|
if (master_ssl_key)
|
||||||
|
strmake(mi->ssl_key, master_ssl_key, sizeof(mi->ssl_key)-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void clear_last_slave_error(RELAY_LOG_INFO* rli)
|
void clear_last_slave_error(RELAY_LOG_INFO* rli)
|
||||||
@ -1566,6 +1578,10 @@ void clear_last_slave_error(RELAY_LOG_INFO* rli)
|
|||||||
rli->last_slave_errno=0;
|
rli->last_slave_errno=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#define LINES_IN_MASTER_INFO_WITH_SSL 14
|
||||||
|
|
||||||
|
|
||||||
int init_master_info(MASTER_INFO* mi, const char* master_info_fname,
|
int init_master_info(MASTER_INFO* mi, const char* master_info_fname,
|
||||||
const char* slave_info_fname,
|
const char* slave_info_fname,
|
||||||
bool abort_if_no_master_info_file)
|
bool abort_if_no_master_info_file)
|
||||||
@ -1643,12 +1659,50 @@ file '%s')", fname);
|
|||||||
}
|
}
|
||||||
|
|
||||||
mi->fd = fd;
|
mi->fd = fd;
|
||||||
int port, connect_retry, master_log_pos;
|
int port, connect_retry, master_log_pos, ssl= 0, lines;
|
||||||
|
char *first_non_digit;
|
||||||
|
|
||||||
|
/*
|
||||||
|
Starting from 4.1.x master.info has new format. Now its
|
||||||
|
first line contains number of lines in file. By reading this
|
||||||
|
number we will be always distinguish to which version our
|
||||||
|
master.info corresponds to. We can't simply count lines in
|
||||||
|
file since versions before 4.1.x could generate files with more
|
||||||
|
lines than needed.
|
||||||
|
If first line doesn't contain a number or contain number less than
|
||||||
|
14 then such file is treated like file from pre 4.1.1 version.
|
||||||
|
There is no ambiguity when reading an old master.info, as before
|
||||||
|
4.1.1, the first line contained the binlog's name, which is either
|
||||||
|
empty or has an extension (contains a '.'), so can't be confused
|
||||||
|
with an integer.
|
||||||
|
|
||||||
|
So we're just reading first line and trying to figure which version
|
||||||
|
is this.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
The first row is temporarily stored in mi->master_log_name,
|
||||||
|
if it is line count and not binlog name (new format) it will be
|
||||||
|
overwritten by the second row later.
|
||||||
|
*/
|
||||||
if (init_strvar_from_file(mi->master_log_name,
|
if (init_strvar_from_file(mi->master_log_name,
|
||||||
sizeof(mi->master_log_name), &mi->file,
|
sizeof(mi->master_log_name), &mi->file,
|
||||||
"") ||
|
""))
|
||||||
init_intvar_from_file(&master_log_pos, &mi->file, 4) ||
|
goto errwithmsg;
|
||||||
|
|
||||||
|
lines= strtoul(mi->master_log_name, &first_non_digit, 10);
|
||||||
|
|
||||||
|
if (mi->master_log_name[0]!='\0' &&
|
||||||
|
*first_non_digit=='\0' && lines >= LINES_IN_MASTER_INFO_WITH_SSL)
|
||||||
|
{ // Seems to be new format
|
||||||
|
if (init_strvar_from_file(mi->master_log_name,
|
||||||
|
sizeof(mi->master_log_name), &mi->file, ""))
|
||||||
|
goto errwithmsg;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
lines= 7;
|
||||||
|
|
||||||
|
if (init_intvar_from_file(&master_log_pos, &mi->file, 4) ||
|
||||||
init_strvar_from_file(mi->host, sizeof(mi->host), &mi->file,
|
init_strvar_from_file(mi->host, sizeof(mi->host), &mi->file,
|
||||||
master_host) ||
|
master_host) ||
|
||||||
init_strvar_from_file(mi->user, sizeof(mi->user), &mi->file,
|
init_strvar_from_file(mi->user, sizeof(mi->user), &mi->file,
|
||||||
@ -1658,10 +1712,34 @@ file '%s')", fname);
|
|||||||
init_intvar_from_file(&port, &mi->file, master_port) ||
|
init_intvar_from_file(&port, &mi->file, master_port) ||
|
||||||
init_intvar_from_file(&connect_retry, &mi->file,
|
init_intvar_from_file(&connect_retry, &mi->file,
|
||||||
master_connect_retry))
|
master_connect_retry))
|
||||||
{
|
goto errwithmsg;
|
||||||
sql_print_error("Error reading master configuration");
|
|
||||||
goto err;
|
/*
|
||||||
}
|
If file has ssl part use it even if we have server without
|
||||||
|
SSL support. But these option will be ignored later when
|
||||||
|
slave will try connect to master, so in this case warning
|
||||||
|
is printed.
|
||||||
|
*/
|
||||||
|
if (lines >= LINES_IN_MASTER_INFO_WITH_SSL &&
|
||||||
|
(init_intvar_from_file(&ssl, &mi->file, master_ssl) ||
|
||||||
|
init_strvar_from_file(mi->ssl_ca, sizeof(mi->ssl_ca),
|
||||||
|
&mi->file, master_ssl_ca) ||
|
||||||
|
init_strvar_from_file(mi->ssl_capath, sizeof(mi->ssl_capath),
|
||||||
|
&mi->file, master_ssl_capath) ||
|
||||||
|
init_strvar_from_file(mi->ssl_cert, sizeof(mi->ssl_cert),
|
||||||
|
&mi->file, master_ssl_cert) ||
|
||||||
|
init_strvar_from_file(mi->ssl_cipher, sizeof(mi->ssl_cipher),
|
||||||
|
&mi->file, master_ssl_cipher) ||
|
||||||
|
init_strvar_from_file(mi->ssl_key, sizeof(mi->ssl_key),
|
||||||
|
&mi->file, master_ssl_key)))
|
||||||
|
goto errwithmsg;
|
||||||
|
#ifndef HAVE_OPENSSL
|
||||||
|
if (ssl)
|
||||||
|
sql_print_error("SSL information in the master info file "
|
||||||
|
"('%s') are ignored because this MySQL slave was compiled "
|
||||||
|
"without SSL support.", fname);
|
||||||
|
#endif /* HAVE_OPENSSL */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
This has to be handled here as init_intvar_from_file can't handle
|
This has to be handled here as init_intvar_from_file can't handle
|
||||||
my_off_t types
|
my_off_t types
|
||||||
@ -1669,6 +1747,7 @@ file '%s')", fname);
|
|||||||
mi->master_log_pos= (my_off_t) master_log_pos;
|
mi->master_log_pos= (my_off_t) master_log_pos;
|
||||||
mi->port= (uint) port;
|
mi->port= (uint) port;
|
||||||
mi->connect_retry= (uint) connect_retry;
|
mi->connect_retry= (uint) connect_retry;
|
||||||
|
mi->ssl= (my_bool) ssl;
|
||||||
}
|
}
|
||||||
DBUG_PRINT("master_info",("log_file_name: %s position: %ld",
|
DBUG_PRINT("master_info",("log_file_name: %s position: %ld",
|
||||||
mi->master_log_name,
|
mi->master_log_name,
|
||||||
@ -1686,6 +1765,9 @@ file '%s')", fname);
|
|||||||
pthread_mutex_unlock(&mi->data_lock);
|
pthread_mutex_unlock(&mi->data_lock);
|
||||||
DBUG_RETURN(error);
|
DBUG_RETURN(error);
|
||||||
|
|
||||||
|
errwithmsg:
|
||||||
|
sql_print_error("Error reading master configuration");
|
||||||
|
|
||||||
err:
|
err:
|
||||||
if (fd >= 0)
|
if (fd >= 0)
|
||||||
{
|
{
|
||||||
@ -1820,6 +1902,18 @@ int show_master_info(THD* thd, MASTER_INFO* mi)
|
|||||||
MYSQL_TYPE_LONGLONG));
|
MYSQL_TYPE_LONGLONG));
|
||||||
field_list.push_back(new Item_return_int("Relay_log_space", 10,
|
field_list.push_back(new Item_return_int("Relay_log_space", 10,
|
||||||
MYSQL_TYPE_LONGLONG));
|
MYSQL_TYPE_LONGLONG));
|
||||||
|
field_list.push_back(new Item_empty_string("Master_SSL_Allowed", 7));
|
||||||
|
field_list.push_back(new Item_empty_string("Master_SSL_CA_File",
|
||||||
|
sizeof(mi->ssl_ca)));
|
||||||
|
field_list.push_back(new Item_empty_string("Master_SSL_CA_Path",
|
||||||
|
sizeof(mi->ssl_capath)));
|
||||||
|
field_list.push_back(new Item_empty_string("Master_SSL_Cert",
|
||||||
|
sizeof(mi->ssl_cert)));
|
||||||
|
field_list.push_back(new Item_empty_string("Master_SSL_Cipher",
|
||||||
|
sizeof(mi->ssl_cipher)));
|
||||||
|
field_list.push_back(new Item_empty_string("Master_SSL_Key",
|
||||||
|
sizeof(mi->ssl_key)));
|
||||||
|
|
||||||
if (protocol->send_fields(&field_list, 1))
|
if (protocol->send_fields(&field_list, 1))
|
||||||
DBUG_RETURN(-1);
|
DBUG_RETURN(-1);
|
||||||
|
|
||||||
@ -1868,6 +1962,17 @@ int show_master_info(THD* thd, MASTER_INFO* mi)
|
|||||||
protocol->store((uint32) mi->rli.slave_skip_counter);
|
protocol->store((uint32) mi->rli.slave_skip_counter);
|
||||||
protocol->store((ulonglong) mi->rli.group_master_log_pos);
|
protocol->store((ulonglong) mi->rli.group_master_log_pos);
|
||||||
protocol->store((ulonglong) mi->rli.log_space_total);
|
protocol->store((ulonglong) mi->rli.log_space_total);
|
||||||
|
#ifdef HAVE_OPENSSL
|
||||||
|
protocol->store(mi->ssl? "Yes":"No", &my_charset_bin);
|
||||||
|
#else
|
||||||
|
protocol->store(mi->ssl? "Ignored":"No", &my_charset_bin);
|
||||||
|
#endif
|
||||||
|
protocol->store(mi->ssl_ca, &my_charset_bin);
|
||||||
|
protocol->store(mi->ssl_capath, &my_charset_bin);
|
||||||
|
protocol->store(mi->ssl_cert, &my_charset_bin);
|
||||||
|
protocol->store(mi->ssl_cipher, &my_charset_bin);
|
||||||
|
protocol->store(mi->ssl_key, &my_charset_bin);
|
||||||
|
|
||||||
pthread_mutex_unlock(&mi->rli.data_lock);
|
pthread_mutex_unlock(&mi->rli.data_lock);
|
||||||
pthread_mutex_unlock(&mi->data_lock);
|
pthread_mutex_unlock(&mi->data_lock);
|
||||||
|
|
||||||
@ -1886,11 +1991,22 @@ bool flush_master_info(MASTER_INFO* mi)
|
|||||||
DBUG_ENTER("flush_master_info");
|
DBUG_ENTER("flush_master_info");
|
||||||
DBUG_PRINT("enter",("master_pos: %ld", (long) mi->master_log_pos));
|
DBUG_PRINT("enter",("master_pos: %ld", (long) mi->master_log_pos));
|
||||||
|
|
||||||
|
/*
|
||||||
|
In certain cases this code may create master.info files that seems
|
||||||
|
corrupted, because of extra lines filled with garbage in the end
|
||||||
|
file (this happens if new contents take less space than previous
|
||||||
|
contents of file). But because of number of lines in the first line
|
||||||
|
of file we don't care about this garbage.
|
||||||
|
*/
|
||||||
|
|
||||||
my_b_seek(file, 0L);
|
my_b_seek(file, 0L);
|
||||||
my_b_printf(file, "%s\n%s\n%s\n%s\n%s\n%d\n%d\n",
|
my_b_printf(file, "%u\n%s\n%s\n%s\n%s\n%s\n%d\n%d\n%d\n%s\n%s\n%s\n%s\n%s\n",
|
||||||
mi->master_log_name, llstr(mi->master_log_pos, lbuf),
|
LINES_IN_MASTER_INFO_WITH_SSL,
|
||||||
|
mi->master_log_name, llstr(mi->master_log_pos, lbuf),
|
||||||
mi->host, mi->user,
|
mi->host, mi->user,
|
||||||
mi->password, mi->port, mi->connect_retry);
|
mi->password, mi->port, mi->connect_retry,
|
||||||
|
(int)(mi->ssl), mi->ssl_ca, mi->ssl_capath, mi->ssl_cert,
|
||||||
|
mi->ssl_cipher, mi->ssl_key);
|
||||||
flush_io_cache(file);
|
flush_io_cache(file);
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
@ -3274,6 +3390,17 @@ static int connect_to_master(THD* thd, MYSQL* mysql, MASTER_INFO* mi,
|
|||||||
|
|
||||||
mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (char *) &slave_net_timeout);
|
mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (char *) &slave_net_timeout);
|
||||||
mysql_options(mysql, MYSQL_OPT_READ_TIMEOUT, (char *) &slave_net_timeout);
|
mysql_options(mysql, MYSQL_OPT_READ_TIMEOUT, (char *) &slave_net_timeout);
|
||||||
|
|
||||||
|
#ifdef HAVE_OPENSSL
|
||||||
|
if (mi->ssl)
|
||||||
|
mysql_ssl_set(mysql,
|
||||||
|
mi->ssl_key[0]?mi->ssl_key:0,
|
||||||
|
mi->ssl_cert[0]?mi->ssl_cert:0,
|
||||||
|
mi->ssl_ca[0]?mi->ssl_ca:0,
|
||||||
|
mi->ssl_capath[0]?mi->ssl_capath:0,
|
||||||
|
mi->ssl_cipher[0]?mi->ssl_cipher:0);
|
||||||
|
#endif
|
||||||
|
|
||||||
mysql_options(mysql, MYSQL_SET_CHARSET_NAME, default_charset_info->csname);
|
mysql_options(mysql, MYSQL_SET_CHARSET_NAME, default_charset_info->csname);
|
||||||
/* This one is not strictly needed but we have it here for completeness */
|
/* This one is not strictly needed but we have it here for completeness */
|
||||||
mysql_options(mysql, MYSQL_SET_CHARSET_DIR, (char *) charsets_dir);
|
mysql_options(mysql, MYSQL_SET_CHARSET_DIR, (char *) charsets_dir);
|
||||||
|
14
sql/slave.h
14
sql/slave.h
@ -288,16 +288,19 @@ Log_event* next_event(RELAY_LOG_INFO* rli);
|
|||||||
|
|
||||||
typedef struct st_master_info
|
typedef struct st_master_info
|
||||||
{
|
{
|
||||||
|
/* the variables below are needed because we can change masters on the fly */
|
||||||
char master_log_name[FN_REFLEN];
|
char master_log_name[FN_REFLEN];
|
||||||
char host[HOSTNAME_LENGTH+1];
|
char host[HOSTNAME_LENGTH+1];
|
||||||
char user[USERNAME_LENGTH+1];
|
char user[USERNAME_LENGTH+1];
|
||||||
char password[MAX_PASSWORD_LENGTH+1];
|
char password[MAX_PASSWORD_LENGTH+1];
|
||||||
|
my_bool ssl; // enables use of SSL connection if true
|
||||||
|
char ssl_ca[FN_REFLEN], ssl_capath[FN_REFLEN], ssl_cert[FN_REFLEN];
|
||||||
|
char ssl_cipher[FN_REFLEN], ssl_key[FN_REFLEN];
|
||||||
|
|
||||||
my_off_t master_log_pos;
|
my_off_t master_log_pos;
|
||||||
File fd; // we keep the file open, so we need to remember the file pointer
|
File fd; // we keep the file open, so we need to remember the file pointer
|
||||||
IO_CACHE file;
|
IO_CACHE file;
|
||||||
|
|
||||||
/* the variables below are needed because we can change masters on the fly */
|
|
||||||
pthread_mutex_t data_lock,run_lock;
|
pthread_mutex_t data_lock,run_lock;
|
||||||
pthread_cond_t data_cond,start_cond,stop_cond;
|
pthread_cond_t data_cond,start_cond,stop_cond;
|
||||||
THD *io_thd;
|
THD *io_thd;
|
||||||
@ -315,10 +318,13 @@ typedef struct st_master_info
|
|||||||
volatile ulong slave_run_id;
|
volatile ulong slave_run_id;
|
||||||
|
|
||||||
st_master_info()
|
st_master_info()
|
||||||
:fd(-1), io_thd(0), inited(0), old_format(BINLOG_FORMAT_CURRENT),
|
:ssl(0), fd(-1), io_thd(0), inited(0), old_format(BINLOG_FORMAT_CURRENT),
|
||||||
abort_slave(0),slave_running(0), slave_run_id(0)
|
abort_slave(0),slave_running(0), slave_run_id(0)
|
||||||
{
|
{
|
||||||
host[0] = 0; user[0] = 0; password[0] = 0;
|
host[0] = 0; user[0] = 0; password[0] = 0;
|
||||||
|
ssl_ca[0]= 0; ssl_capath[0]= 0; ssl_cert[0]= 0;
|
||||||
|
ssl_cipher[0]= 0; ssl_key[0]= 0;
|
||||||
|
|
||||||
bzero((char*) &file, sizeof(file));
|
bzero((char*) &file, sizeof(file));
|
||||||
pthread_mutex_init(&run_lock, MY_MUTEX_INIT_FAST);
|
pthread_mutex_init(&run_lock, MY_MUTEX_INIT_FAST);
|
||||||
pthread_mutex_init(&data_lock, MY_MUTEX_INIT_FAST);
|
pthread_mutex_init(&data_lock, MY_MUTEX_INIT_FAST);
|
||||||
@ -468,6 +474,10 @@ extern my_string master_user, master_password, master_host,
|
|||||||
master_info_file, relay_log_info_file, report_user, report_host,
|
master_info_file, relay_log_info_file, report_user, report_host,
|
||||||
report_password;
|
report_password;
|
||||||
|
|
||||||
|
extern my_bool master_ssl;
|
||||||
|
extern my_string master_ssl_ca, master_ssl_capath, master_ssl_cert,
|
||||||
|
master_ssl_cipher, master_ssl_key;
|
||||||
|
|
||||||
extern I_List<i_string> replicate_do_db, replicate_ignore_db;
|
extern I_List<i_string> replicate_do_db, replicate_ignore_db;
|
||||||
extern I_List<i_string_pair> replicate_rewrite_db;
|
extern I_List<i_string_pair> replicate_rewrite_db;
|
||||||
extern I_List<THD> threads;
|
extern I_List<THD> threads;
|
||||||
|
@ -87,6 +87,13 @@ typedef struct st_lex_master_info
|
|||||||
uint port, connect_retry;
|
uint port, connect_retry;
|
||||||
ulonglong pos;
|
ulonglong pos;
|
||||||
ulong server_id;
|
ulong server_id;
|
||||||
|
/*
|
||||||
|
Variable for MASTER_SSL option.
|
||||||
|
MASTER_SSL=0 in CHANGE MASTER TO corresponds to SSL_DISABLE
|
||||||
|
MASTER_SSL=1 corresponds to SSL_ENABLE
|
||||||
|
*/
|
||||||
|
enum {SSL_UNCHANGED=0, SSL_DISABLE, SSL_ENABLE} ssl;
|
||||||
|
char *ssl_key, *ssl_cert, *ssl_ca, *ssl_capath, *ssl_cipher;
|
||||||
char *relay_log_name;
|
char *relay_log_name;
|
||||||
ulong relay_log_pos;
|
ulong relay_log_pos;
|
||||||
} LEX_MASTER_INFO;
|
} LEX_MASTER_INFO;
|
||||||
|
@ -950,6 +950,25 @@ int change_master(THD* thd, MASTER_INFO* mi)
|
|||||||
if (lex_mi->connect_retry)
|
if (lex_mi->connect_retry)
|
||||||
mi->connect_retry = lex_mi->connect_retry;
|
mi->connect_retry = lex_mi->connect_retry;
|
||||||
|
|
||||||
|
if (lex_mi->ssl != LEX_MASTER_INFO::SSL_UNCHANGED)
|
||||||
|
mi->ssl= (lex_mi->ssl == LEX_MASTER_INFO::SSL_ENABLE);
|
||||||
|
if (lex_mi->ssl_ca)
|
||||||
|
strmake(mi->ssl_ca, lex_mi->ssl_ca, sizeof(mi->ssl_ca)-1);
|
||||||
|
if (lex_mi->ssl_capath)
|
||||||
|
strmake(mi->ssl_capath, lex_mi->ssl_capath, sizeof(mi->ssl_capath)-1);
|
||||||
|
if (lex_mi->ssl_cert)
|
||||||
|
strmake(mi->ssl_cert, lex_mi->ssl_cert, sizeof(mi->ssl_cert)-1);
|
||||||
|
if (lex_mi->ssl_cipher)
|
||||||
|
strmake(mi->ssl_cipher, lex_mi->ssl_cipher, sizeof(mi->ssl_cipher)-1);
|
||||||
|
if (lex_mi->ssl_key)
|
||||||
|
strmake(mi->ssl_key, lex_mi->ssl_key, sizeof(mi->ssl_key)-1);
|
||||||
|
#ifndef HAVE_OPENSSL
|
||||||
|
if (lex_mi->ssl || lex_mi->ssl_ca || lex_mi->ssl_capath ||
|
||||||
|
lex_mi->ssl_cert || lex_mi->ssl_cipher || lex_mi->ssl_key )
|
||||||
|
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_NOTE,
|
||||||
|
ER_SLAVE_IGNORED_SSL_PARAMS, ER(ER_SLAVE_IGNORED_SSL_PARAMS));
|
||||||
|
#endif
|
||||||
|
|
||||||
if (lex_mi->relay_log_name)
|
if (lex_mi->relay_log_name)
|
||||||
{
|
{
|
||||||
need_relay_log_purge= 0;
|
need_relay_log_purge= 0;
|
||||||
|
@ -277,6 +277,12 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
|
|||||||
%token MASTER_PORT_SYM
|
%token MASTER_PORT_SYM
|
||||||
%token MASTER_CONNECT_RETRY_SYM
|
%token MASTER_CONNECT_RETRY_SYM
|
||||||
%token MASTER_SERVER_ID_SYM
|
%token MASTER_SERVER_ID_SYM
|
||||||
|
%token MASTER_SSL_SYM
|
||||||
|
%token MASTER_SSL_CA_SYM
|
||||||
|
%token MASTER_SSL_CAPATH_SYM
|
||||||
|
%token MASTER_SSL_CERT_SYM
|
||||||
|
%token MASTER_SSL_CIPHER_SYM
|
||||||
|
%token MASTER_SSL_KEY_SYM
|
||||||
%token RELAY_LOG_FILE_SYM
|
%token RELAY_LOG_FILE_SYM
|
||||||
%token RELAY_LOG_POS_SYM
|
%token RELAY_LOG_POS_SYM
|
||||||
%token MATCH
|
%token MATCH
|
||||||
@ -850,6 +856,31 @@ master_def:
|
|||||||
/* Adjust if < BIN_LOG_HEADER_SIZE (same comment as Lex->mi.pos) */
|
/* Adjust if < BIN_LOG_HEADER_SIZE (same comment as Lex->mi.pos) */
|
||||||
Lex->mi.relay_log_pos = max(BIN_LOG_HEADER_SIZE, Lex->mi.relay_log_pos);
|
Lex->mi.relay_log_pos = max(BIN_LOG_HEADER_SIZE, Lex->mi.relay_log_pos);
|
||||||
}
|
}
|
||||||
|
| MASTER_SSL_SYM EQ ULONG_NUM
|
||||||
|
{
|
||||||
|
Lex->mi.ssl= $3 ?
|
||||||
|
LEX_MASTER_INFO::SSL_ENABLE : LEX_MASTER_INFO::SSL_DISABLE;
|
||||||
|
}
|
||||||
|
| MASTER_SSL_CA_SYM EQ TEXT_STRING_sys
|
||||||
|
{
|
||||||
|
Lex->mi.ssl_ca= $3.str;
|
||||||
|
}
|
||||||
|
| MASTER_SSL_CAPATH_SYM EQ TEXT_STRING_sys
|
||||||
|
{
|
||||||
|
Lex->mi.ssl_capath= $3.str;
|
||||||
|
}
|
||||||
|
| MASTER_SSL_CERT_SYM EQ TEXT_STRING_sys
|
||||||
|
{
|
||||||
|
Lex->mi.ssl_cert= $3.str;
|
||||||
|
}
|
||||||
|
| MASTER_SSL_CIPHER_SYM EQ TEXT_STRING_sys
|
||||||
|
{
|
||||||
|
Lex->mi.ssl_cipher= $3.str;
|
||||||
|
}
|
||||||
|
| MASTER_SSL_KEY_SYM EQ TEXT_STRING_sys
|
||||||
|
{
|
||||||
|
Lex->mi.ssl_key= $3.str;
|
||||||
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
@ -4456,6 +4487,12 @@ keyword:
|
|||||||
| MASTER_USER_SYM {}
|
| MASTER_USER_SYM {}
|
||||||
| MASTER_PASSWORD_SYM {}
|
| MASTER_PASSWORD_SYM {}
|
||||||
| MASTER_CONNECT_RETRY_SYM {}
|
| MASTER_CONNECT_RETRY_SYM {}
|
||||||
|
| MASTER_SSL_SYM {}
|
||||||
|
| MASTER_SSL_CA_SYM {}
|
||||||
|
| MASTER_SSL_CAPATH_SYM {}
|
||||||
|
| MASTER_SSL_CERT_SYM {}
|
||||||
|
| MASTER_SSL_CIPHER_SYM {}
|
||||||
|
| MASTER_SSL_KEY_SYM {}
|
||||||
| MAX_CONNECTIONS_PER_HOUR {}
|
| MAX_CONNECTIONS_PER_HOUR {}
|
||||||
| MAX_QUERIES_PER_HOUR {}
|
| MAX_QUERIES_PER_HOUR {}
|
||||||
| MAX_UPDATES_PER_HOUR {}
|
| MAX_UPDATES_PER_HOUR {}
|
||||||
|
Reference in New Issue
Block a user