98 lines
2.8 KiB
PHP
98 lines
2.8 KiB
PHP
# ==== Purpose ====
|
|
#
|
|
# Waits until the slave IO thread on the current connection has been
|
|
# synced up to the point saved by the last call to
|
|
# include/save_master_pos.inc (i.e., until the IO thead has copied up
|
|
# to the saved position). Does not wait for the SQL thread.
|
|
#
|
|
#
|
|
# ==== Usage ====
|
|
#
|
|
# [--let $use_gtids= 1]
|
|
# [--let $rpl_debug= 1]
|
|
# [--let $slave_timeout= NUMBER]
|
|
#
|
|
# On master:
|
|
# --source include/save_master_pos.inc
|
|
#
|
|
# On slave:
|
|
# --source include/sync_slave_io.inc
|
|
#
|
|
# Parameters:
|
|
# $use_gtids
|
|
# If set, uses GTIDs instead of filename and offset for positions.
|
|
#
|
|
# $slave_timeout
|
|
# See include/wait_for_slave_param.inc
|
|
#
|
|
# $rpl_debug
|
|
# See include/rpl_init.inc
|
|
#
|
|
# $ignore_gtids_on_sync
|
|
# Forces the use of master file and position, even if $use_gtids is set.
|
|
# This might be used if the slave will not have all the GTIDs of the master
|
|
# but have to read and apply all master events to the end.
|
|
|
|
|
|
--let $include_filename= sync_slave_io.inc
|
|
--source include/begin_include_file.inc
|
|
|
|
--let $_old_slave_error_param= $slave_error_param
|
|
--let $slave_error_param= Last_IO_Errno
|
|
|
|
#
|
|
# Verify if the IO thread is already updated by the master position
|
|
# regardless the use of GTIDs. If the IO thread is already updated,
|
|
# we can reduce the slave timeout to a minimum because there in nothing
|
|
# else to sync.
|
|
# As there is a possibility of missing GTIDs on slave, this reduced
|
|
# timeout will make mtr throw an error almost promptly, without having
|
|
# to wait 300 seconds to notice a sync problem between master and slave.
|
|
#
|
|
--let $_slave_master_file= query_get_value(SHOW SLAVE STATUS, Master_Log_File, 1)
|
|
--let $_slave_master_pos= query_get_value(SHOW SLAVE STATUS, Read_Master_Log_Pos, 1)
|
|
--let $_saved_slave_timeout= $slave_timeout
|
|
if ( $_slave_master_file == $_saved_file )
|
|
{
|
|
if ( $_slave_master_pos == $_saved_pos )
|
|
{
|
|
if ($rpl_debug)
|
|
{
|
|
--echo debug: It seems that IO thread is already synced (by verifying master file and position)
|
|
--echo debug: Changing slave timeout to 1 second
|
|
}
|
|
--let $slave_timeout= 1
|
|
}
|
|
}
|
|
|
|
--let $_sync_using_gtids= $use_gtids
|
|
if ($ignore_gtids_on_sync)
|
|
{
|
|
--let $_sync_using_gtids= 0
|
|
}
|
|
|
|
if ($_sync_using_gtids)
|
|
{
|
|
--source include/assert_gtid_mode_on.inc
|
|
--let $slave_param= Retrieved_Gtid_Set
|
|
--let $slave_param_value= $_saved_gtids
|
|
--source include/wait_for_slave_param.inc
|
|
}
|
|
if (!$_sync_using_gtids)
|
|
{
|
|
--let $slave_param= Master_Log_File
|
|
--let $slave_param_value= $_saved_file
|
|
--source include/wait_for_slave_param.inc
|
|
|
|
--let $slave_param= Read_Master_Log_Pos
|
|
--let $slave_param_value= $_saved_pos
|
|
--source include/wait_for_slave_param.inc
|
|
}
|
|
|
|
--let $slave_error_param= $_old_slave_error_param
|
|
|
|
--let $slave_timeout= $_saved_slave_timeout
|
|
|
|
--let $include_filename= sync_slave_io.inc
|
|
--source include/end_include_file.inc
|