1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

Made max_relay_log_size depending on master connection.

Changed names of multi-source log files so that original suffixes are kept.


include/my_sys.h:
  Added fn_ext2(), which returns pointer to last '.' in file name
mysql-test/extra/rpl_tests/rpl_max_relay_size.test:
  Updated test
mysql-test/suite/multi_source/info_logs-master.opt:
  Test with strange file names
mysql-test/suite/multi_source/info_logs.result:
  Updated results
mysql-test/suite/multi_source/info_logs.test:
  Changed to test with complex names to be able to verify the filename generator code
mysql-test/suite/multi_source/relaylog_events.result:
  Updated results
mysql-test/suite/multi_source/reset_slave.result:
  Updated results
mysql-test/suite/multi_source/skip_counter.result:
  Updated results
mysql-test/suite/multi_source/skip_counter.test:
  Added testing of max_relay_log_size
mysql-test/suite/rpl/r/rpl_row_max_relay_size.result:
  Updated results
mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result:
  Updated results
mysql-test/suite/sys_vars/r/max_relay_log_size_basic.result:
  Updated results
mysql-test/suite/sys_vars/t/max_relay_log_size_basic.test:
  Updated results
mysys/mf_fn_ext.c:
  Added fn_ext2(), which returns pointer to last '.' in file name
sql/log.cc:
  Removed some wrong casts
sql/log.h:
  Updated comment to reflect new code
sql/log_event.cc:
  Updated DBUG_PRINT
sql/mysqld.cc:
  Added that max_relay_log_size copies it's values from max_binlog_size
sql/mysqld.h:
  Removed max_relay_log_size
sql/rpl_mi.cc:
  Changed names of multi-source log files so that original suffixes are kept.
sql/rpl_mi.h:
  Updated prototype
sql/rpl_rli.cc:
  Updated comment to reflect new code
  Made max_relay_log_size depending on master connection.
sql/rpl_rli.h:
  Made max_relay_log_size depending on master connection.
sql/set_var.h:
  Made option global so that one can check and change min & max values (sorry Sergei)
sql/sql_class.h:
  Made max_relay_log_size depending on master connection.
sql/sql_repl.cc:
  Updated calls to create_signed_file_name()
sql/sys_vars.cc:
  Made max_relay_log_size depending on master connection.
  Made old code more reusable
sql/sys_vars.h:
  Changed Sys_var_multi_source_uint to ulong to be able to handle max_relay_log_size
  Made old code more reusable
This commit is contained in:
Michael Widenius
2012-10-01 02:30:44 +03:00
parent 5a4b5869a0
commit 8ac1b41cf3
28 changed files with 326 additions and 161 deletions

View File

@ -0,0 +1 @@
--relay-log=relay.bin --relay-log-info=relay.bin.info

View File

