89 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
# ==== Purpose ====
 | 
						|
#
 | 
						|
# Issues STOP SLAVE on the current connection. Then waits until both
 | 
						|
# the IO and SQL threads have stopped, or until a timeout is reached.
 | 
						|
#
 | 
						|
# Please use this instead of 'STOP SLAVE', to reduce the risk of races
 | 
						|
# in test cases.
 | 
						|
#
 | 
						|
# This will fail if the slave IO or SQL thread has an error. If you
 | 
						|
# expect an error in the IO thread, use
 | 
						|
# include/wait_for_slave_io_error.inc and include/stop_slave_sql.inc.
 | 
						|
#
 | 
						|
#
 | 
						|
# ==== Usage ====
 | 
						|
#
 | 
						|
# [--let $rpl_only_running_threads= 1]
 | 
						|
# [--let $slave_timeout= NUMBER]
 | 
						|
# [--let $rpl_debug= 1]
 | 
						|
# --source include/stop_slave.inc
 | 
						|
#
 | 
						|
# Parameters:
 | 
						|
#   $rpl_only_running_threads
 | 
						|
#     By default, this script executes STOP SLAVE unconditionally.
 | 
						|
#     This generates a warnings if one or both slave threads are
 | 
						|
#     already stopped.  If $rpl_only_running_threads is set, this
 | 
						|
#     script checks which slave threads are running, and issues either
 | 
						|
#     STOP SLAVE, STOP SLAVE SQL_THREAD, STOP SLAVE IO_THREAD, or
 | 
						|
#     nothing.
 | 
						|
#
 | 
						|
#   $slave_timeout
 | 
						|
#     See include/wait_for_slave_param.inc
 | 
						|
#
 | 
						|
#   $rpl_debug
 | 
						|
#     See include/rpl_init.inc
 | 
						|
 | 
						|
 | 
						|
--let $include_filename= stop_slave.inc
 | 
						|
--source include/begin_include_file.inc
 | 
						|
 | 
						|
 | 
						|
if (!$rpl_debug)
 | 
						|
{
 | 
						|
  --disable_query_log
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
if ($rpl_only_running_threads)
 | 
						|
{
 | 
						|
  --let $_slave_sql_running= query_get_value(SHOW SLAVE STATUS, Slave_SQL_Running, 1)
 | 
						|
  --let $_slave_io_running= query_get_value(SHOW SLAVE STATUS, Slave_IO_Running, 1)
 | 
						|
  if ($rpl_debug)
 | 
						|
  {
 | 
						|
    --echo Stop SQL: $_slave_sql_running; Stop IO: $_slave_io_running
 | 
						|
  }
 | 
						|
 | 
						|
  --let $_slave_running_bits= `SELECT IF('$_slave_io_running' = 'Yes', 1, 0) + IF('$_slave_sql_running' = 'Yes', 2, 0)`
 | 
						|
  if ($_slave_running_bits)
 | 
						|
  {
 | 
						|
    --dec $_slave_running_bits
 | 
						|
    # $_slave_running_bits=1: io thread running
 | 
						|
    if (!$_slave_running_bits)
 | 
						|
    {
 | 
						|
      --source include/stop_slave_io.inc
 | 
						|
    }
 | 
						|
    --dec $_slave_running_bits
 | 
						|
    # $_slave_running_bits=2: sql thread running
 | 
						|
    if (!$_slave_running_bits)
 | 
						|
    {
 | 
						|
      --source include/stop_slave_sql.inc
 | 
						|
    }
 | 
						|
    --dec $_slave_running_bits
 | 
						|
    # $_slave_running_bits=2: both threads running
 | 
						|
    if (!$_slave_running_bits)
 | 
						|
    {
 | 
						|
      STOP SLAVE;
 | 
						|
      --source include/wait_for_slave_to_stop.inc
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
if (!$rpl_only_running_threads)
 | 
						|
{
 | 
						|
  STOP SLAVE;
 | 
						|
  --source include/wait_for_slave_to_stop.inc
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
--let $include_filename= stop_slave.inc
 | 
						|
--source include/end_include_file.inc
 |