mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
post-merge fixes, including slave-skip-errors backport
fixed too quick timeout in mysql-test-run which caused a race with the new server getting started before the old one completely finished shutdown. This should fix the pid warning we've been getting as well as inconsistent results when running tests with the manager libmysqld/lib_sql.cc: post-merge fix mysql-test/mysql-test-run.sh: fixed start/stop timeout and cleanup of log directory mysql-test/r/rpl000014.result: post-merge fix mysql-test/r/rpl000015.result: post-merge fix mysql-test/r/rpl000016.result: post-merge fix mysql-test/r/rpl_log.result: post-merge fix sql/log_event.cc: post-merge fix sql/slave.cc: post-merge fix sql/slave.h: post-merge fix sql/sql_class.h: post-merge fix tools/mysqlmanager.c: added debug message
This commit is contained in:
@ -402,9 +402,6 @@ int STDCALL mysql_server_init(int argc, char **argv, char **groups)
|
|||||||
(void) pthread_mutex_init(&LOCK_bytes_sent,MY_MUTEX_INIT_FAST);
|
(void) pthread_mutex_init(&LOCK_bytes_sent,MY_MUTEX_INIT_FAST);
|
||||||
(void) pthread_mutex_init(&LOCK_bytes_received,MY_MUTEX_INIT_FAST);
|
(void) pthread_mutex_init(&LOCK_bytes_received,MY_MUTEX_INIT_FAST);
|
||||||
(void) pthread_mutex_init(&LOCK_timezone,MY_MUTEX_INIT_FAST);
|
(void) pthread_mutex_init(&LOCK_timezone,MY_MUTEX_INIT_FAST);
|
||||||
(void) pthread_mutex_init(&LOCK_slave_io, MY_MUTEX_INIT_FAST);
|
|
||||||
(void) pthread_mutex_init(&LOCK_slave_sql, MY_MUTEX_INIT_FAST);
|
|
||||||
(void) pthread_mutex_init(&LOCK_server_id, MY_MUTEX_INIT_FAST);
|
|
||||||
(void) pthread_mutex_init(&LOCK_user_conn, MY_MUTEX_INIT_FAST);
|
(void) pthread_mutex_init(&LOCK_user_conn, MY_MUTEX_INIT_FAST);
|
||||||
(void) pthread_cond_init(&COND_thread_count,NULL);
|
(void) pthread_cond_init(&COND_thread_count,NULL);
|
||||||
(void) pthread_cond_init(&COND_refresh,NULL);
|
(void) pthread_cond_init(&COND_refresh,NULL);
|
||||||
@ -412,11 +409,6 @@ int STDCALL mysql_server_init(int argc, char **argv, char **groups)
|
|||||||
(void) pthread_cond_init(&COND_flush_thread_cache,NULL);
|
(void) pthread_cond_init(&COND_flush_thread_cache,NULL);
|
||||||
(void) pthread_cond_init(&COND_manager,NULL);
|
(void) pthread_cond_init(&COND_manager,NULL);
|
||||||
(void) pthread_cond_init(&COND_binlog_update, NULL);
|
(void) pthread_cond_init(&COND_binlog_update, NULL);
|
||||||
(void) pthread_cond_init(&COND_slave_log_update, NULL);
|
|
||||||
(void) pthread_cond_init(&COND_slave_sql_stop, NULL);
|
|
||||||
(void) pthread_cond_init(&COND_slave_sql_start, NULL);
|
|
||||||
(void) pthread_cond_init(&COND_slave_sql_stop, NULL);
|
|
||||||
(void) pthread_cond_init(&COND_slave_sql_start, NULL);
|
|
||||||
|
|
||||||
if (set_default_charset_by_name(default_charset, MYF(MY_WME)))
|
if (set_default_charset_by_name(default_charset, MYF(MY_WME)))
|
||||||
{
|
{
|
||||||
|
@ -149,6 +149,7 @@ SLAVE_LOAD_TMPDIR=../../var/tmp #needs to be same length to test logging
|
|||||||
RES_SPACE=" "
|
RES_SPACE=" "
|
||||||
MYSQLD_SRC_DIRS="strings mysys include extra regex isam merge myisam \
|
MYSQLD_SRC_DIRS="strings mysys include extra regex isam merge myisam \
|
||||||
myisammrg heap sql"
|
myisammrg heap sql"
|
||||||
|
MY_LOG_DIR="$MYSQL_TEST_DIR/var/log"
|
||||||
#
|
#
|
||||||
# Set LD_LIBRARY_PATH if we are using shared libraries
|
# Set LD_LIBRARY_PATH if we are using shared libraries
|
||||||
#
|
#
|
||||||
@ -181,8 +182,8 @@ SLEEP_TIME_FOR_FIRST_SLAVE=400
|
|||||||
SLEEP_TIME_FOR_SECOND_SLAVE=30
|
SLEEP_TIME_FOR_SECOND_SLAVE=30
|
||||||
CHARACTER_SET=latin1
|
CHARACTER_SET=latin1
|
||||||
DBUSER=""
|
DBUSER=""
|
||||||
START_WAIT_TIMEOUT=3
|
START_WAIT_TIMEOUT=10
|
||||||
STOP_WAIT_TIMEOUT=3
|
STOP_WAIT_TIMEOUT=10
|
||||||
|
|
||||||
while test $# -gt 0; do
|
while test $# -gt 0; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
@ -521,7 +522,7 @@ report_stats () {
|
|||||||
deci=`$EXPR $raw - $xwhole`
|
deci=`$EXPR $raw - $xwhole`
|
||||||
$ECHO "Failed ${TOT_FAIL}/${TOT_TEST} tests, ${whole}.${deci}% successful."
|
$ECHO "Failed ${TOT_FAIL}/${TOT_TEST} tests, ${whole}.${deci}% successful."
|
||||||
$ECHO ""
|
$ECHO ""
|
||||||
$ECHO "The log files in $MYSQL_TEST_DIR/var/log may give you some hint"
|
$ECHO "The log files in $MY_LOG_DIR may give you some hint"
|
||||||
$ECHO "of what when wrong."
|
$ECHO "of what when wrong."
|
||||||
$ECHO "If you want to report this error, please read first the documentation at"
|
$ECHO "If you want to report this error, please read first the documentation at"
|
||||||
$ECHO "http://www.mysql.com/doc/M/y/MySQL_test_suite.html"
|
$ECHO "http://www.mysql.com/doc/M/y/MySQL_test_suite.html"
|
||||||
@ -530,8 +531,7 @@ report_stats () {
|
|||||||
|
|
||||||
mysql_install_db () {
|
mysql_install_db () {
|
||||||
$ECHO "Removing Stale Files"
|
$ECHO "Removing Stale Files"
|
||||||
$RM -rf $MASTER_MYDDIR $SLAVE_MYDDIR $SLAVE_MYLOG $MASTER_MYLOG \
|
$RM -rf $MASTER_MYDDIR $SLAVE_MYDDIR $MY_LOG_DIR/*
|
||||||
$SLAVE_MYERR $MASTER_MYERR
|
|
||||||
$ECHO "Installing Master Databases"
|
$ECHO "Installing Master Databases"
|
||||||
$INSTALL_DB
|
$INSTALL_DB
|
||||||
if [ $? != 0 ]; then
|
if [ $? != 0 ]; then
|
||||||
|
@ -8,21 +8,21 @@ File Position Binlog_do_db Binlog_ignore_db
|
|||||||
master-bin.001 79
|
master-bin.001 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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
||||||
127.0.0.1 root 9306 1 master-bin.001 79 mysql-relay-bin.002 120 master-bin.001 Yes Yes 0 0 79
|
127.0.0.1 root MASTER_PORT 1 master-bin.001 79 mysql-relay-bin.002 120 master-bin.001 Yes Yes 0 0 79
|
||||||
change master to master_log_pos=73;
|
change master to master_log_pos=73;
|
||||||
slave stop;
|
slave stop;
|
||||||
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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
||||||
127.0.0.1 root 9306 1 master-bin.001 73 mysql-relay-bin.001 4 master-bin.001 No No 0 0 73
|
127.0.0.1 root MASTER_PORT 1 master-bin.001 73 mysql-relay-bin.001 4 master-bin.001 No No 0 0 73
|
||||||
slave start;
|
slave start;
|
||||||
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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
||||||
127.0.0.1 root 9306 1 master-bin.001 73 mysql-relay-bin.001 4 master-bin.001 Yes Yes 0 0 73
|
127.0.0.1 root MASTER_PORT 1 master-bin.001 73 mysql-relay-bin.001 4 master-bin.001 Yes Yes 0 0 73
|
||||||
change master to master_log_pos=173;
|
change master to master_log_pos=173;
|
||||||
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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
||||||
127.0.0.1 root 9306 1 master-bin.001 173 mysql-relay-bin.001 4 master-bin.001 Yes Yes 0 0 173
|
127.0.0.1 root MASTER_PORT 1 master-bin.001 173 mysql-relay-bin.001 4 master-bin.001 Yes Yes 0 0 173
|
||||||
show master status;
|
show master status;
|
||||||
File Position Binlog_do_db Binlog_ignore_db
|
File Position Binlog_do_db Binlog_ignore_db
|
||||||
master-bin.001 79
|
master-bin.001 79
|
||||||
|
@ -9,16 +9,16 @@ Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Lo
|
|||||||
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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
||||||
127.0.0.1 test 3306 60 4 mysql-relay-bin.001 4 No No 0 0 0
|
127.0.0.1 test MASTER_PORT 60 4 mysql-relay-bin.001 4 No No 0 0 0
|
||||||
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=9306;
|
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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
||||||
127.0.0.1 root 9306 60 4 mysql-relay-bin.001 4 No No 0 0 0
|
127.0.0.1 root MASTER_PORT 60 4 mysql-relay-bin.001 4 No No 0 0 0
|
||||||
slave start;
|
slave start;
|
||||||
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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
||||||
127.0.0.1 root 9306 60 master-bin.001 79 mysql-relay-bin.001 120 master-bin.001 Yes Yes 0 0 79
|
127.0.0.1 root MASTER_PORT 60 master-bin.001 79 mysql-relay-bin.001 120 master-bin.001 Yes Yes 0 0 79
|
||||||
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);
|
||||||
|
@ -2,11 +2,11 @@ slave start;
|
|||||||
Could not initialize master info structure, check permisions on master.info
|
Could not initialize master info structure, check permisions on master.info
|
||||||
slave start;
|
slave start;
|
||||||
Could not initialize master info structure, check permisions on master.info
|
Could not initialize master info structure, check permisions on master.info
|
||||||
change master to master_host='127.0.0.1',master_port=9306,
|
change master to master_host='127.0.0.1',master_port=MASTER_PORT,
|
||||||
master_user='root';
|
master_user='root';
|
||||||
Could not initialize master info
|
Could not initialize master info
|
||||||
reset slave;
|
reset slave;
|
||||||
change master to master_host='127.0.0.1',master_port=9306,
|
change master to master_host='127.0.0.1',master_port=MASTER_PORT,
|
||||||
master_user='root';
|
master_user='root';
|
||||||
reset master;
|
reset master;
|
||||||
slave start;
|
slave start;
|
||||||
@ -15,7 +15,7 @@ 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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
||||||
127.0.0.1 root 9306 60 master-bin.001 234 mysql-relay-bin.001 275 master-bin.001 Yes Yes 0 0 234
|
127.0.0.1 root MASTER_PORT 60 master-bin.001 234 mysql-relay-bin.001 275 master-bin.001 Yes Yes 0 0 234
|
||||||
select * from t1;
|
select * from t1;
|
||||||
s
|
s
|
||||||
Could not break slave
|
Could not break slave
|
||||||
@ -43,7 +43,7 @@ master-bin.003
|
|||||||
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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
||||||
127.0.0.1 root 9306 60 master-bin.003 155 mysql-relay-bin.001 793 master-bin.003 Yes Yes 0 0 155
|
127.0.0.1 root MASTER_PORT 60 master-bin.003 155 mysql-relay-bin.001 793 master-bin.003 Yes Yes 0 0 155
|
||||||
select * from t2;
|
select * from t2;
|
||||||
m
|
m
|
||||||
34
|
34
|
||||||
@ -66,7 +66,7 @@ slave stop;
|
|||||||
slave start;
|
slave start;
|
||||||
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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
||||||
127.0.0.1 root 9306 60 master-bin.006 445 mysql-relay-bin.004 1376 master-bin.006 Yes Yes 0 0 445
|
127.0.0.1 root MASTER_PORT 60 master-bin.006 445 mysql-relay-bin.004 1312 master-bin.006 Yes Yes 0 0 445
|
||||||
lock tables t3 read;
|
lock tables t3 read;
|
||||||
select count(*) from t3 where n >= 4;
|
select count(*) from t3 where n >= 4;
|
||||||
count(*)
|
count(*)
|
||||||
|
@ -16,7 +16,7 @@ load data infile '../../std_data/words.dat' into table t1;
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
show binlog events;
|
show binlog events;
|
||||||
Log_name Pos Event_type Server_id Orig_log_pos Info
|
Log_name Pos Event_type Server_id Orig_log_pos Info
|
||||||
master-bin.001 4 Start 1 4 Server ver: 4.0.1-alpha-debug-log, Binlog ver: 3
|
master-bin.001 4 Start 1 4 Server ver: VERSION, Binlog ver: 3
|
||||||
master-bin.001 79 Query 1 79 use test; create table t1(n int not null auto_increment primary key)
|
master-bin.001 79 Query 1 79 use test; create table t1(n int not null auto_increment primary key)
|
||||||
master-bin.001 172 Intvar 1 172 INSERT_ID=1
|
master-bin.001 172 Intvar 1 172 INSERT_ID=1
|
||||||
master-bin.001 200 Query 1 200 use test; insert into t1 values (NULL)
|
master-bin.001 200 Query 1 200 use test; insert into t1 values (NULL)
|
||||||
@ -41,7 +41,7 @@ insert into t1 values (1);
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
show binlog events;
|
show binlog events;
|
||||||
Log_name Pos Event_type Server_id Orig_log_pos Info
|
Log_name Pos Event_type Server_id Orig_log_pos Info
|
||||||
master-bin.001 4 Start 1 4 Server ver: 4.0.1-alpha-debug-log, Binlog ver: 3
|
master-bin.001 4 Start 1 4 Server ver: VERSION, Binlog ver: 3
|
||||||
master-bin.001 79 Query 1 79 use test; create table t1(n int not null auto_increment primary key)
|
master-bin.001 79 Query 1 79 use test; create table t1(n int not null auto_increment primary key)
|
||||||
master-bin.001 172 Intvar 1 172 INSERT_ID=1
|
master-bin.001 172 Intvar 1 172 INSERT_ID=1
|
||||||
master-bin.001 200 Query 1 200 use test; insert into t1 values (NULL)
|
master-bin.001 200 Query 1 200 use test; insert into t1 values (NULL)
|
||||||
@ -67,28 +67,15 @@ Log_name
|
|||||||
slave-bin.001
|
slave-bin.001
|
||||||
slave-bin.002
|
slave-bin.002
|
||||||
show binlog events in 'slave-bin.001' from 4;
|
show binlog events in 'slave-bin.001' from 4;
|
||||||
Log_name Pos Event_type Server_id Orig_log_pos Info
|
|
||||||
slave-bin.001 4 Start 2 4 Server ver: 4.0.1-alpha-debug-log, Binlog ver: 3
|
|
||||||
slave-bin.001 79 Slave 2 79 host=127.0.0.1,port=9306,log=master-bin.001,pos=4
|
|
||||||
slave-bin.001 132 Query 1 79 use test; create table t1(n int not null auto_increment primary key)
|
|
||||||
slave-bin.001 225 Intvar 1 200 INSERT_ID=1
|
|
||||||
slave-bin.001 253 Query 1 200 use test; insert into t1 values (NULL)
|
|
||||||
slave-bin.001 316 Query 1 263 use test; drop table t1
|
|
||||||
slave-bin.001 364 Query 1 311 use test; create table t1 (word char(20) not null)
|
|
||||||
slave-bin.001 439 Create_file 1 386 db=test;table=t1;file_id=1;block_len=81
|
|
||||||
slave-bin.001 618 Exec_load 1 556 ;file_id=1
|
|
||||||
slave-bin.001 641 Query 1 579 use test; drop table t1
|
|
||||||
slave-bin.001 689 Rotate 1 627 slave-bin.002;pos=4; forced by master
|
|
||||||
slave-bin.001 729 Stop 2 729
|
|
||||||
show binlog events in 'slave-bin.002' from 4;
|
show binlog events in 'slave-bin.002' from 4;
|
||||||
Log_name Pos Event_type Server_id Orig_log_pos Info
|
Log_name Pos Event_type Server_id Orig_log_pos Info
|
||||||
slave-bin.002 4 Slave 2 627 host=127.0.0.1,port=9306,log=master-bin.002,pos=4
|
slave-bin.002 4 Slave 2 627 host=127.0.0.1,port=MASTER_PORT,log=master-bin.002,pos=4
|
||||||
slave-bin.002 57 Query 1 4 use test; create table t1 (n int)
|
slave-bin.002 57 Query 1 4 use test; create table t1 (n int)
|
||||||
slave-bin.002 115 Query 1 62 use test; insert into t1 values (1)
|
slave-bin.002 115 Query 1 62 use test; insert into t1 values (1)
|
||||||
slave-bin.002 175 Query 1 122 use test; drop table t1
|
slave-bin.002 175 Query 1 122 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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
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 Last_errno Last_error Skip_counter Exec_master_log_pos
|
||||||
127.0.0.1 root 9306 1 master-bin.002 170 mysql-relay-bin.002 935 master-bin.002 Yes Yes 0 0 170
|
127.0.0.1 root MASTER_PORT 1 master-bin.002 170 mysql-relay-bin.002 935 master-bin.002 Yes Yes 0 0 170
|
||||||
show new master for slave with master_log_file='master-bin.001' and
|
show new master for slave with master_log_file='master-bin.001' and
|
||||||
master_log_pos=4 and master_server_id=1;
|
master_log_pos=4 and master_server_id=1;
|
||||||
Log_name Log_pos
|
Log_name Log_pos
|
||||||
|
@ -53,6 +53,11 @@ static void pretty_print_str(FILE* file, char* str, int len)
|
|||||||
|
|
||||||
#ifndef MYSQL_CLIENT
|
#ifndef MYSQL_CLIENT
|
||||||
|
|
||||||
|
inline int ignored_error_code(int err_code)
|
||||||
|
{
|
||||||
|
return use_slave_mask && bitmap_is_set(&slave_error_mask, err_code);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void pretty_print_str(String* packet, char* str, int len)
|
static void pretty_print_str(String* packet, char* str, int len)
|
||||||
{
|
{
|
||||||
@ -1564,7 +1569,8 @@ int Query_log_event::exec_event(struct st_relay_log_info* rli)
|
|||||||
|
|
||||||
// sanity check to make sure the master did not get a really bad
|
// sanity check to make sure the master did not get a really bad
|
||||||
// error on the query
|
// error on the query
|
||||||
if (!check_expected_error(thd,rli,(expected_error = error_code)))
|
if (ignored_error_code((expected_error = error_code)) ||
|
||||||
|
!check_expected_error(thd,rli,expected_error))
|
||||||
{
|
{
|
||||||
mysql_parse(thd, thd->query, q_len);
|
mysql_parse(thd, thd->query, q_len);
|
||||||
if (expected_error !=
|
if (expected_error !=
|
||||||
@ -1578,7 +1584,8 @@ int Query_log_event::exec_event(struct st_relay_log_info* rli)
|
|||||||
actual_error);
|
actual_error);
|
||||||
thd->query_error = 1;
|
thd->query_error = 1;
|
||||||
}
|
}
|
||||||
else if (expected_error == actual_error)
|
else if (expected_error == actual_error
|
||||||
|
|| ignored_error_code(actual_error))
|
||||||
{
|
{
|
||||||
thd->query_error = 0;
|
thd->query_error = 0;
|
||||||
*rli->last_slave_error = 0;
|
*rli->last_slave_error = 0;
|
||||||
|
33
sql/slave.cc
33
sql/slave.cc
@ -26,6 +26,9 @@
|
|||||||
#include <my_dir.h>
|
#include <my_dir.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
|
bool use_slave_mask = 0;
|
||||||
|
MY_BITMAP slave_error_mask;
|
||||||
|
|
||||||
volatile bool slave_sql_running = 0, slave_io_running = 0;
|
volatile bool slave_sql_running = 0, slave_io_running = 0;
|
||||||
char* slave_load_tmpdir = 0;
|
char* slave_load_tmpdir = 0;
|
||||||
MASTER_INFO main_mi;
|
MASTER_INFO main_mi;
|
||||||
@ -219,6 +222,36 @@ err:
|
|||||||
return (*errmsg) ? 1 : 0;
|
return (*errmsg) ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* called from get_options() in mysqld.cc on start-up */
|
||||||
|
void init_slave_skip_errors(char* arg)
|
||||||
|
{
|
||||||
|
char* p;
|
||||||
|
my_bool last_was_digit = 0;
|
||||||
|
if (bitmap_init(&slave_error_mask,MAX_SLAVE_ERROR,0))
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Badly out of memory, please check your system status\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
use_slave_mask = 1;
|
||||||
|
for (;isspace(*arg);++arg)
|
||||||
|
/* empty */;
|
||||||
|
if (!my_casecmp(arg,"all",3))
|
||||||
|
{
|
||||||
|
bitmap_set_all(&slave_error_mask);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (p= arg ; *p; )
|
||||||
|
{
|
||||||
|
long err_code;
|
||||||
|
if (!(p= str2int(p, 10, 0, LONG_MAX, &err_code)))
|
||||||
|
break;
|
||||||
|
if (err_code < MAX_SLAVE_ERROR)
|
||||||
|
bitmap_set_bit(&slave_error_mask,(uint)err_code);
|
||||||
|
while (!isdigit(*p) && *p)
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// we assume we have a run lock on rli and that the both slave thread
|
// we assume we have a run lock on rli and that the both slave thread
|
||||||
// are not running
|
// are not running
|
||||||
int purge_relay_logs(RELAY_LOG_INFO* rli, bool just_reset, const char** errmsg)
|
int purge_relay_logs(RELAY_LOG_INFO* rli, bool just_reset, const char** errmsg)
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#include "my_list.h"
|
#include "my_list.h"
|
||||||
#define SLAVE_NET_TIMEOUT 3600
|
#define SLAVE_NET_TIMEOUT 3600
|
||||||
#define MAX_SLAVE_ERRMSG 1024
|
#define MAX_SLAVE_ERRMSG 1024
|
||||||
|
#define MAX_SLAVE_ERROR 2000
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The replication is accomplished by starting two threads - I/O
|
The replication is accomplished by starting two threads - I/O
|
||||||
@ -24,12 +25,16 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
extern ulong slave_net_timeout, master_retry_count;
|
extern ulong slave_net_timeout, master_retry_count;
|
||||||
|
extern MY_BITMAP slave_error_mask;
|
||||||
|
extern bool use_slave_mask;
|
||||||
extern char* slave_load_tmpdir;
|
extern char* slave_load_tmpdir;
|
||||||
extern my_string master_info_file,relay_log_info_file;
|
extern my_string master_info_file,relay_log_info_file;
|
||||||
extern my_string opt_relay_logname, opt_relaylog_index_name;
|
extern my_string opt_relay_logname, opt_relaylog_index_name;
|
||||||
extern bool opt_skip_slave_start;
|
extern bool opt_skip_slave_start;
|
||||||
struct st_master_info;
|
struct st_master_info;
|
||||||
|
|
||||||
|
// TODO: this needs to be redone, but for now it does not matter since
|
||||||
|
// we do not have multi-master yet.
|
||||||
#define LOCK_ACTIVE_MI { pthread_mutex_lock(&LOCK_active_mi); \
|
#define LOCK_ACTIVE_MI { pthread_mutex_lock(&LOCK_active_mi); \
|
||||||
++active_mi_in_use; \
|
++active_mi_in_use; \
|
||||||
pthread_mutex_unlock(&LOCK_active_mi);}
|
pthread_mutex_unlock(&LOCK_active_mi);}
|
||||||
@ -286,6 +291,7 @@ typedef struct st_table_rule_ent
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
int init_slave();
|
int init_slave();
|
||||||
|
void init_slave_skip_errors(char* arg);
|
||||||
int flush_master_info(MASTER_INFO* mi);
|
int flush_master_info(MASTER_INFO* mi);
|
||||||
int flush_relay_log_info(RELAY_LOG_INFO* rli);
|
int flush_relay_log_info(RELAY_LOG_INFO* rli);
|
||||||
int register_slave_on_master(MYSQL* mysql);
|
int register_slave_on_master(MYSQL* mysql);
|
||||||
|
@ -312,7 +312,6 @@ public:
|
|||||||
struct st_my_thread_var *mysys_var;
|
struct st_my_thread_var *mysys_var;
|
||||||
enum enum_server_command command;
|
enum enum_server_command command;
|
||||||
uint32 server_id;
|
uint32 server_id;
|
||||||
uint32 file_id; // for LOAD DATA INFILE
|
|
||||||
uint32 file_id; // for LOAD DATA INFILE
|
uint32 file_id; // for LOAD DATA INFILE
|
||||||
const char *where;
|
const char *where;
|
||||||
time_t start_time,time_after_lock,user_time;
|
time_t start_time,time_after_lock,user_time;
|
||||||
|
@ -1155,7 +1155,7 @@ static int client_msg_raw(NET* net, int err_code, int pre, const char* fmt,
|
|||||||
p=buf_end - 2;
|
p=buf_end - 2;
|
||||||
*p++='\r';
|
*p++='\r';
|
||||||
*p++='\n';
|
*p++='\n';
|
||||||
|
log_debug("message to client: %-.*s",p-buf-2,buf);
|
||||||
if (my_net_write(net,buf,(uint)(p-buf)) || net_flush(net))
|
if (my_net_write(net,buf,(uint)(p-buf)) || net_flush(net))
|
||||||
{
|
{
|
||||||
p[-2]=0;
|
p[-2]=0;
|
||||||
|
Reference in New Issue
Block a user