@ -15,35 +15,35 @@ set default_master_connection = 'master1';
include/wait_for_slave_to_start.inc
#
# List of files matching '*info*' pattern while 'master1' is running
master.info.master1
master-master1.info
multi-master.info
relay-log.info.master1
relay.bin-master1.info
# End of list
#
# Contents of multi-master.info
master1
# EOF
#
change master 'master2' to
change master 'MASTER 2.2' to
master_port=MYPORT_2,
master_host='127.0.0.1',
master_user='root';
start slave 'master2';
set default_master_connection = 'master2';
start slave 'MASTER 2.2';
set default_master_connection = 'MASTER 2.2';
include/wait_for_slave_to_start.inc
#
# List of files matching '*info*' pattern
# while 'master1' and 'master2' are running
master.info.master1
master.info.master2
# while 'master1' and 'MASTER 2.2' are running
master-master1.info
master-master@00202@002e2.info
multi-master.info
relay-log.info.master1
relay-log.info.master2
relay.bin-master1.info
relay.bin-master@00202@002e2.info
# End of list
#
# Contents of multi-master.info
master1
master2
MASTER 2.2
# EOF
#
stop slave 'master1';
@ -52,14 +52,14 @@ include/wait_for_slave_to_stop.inc
reset slave 'master1' all;
#
# List of files matching '*info*' pattern
# after 'master1' was completely reset, 'master2' still running
master.info.master2
# after 'master1' was completely reset, 'MASTER 2.2' still running
master-master@00202@002e2.info
multi-master.info
relay-log.info.master2
relay.bin-master@00202@002e2.info
# End of list
#
# Contents of multi-master.info
master2
MASTER 2.2
# EOF
#
set default_master_connection = '';
@ -71,44 +71,44 @@ start slave;
include/wait_for_slave_to_start.inc
#
# List of files matching '*info*' pattern
# while 'master2' and '' are running
# while 'MASTER 2.2' and '' are running
master-master@00202@002e2.info
master.info
master.info.master2
multi-master.info
relay-log.info
relay-log.info.master2
relay.bin-master@00202@002e2.info
relay.bin.info
# End of list
#
# Contents of multi-master.info
master2
MASTER 2.2
# EOF
#
show full slave status;
Connection_name Slave_IO_State 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 Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error Replicate_Ignore_Server_Ids Master_Server_Id
Waiting for master to send event 127.0.0.1 root MYPORT_1 60 master-bin.000001 286 mysqld-relay-bin.000002 572 master-bin.000001 Yes Yes 0 0 286 868 None 0 No 0 No 0 0 1
master2 Waiting for master to send event 127.0.0.1 root MYPORT_2 60 master-bin.000001 286 mysqld-relay-bin-master2.000002 572 master-bin.000001 Yes Yes 0 0 286 876 None 0 No 0 No 0 0 2
Waiting for master to send event 127.0.0.1 root MYPORT_1 60 master-bin.000001 286 relay.000002 572 master-bin.000001 Yes Yes 0 0 286 857 None 0 No 0 No 0 0 1
MASTER 2.2 Waiting for master to send event 127.0.0.1 root MYPORT_2 60 master-bin.000001 286 relay-master@00202@002e2.000002 572 master-bin.000001 Yes Yes 0 0 286 876 None 0 No 0 No 0 0 2
show full slave status;
Connection_name Slave_IO_State 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 Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error Replicate_Ignore_Server_Ids Master_Server_Id
Waiting for master to send event 127.0.0.1 root MYPORT_1 60 master-bin.000001 286 mysqld-relay-bin.000004 532 master-bin.000001 Yes Yes 0 0 286 828 None 0 No 0 No 0 0 1
master2 Waiting for master to send event 127.0.0.1 root MYPORT_2 60 master-bin.000001 286 mysqld-relay-bin-master2.000004 532 master-bin.000001 Yes Yes 0 0 286 836 None 0 No 0 No 0 0 2
Waiting for master to send event 127.0.0.1 root MYPORT_1 60 master-bin.000001 286 relay.000004 532 master-bin.000001 Yes Yes 0 0 286 817 None 0 No 0 No 0 0 1
MASTER 2.2 Waiting for master to send event 127.0.0.1 root MYPORT_2 60 master-bin.000001 286 relay-master@00202@002e2.000004 532 master-bin.000001 Yes Yes 0 0 286 836 None 0 No 0 No 0 0 2
#
# List of files matching '*info*' pattern
# after slave server restart
# while 'master2' and '' are running
# while 'MASTER 2.2' and '' are running
master-master@00202@002e2.info
master.info
master.info.master2
multi-master.info
relay-log.info
relay-log.info.master2
relay.bin-master@00202@002e2.info
relay.bin.info
# End of list
#
# Contents of multi-master.info
master2
MASTER 2.2
# EOF
#
stop slave;
include/wait_for_slave_to_stop.inc
set default_master_connection = 'master2';
set default_master_connection = 'MASTER 2.2';
stop slave;
include/wait_for_slave_to_stop.inc
reset slave all;

View File

@ -47,20 +47,20 @@ set default_master_connection = 'master1';
# Start replication from the second master
--replace_result $SERVER_MYPORT_2 MYPORT_2
eval change master 'master2' to
eval change master 'MASTER 2.2' to
master_port=$SERVER_MYPORT_2,
master_host='127.0.0.1',
master_user='root';
start slave 'master2';
set default_master_connection = 'master2';
start slave 'MASTER 2.2';
set default_master_connection = 'MASTER 2.2';
--source include/wait_for_slave_to_start.inc
# Check the files
--echo #
--echo # List of files matching '*info*' pattern
--echo # while 'master1' and 'master2' are running
--echo # while 'master1' and 'MASTER 2.2' are running
--list_files $datadir *info*
--echo # End of list
--echo #
@ -80,7 +80,7 @@ reset slave 'master1' all;
--echo #
--echo # List of files matching '*info*' pattern
--echo # after 'master1' was completely reset, 'master2' still running
--echo # after 'master1' was completely reset, 'MASTER 2.2' still running
--list_files $datadir *info*
--echo # End of list
--echo #
@ -106,7 +106,7 @@ start slave;
--echo #
--echo # List of files matching '*info*' pattern
--echo # while 'master2' and '' are running
--echo # while 'MASTER 2.2' and '' are running
--list_files $datadir *info*
--echo # End of list
--echo #
@ -136,7 +136,7 @@ show full slave status;
--echo #
--echo # List of files matching '*info*' pattern
--echo # after slave server restart
--echo # while 'master2' and '' are running
--echo # while 'MASTER 2.2' and '' are running
--list_files $datadir *info*
--echo # End of list
--echo #
@ -151,7 +151,7 @@ show full slave status;
stop slave;
--source include/wait_for_slave_to_stop.inc
set default_master_connection = 'master2';
set default_master_connection = 'MASTER 2.2';
stop slave;
--source include/wait_for_slave_to_stop.inc
reset slave all;

View File

