summaryrefslogtreecommitdiffstats
path: root/mysql-test/include/show_rpl_debug_info.inc
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/include/show_rpl_debug_info.inc')
-rw-r--r--mysql-test/include/show_rpl_debug_info.inc116
1 files changed, 116 insertions, 0 deletions
diff --git a/mysql-test/include/show_rpl_debug_info.inc b/mysql-test/include/show_rpl_debug_info.inc
new file mode 100644
index 00000000..7ee674df
--- /dev/null
+++ b/mysql-test/include/show_rpl_debug_info.inc
@@ -0,0 +1,116 @@
+# ==== Purpose ====
+#
+# Print status information for replication, typically used to debug
+# test failures.
+#
+# The following is printed on the current connection:
+#
+# SELECT NOW()
+# SHOW SLAVE STATUS
+# SHOW MASTER STATUS
+# SHOW PROCESSLIST
+# SHOW BINLOG EVENTS IN <binlog_name>
+#
+# Where <binlog_name> is the currently active binlog.
+#
+# Then, the same is printed from all connections configured by
+# rpl_init.inc - i.e., on connection server_N, where
+# 1 <= N <= $rpl_server_count
+#
+#
+# ==== Usage ====
+#
+# [--let $rpl_only_current_connection= 1]
+# --source include/show_rpl_debug_info.inc
+#
+# Parameters:
+# $rpl_only_current_connection
+# By default, debug info is printed from all connections, starting
+# with the current connection. If this variable is set, debug
+# info is printed only for the current connection.
+#
+#
+# ==== Side effects ====
+#
+# Turns on enable_query_log, enable_result_log, enable_warnings,
+# horizontal_results, and enable_abort_on_error.
+#
+# Prints non-deterministic output to the query log. This file should
+# never be called in a test that does not fail.
+
+
+--enable_query_log
+--enable_result_log
+--enable_warnings
+--enable_connect_log
+--disable_abort_on_error
+--horizontal_results
+
+
+--let $_rpl_old_con= $CURRENT_CONNECTION
+--let $_rpl_is_first_server= 1
+--let $_rpl_server= $rpl_server_count
+if ($_rpl_server == '')
+{
+ --let $_rpl_server= 0
+}
+--inc $_rpl_server
+
+
+while ($_rpl_server)
+{
+ if (!$_rpl_is_first_server)
+ {
+ --connection server_$_rpl_server
+ }
+
+ --echo
+ --echo ############################## $CURRENT_CONNECTION ##############################
+ --echo
+ --echo **** SHOW WARNINGS on $CURRENT_CONNECTION ****
+ SHOW WARNINGS;
+ --echo
+ --echo **** SELECT replication-related variables on $CURRENT_CONNECTION ****
+ SELECT NOW(), @@SERVER_ID;
+ --echo
+ --echo **** SHOW SLAVE STATUS on $CURRENT_CONNECTION ****
+ query_vertical SHOW SLAVE STATUS;
+ --echo
+ --echo **** SHOW MASTER STATUS on $CURRENT_CONNECTION ****
+ query_vertical SHOW MASTER STATUS;
+ --echo
+ --echo **** SHOW SLAVE HOSTS on $CURRENT_CONNECTION ****
+ query_vertical SHOW SLAVE HOSTS;
+ --echo
+ --echo **** SHOW PROCESSLIST on $CURRENT_CONNECTION ****
+ SHOW PROCESSLIST;
+ --echo
+ --echo **** SHOW BINARY LOGS on $CURRENT_CONNECTION ****
+ SHOW BINARY LOGS;
+ --echo
+ --echo **** SHOW BINLOG EVENTS on $CURRENT_CONNECTION ****
+ let $binlog_name= query_get_value("SHOW MASTER STATUS", File, 1);
+ --echo binlog_name = '$binlog_name'
+ eval SHOW BINLOG EVENTS IN '$binlog_name';
+ --echo
+ --echo **** SHOW RELAYLOG EVENTS on $CURRENT_CONNECTION ****
+ let $relaylog_name= query_get_value(SHOW SLAVE STATUS, Relay_Log_File, 1);
+ --echo relaylog_name = '$relaylog_name'
+ eval SHOW RELAYLOG EVENTS IN '$relaylog_name';
+
+
+ --let $_rpl_is_first_server= 0
+ --dec $_rpl_server
+ # Don't use same connection twice.
+ if (`SELECT 'server_$_rpl_server' = '$_rpl_old_con'`)
+ {
+ --dec $_rpl_server
+ if ($rpl_only_current_connection)
+ {
+ --let $_rpl_server= 0
+ }
+ }
+}
+
+--connection $_rpl_old_con
+--enable_abort_on_error