config root man

Current Path : /home/usr.opt/mysql57/mysql-test/suite/rpl/t/

FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64
Upload File :
Current File : //home/usr.opt/mysql57/mysql-test/suite/rpl/t/rpl_gtid_spanned_trx.test

# ==== Purpose ====
#
# This test will verify if the IO thread will correctly handle the GTID and
# the transaction boundary of transactions spanned along multiple relay log
# files.
#
# This test starts creating a single transaction (CREATE TABLE), and then
# sets a debug point that will make the IO thread to stop after queuing an
# QUERY_LOG_EVENT. The test will stop the SQL thread after syncing with the
# master.
#
# The test will then apply a transaction composed by three INSERT statements
# that will be logged on master as one GTID_LOG_EVENT, four QUERY_LOG_EVENTS
# (the BEGIN plus the three INSERT) and a XID_LOG_EVENT.
#
# By disabling GTID auto positioning, and restating the IO thread after each
# time it stops because of the debug point, we guarantee that GTID+BEGIN will
# be in one relay log file, each INSERT will be alone in distinct relay log
# files and the XID will finalize the transaction in another relay log file.
#
# Finally, the test will restart the MySQL slave server to make it recover the
# Retrieved_Gtid_Set from the relay log with the spanned transaction.
#
# ==== Related Bugs and Worklogs ====
#
# BUG#17943188: SHOW SLAVE STATUS/RETRIEVED_GTID_SET MAY HAVE PARTIAL TRX OR
#               MISS COMPLETE TRX
#

# This test should run only on debug build
--source include/have_debug.inc
# This test uses debug sync to stop the IO thread in the middle of a transaction
--source include/have_debug_sync.inc

--source include/have_gtid.inc
--source include/have_innodb.inc
--source include/have_binlog_format_statement.inc
--let $rpl_gtid_utils= 1
--source include/master-slave.inc

# Disable GTID auto positioning
--source include/rpl_connection_slave.inc
--source include/stop_slave.inc
CHANGE MASTER TO MASTER_AUTO_POSITION= 0;
--source include/start_slave.inc

--source include/rpl_connection_master.inc
CREATE TABLE t1 (c1 INT) ENGINE= InnoDB;

--source include/sync_slave_sql_with_master.inc
# We stop the SQL thread as we don't want it to apply the transaction to be
# replicated before the recovery
--source include/stop_slave_sql.inc

--let $debug_point= stop_io_after_reading_query_log_event
--source include/add_debug_point.inc

--source include/rpl_connection_master.inc
--let $inserts= 3
--let $counter= 0
# This transaction should be spanned on every query log event:
# - 1 x BEGIN;
# - 3 x INSERT;
BEGIN;
while ($counter < $inserts)
{
  --inc $counter
  --eval INSERT INTO t1 VALUES ($counter)
}
COMMIT;
--eval INSERT INTO t1 VALUES ($counter + 1)

# We now span the transaction along distinct relay log files
--source include/rpl_connection_slave.inc
--let $restarts= $inserts
# The amount of restarts is the amount of INSERT + 1 (BEGIN)
--inc $restarts
while ($restarts > 0)
{
  # Waiting for slave IO thread to stop
  --source include/wait_for_slave_io_to_stop.inc
  --dec $restarts
  # At this point, the Retrieved_Gtid_Set should have only one GTID
  --let $retrieved_gtids= query_get_value(SHOW SLAVE STATUS, Retrieved_Gtid_Set, 1)
  --let $assert_text= Exactly one GTID should have been retrieved before having all the transaction
  --let $assert_cond= GTID_COUNT("$retrieved_gtids") = 1
  --source include/assert.inc
  #
  if ($restarts == 0)
  {
    --source include/remove_debug_point.inc
  }
  # We should not use "start_slave_io.inc" here because the IO thread
  # will stop just a few events after starting.
  START SLAVE IO_THREAD;
}

--source include/rpl_connection_master.inc
--source include/sync_slave_io_with_master.inc

# At this point, the Retrieved_Gtid_Set should have three GTIDs
# One for the CREATE TABLE, one for the transaction with the split
# INSERT and one for the last INSERT
--let $retrieved_gtids= query_get_value(SHOW SLAVE STATUS, Retrieved_Gtid_Set, 1)
--let $assert_text= Exactly three GTIDs should have been retrieved from master before restarting
--let $assert_cond= GTID_COUNT("$retrieved_gtids") = 3
--source include/assert.inc

# Restart the slave to verify the spanned transaction
--let $rpl_server_number= 2
--let $rpl_force_stop= 0
--source include/rpl_stop_server.inc
--source include/rpl_start_server.inc

# As we restarted the whole slave server with the spanned transaction fully
# replicated but without any additional relay log rotation, there is no
# PREVIOUS_GTID_LOG_EVENT on the relay log stating that the GTID of the
# spanned transaction was retrieved. The slave will have to scan this info
# during the relay log recovery.

--source include/start_slave.inc
--source include/rpl_connection_master.inc
--source include/sync_slave_io_with_master.inc
# At this point, the Retrieved_Gtid_Set should have three GTIDs
--let $retrieved_gtids= query_get_value(SHOW SLAVE STATUS, Retrieved_Gtid_Set, 1)
--let $assert_text= Exactly two GTIDs should have been retrieved from master after restarting
--let $assert_cond= GTID_COUNT("$retrieved_gtids") = 3
--source include/assert.inc

# Cleanup
--source include/rpl_connection_master.inc
DROP TABLE t1;

--source include/rpl_end.inc

Man Man