@ -9,6 +9,7 @@ drop table if exists t1;
create table t1 (i int) engine=MyISAM;
mysqld-relay-bin-master1.000001
mysqld-relay-bin-master1.000002
mysqld-relay-bin-master1.index
show relaylog events in 'mysqld-relay-bin-master1.000002';
Log_name Pos Event_type Server_id End_log_pos Info
mysqld-relay-bin-master1.000002 4 Format_desc 3 246 Server version

View File

@ -14,7 +14,7 @@ Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File
127.0.0.1 root MYPORT_1 60 master-bin.000001 729 mysqld-relay-bin-master1.000002 1015 master-bin.000001 No No 0 0 729 1319 None 0 No NULL No 0 0 1
mysqld-relay-bin-master1.000001
mysqld-relay-bin-master1.000002
mysqld-relay-bin.index-master1
mysqld-relay-bin-master1.index
reset slave 'master1';
show slave 'master1' status;
Slave_IO_State 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 Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error Replicate_Ignore_Server_Ids Master_Server_Id

View File

@ -55,6 +55,49 @@ set default_master_connection = 'master2';
select @@session.sql_slave_skip_counter;
@@session.sql_slave_skip_counter
3
select @@global.max_relay_log_size;
@@global.max_relay_log_size
1073741824
set global max_relay_log_size = 1*1024*1024;
select @@global.max_relay_log_size;
@@global.max_relay_log_size
1048576
select @@session.max_relay_log_size;
@@session.max_relay_log_size
1048576
set session max_relay_log_size = 3*1024*1024;
select @@global.max_relay_log_size;
@@global.max_relay_log_size
3145728
select @@session.max_relay_log_size;
@@session.max_relay_log_size
3145728
set global max_relay_log_size= default;
select @@global.max_relay_log_size;
@@global.max_relay_log_size
1073741824
select @@session.max_relay_log_size;
@@session.max_relay_log_size
1073741824
set global max_relay_log_size= 3*1024*1024;
set default_master_connection = 'master1';
select @@session.max_relay_log_size;
@@session.max_relay_log_size
1073741824
set default_master_connection = 'qqq';
select @@session.max_relay_log_size;
@@session.max_relay_log_size
0
Warnings:
Warning 1617 There is no master connection 'qqq'
set default_master_connection = 'master2';
select @@session.max_relay_log_size;
@@session.max_relay_log_size
3145728
set global max_binlog_size= 4*1024*1024;
select @@global.max_relay_log_size;
@@global.max_relay_log_size
3145728
start slave 'master2';
include/wait_for_slave_to_start.inc
set default_master_connection = '';
@ -72,6 +115,8 @@ set default_master_connection = 'master2';
stop slave;
include/wait_for_slave_to_stop.inc
set global sql_slave_skip_counter = 0;
set global max_relay_log_size = 1073741824;
set global max_binlog_size = 1073741824;
disconnect slave;
connection master1;
drop database db;

View File

@ -1,5 +1,5 @@
#
# Test of sql_slave_skip_counter
# Test of sql_slave_skip_counter and rpl_max_size
#
--enable_connect_log
@ -16,7 +16,6 @@ create database db;
create table db.t1 (i int) engine=MyISAM;
--save_master_pos
# Create the same schema and another table
# on the 2nd master
@ -62,6 +61,8 @@ master_user='root';
# to modify the test later
--let $skip_counter_saved = `select @@global.sql_slave_skip_counter`
--let $max_relay_log_size_saved= `select @@global.max_relay_log_size`
--let $max_binlog_size_saved= `select @@global.max_binlog_size`
set global sql_slave_skip_counter = 2;
select @@global.sql_slave_skip_counter;
select @@session.sql_slave_skip_counter;
@ -79,6 +80,28 @@ select @@session.sql_slave_skip_counter;
set default_master_connection = 'master2';
select @@session.sql_slave_skip_counter;
# Test of setting max_relay_log_size
select @@global.max_relay_log_size;
set global max_relay_log_size = 1*1024*1024;
select @@global.max_relay_log_size;
select @@session.max_relay_log_size;
set session max_relay_log_size = 3*1024*1024;
select @@global.max_relay_log_size;
select @@session.max_relay_log_size;
set global max_relay_log_size= default;
select @@global.max_relay_log_size;
select @@session.max_relay_log_size;
set global max_relay_log_size= 3*1024*1024;
set default_master_connection = 'master1';
select @@session.max_relay_log_size;
set default_master_connection = 'qqq';
select @@session.max_relay_log_size;
set default_master_connection = 'master2';
select @@session.max_relay_log_size;
set global max_binlog_size= 4*1024*1024;
select @@global.max_relay_log_size;
start slave 'master2';
--source include/wait_for_slave_to_start.inc
set default_master_connection = '';
@ -113,6 +136,8 @@ stop slave;
--source include/wait_for_slave_to_stop.inc
--eval set global sql_slave_skip_counter = $skip_counter_saved
--eval set global max_relay_log_size = $max_relay_log_size_saved
--eval set global max_binlog_size = $max_binlog_size_saved
--enable_connect_log
--disconnect slave