mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-7145: Delayed replication, intermediate commit.
Initial merge of delayed replication from MySQL git. The code from the initial push into MySQL is merged, and the associated test case passes. A number of tasks are still pending: 1. Check full test suite run for any regressions or .result file updates. 2. Extend the feature to also work for parallel replication. 3. There are some todo-comments about future refactoring left from MySQL, these should be located and merged on top. 4. There are some later related MySQL commits, these should be checked and merged. These include: e134b9362ba0b750d6ac1b444780019622d14aa5 b38f0f7857c073edfcc0a64675b7f7ede04be00f fd2b210383358fe7697f201e19ac9779879ba72a afc397376ec50e96b2918ee64e48baf4dda0d37d 5. The testcase from MySQL relies heavily on sleep and timing for testing, and seems likely to sporadically fail on heavily loaded test servers in buildbot or distro build farms. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
This commit is contained in:
@@ -67,6 +67,9 @@ if ($tmp)
|
||||
--echo Replicate_Do_Domain_Ids
|
||||
--echo Replicate_Ignore_Domain_Ids
|
||||
--echo Parallel_Mode conservative
|
||||
--echo SQL_Delay 0
|
||||
--echo SQL_Remaining_Delay NULL
|
||||
--echo Slave_SQL_Running_State
|
||||
}
|
||||
if (!$tmp) {
|
||||
# Note: after WL#5177, fields 13-18 shall not be filtered-out.
|
||||
|
28
mysql-test/include/show_delayed_slave_state.inc
Normal file
28
mysql-test/include/show_delayed_slave_state.inc
Normal file
@@ -0,0 +1,28 @@
|
||||
# ==== Purpose ====
|
||||
#
|
||||
# Display the delay state of the SQL thread.
|
||||
#
|
||||
# ==== Usage ====
|
||||
#
|
||||
# --let $verbose_delayed_slave_state= [0|1]
|
||||
# --source extra/rpl_tests/show_delayed_slave_state.inc
|
||||
#
|
||||
# By default, the output is normalized so that it does not depend on
|
||||
# exact timing or exact binlog positions. If
|
||||
# $verbose_delayed_slave_state is set, then it outputs exact times and
|
||||
# binlog positions. This can be useful for debugging.
|
||||
|
||||
--let $_delayed_slave_status= query_get_value(SHOW SLAVE STATUS, Slave_SQL_Running_State, 1)
|
||||
|
||||
--let $_delayed_slave_remaining_delay= query_get_value(SHOW SLAVE STATUS, SQL_Remaining_Delay, 1)
|
||||
--let $_delayed_slave_qualitative_delay= `SELECT CASE WHEN "$_delayed_slave_remaining_delay" = "NULL" THEN "NULL" WHEN "$_delayed_slave_remaining_delay" = "0" THEN "0" ELSE "greater than zero" END`
|
||||
|
||||
--let $_delayed_slave_io_pos= query_get_value(SHOW SLAVE STATUS, Read_Master_Log_Pos, 1)
|
||||
--let $_delayed_slave_sql_pos= query_get_value(SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1)
|
||||
--let $_delayed_slave_qualitative_log_pos= `SELECT IF($_delayed_slave_io_pos > $_delayed_slave_sql_pos, "behind", "in sync with")`
|
||||
|
||||
--echo Slave_SQL_Running_State='$_delayed_slave_status'; SQL_Remaining_Delay is $_delayed_slave_qualitative_delay; SQL thread is $_delayed_slave_qualitative_log_pos IO thread
|
||||
|
||||
if ($verbose_delayed_slave_state) {
|
||||
--echo SQL_Remaining_Delay='$_delayed_slave_remaining_delay'; Read_master_log_pos='$_delayed_slave_io_pos'; Exec_Master_Log_Pos='$_delayed_slave_sql_pos'
|
||||
}
|
26
mysql-test/include/sync_with_master.inc
Normal file
26
mysql-test/include/sync_with_master.inc
Normal file
@@ -0,0 +1,26 @@
|
||||
# ==== Purpose ====
|
||||
#
|
||||
# This file does the same as the built-in command sync_with_master,
|
||||
# but can be configured to use a custom timeout. This has the benefit
|
||||
# that it accepts the same $slave_timeout and $master_connection
|
||||
# parameters as wait_for_slave_param.inc
|
||||
#
|
||||
#
|
||||
# ==== Usage ====
|
||||
#
|
||||
# --connection master
|
||||
# --source include/save_master_pos.inc
|
||||
# --connection slave
|
||||
# --source include/sync_with_master.inc
|
||||
#
|
||||
# Parameters to this macro are $slave_timeout and
|
||||
# $master_connection. See wait_for_slave_param.inc for
|
||||
# descriptions.
|
||||
|
||||
--let $slave_param= Relay_Master_Log_File
|
||||
--let $slave_param_value= $_master_file
|
||||
--source include/wait_for_slave_param.inc
|
||||
|
||||
--let $slave_param= Exec_Master_Log_Pos
|
||||
--let $slave_param_value= $_master_pos
|
||||
--source include/wait_for_slave_param.inc
|
Reference in New Issue
Block a user