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
 |