1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
|
# ==== Purpose ====
#
# Start the server given by $rpl_server_number. This should normally
# be invoked after rpl_stop_server.inc.
#
# ==== Usage ====
#
# --let $rpl_server_number= N
# [--let $rpl_start_with_gtids= [0|1]]
# [--let $rpl_server_parameters= --flag1 --flag2 ...]
# [--let $rpl_omit_print_server_parameters= 0]
# [--let $rpl_debug_trace= 1]
# [--let $rpl_debug= 1]
# [--let $rpl_server_error= 0]
# --source include/rpl_start_server.inc
#
# Parameters:
#
# $rpl_server_number
# Number to identify the server that needs to reconnect. 1 is the
# master server, 2 the slave server, 3 the 3rd server, and so on.
# Cf. include/rpl_init.inc
#
# $rpl_start_with_gtids
# If set to 1, the server will start with GTIDs on, i.e.:
# --gtid-mode=on --enforce-gtid-consistency
# --log-bin --log-replica-updates
# --default-storage-engine=InnoDB --default-tmp-storage-engine=InnoDB
# If set to 0, the server will start without GTIDs, i.e.:
# --gtid-mode=off
# If not set, the server will start with default parameters (depends on
# my.cnf and .opt file).
#
# $rpl_server_parameters
# If set, extra parameters given by this variable are passed to
# mysqld.
#
# $rpl_omit_print_server_parameters
# If set, server parameters are not printed.
#
# $rpl_debug_trace
# Start the server with debug traces enabled, as with mtr --debug.
# Normally, you can just pass --debug to mtr. However, mtr --debug
# will cancel the effect of any --debug parameters specified in
# $rpl_server_parameters. If $rpl_server_parameters contains
# --debug, set $rpl_debug_trace=1 instead of passing --debug to
# mtr.
#
# $rpl_debug
# See include/rpl_init.inc
#
# $rpl_server_error
# If set, failure of the server startup is expected.
#
# ==== See also ====
#
# rpl_stop_server.inc
# rpl_restart_server.inc
# Pretty-printed text
--let $_rpl_start_server_info= server_number=$rpl_server_number
# Actual arguments sent to mysqld
--let _RPL_START_SERVER_PARAMETERS= $rpl_server_parameters
if ($rpl_start_with_gtids == 1)
{
--let $_rpl_start_server_info= $_rpl_start_server_info gtids=on
--let _RPL_START_SERVER_PARAMETERS= $_RPL_START_SERVER_PARAMETERS --log-bin --log-replica-updates --enforce-gtid-consistency --gtid-mode=on --default-storage-engine=InnoDB --default-tmp-storage-engine=InnoDB
}
if ($rpl_start_with_gtids == 0)
{
--let $_rpl_start_server_info= $_rpl_start_server_info gtids=off
--let _RPL_START_SERVER_PARAMETERS= $_RPL_START_SERVER_PARAMETERS --gtid-mode=off
}
if ($rpl_server_parameters != '')
{
if (!$rpl_omit_print_server_parameters)
{
--let $_rpl_start_server_info= $_rpl_start_server_info parameters: $rpl_server_parameters
}
}
if ($rpl_debug)
{
--echo # debug: rpl_server_number='$rpl_server_number' rpl_start_with_gtids='$rpl_start_with_gtids' rpl_server_parameters='$rpl_server_parameters' _RPL_START_SERVER_PARAMETERS='$_RPL_START_SERVER_PARAMETERS'
}
--let $include_filename= rpl_start_server.inc [$_rpl_start_server_info]
--source include/begin_include_file.inc
--let $rpl_connection_name= server_$rpl_server_number
--source include/rpl_connection.inc
--let _RPL_DEBUG_TRACE= $rpl_debug_trace
--let _RPL_SERVER_NUMBER= $rpl_server_number
--let _RPL_DEBUG= $rpl_debug
# Write file to make mysql-test-run.pl start up the server again
# Because mysqltest is such a wonderful language, we use perl instead.
perl;
my $vardir= $ENV{'MYSQLTEST_VARDIR'};
my $params= $ENV{'_RPL_START_SERVER_PARAMETERS'};
my $server_number= $ENV{'_RPL_SERVER_NUMBER'};
my $trace_file= "$vardir/log/mysqld.$server_number.trace";
my $expect_file= "$vardir/tmp/mysqld.$server_number.expect";
if ($ENV{'_RPL_DEBUG_TRACE'})
{
my $flags="d:i:a$trace_file:t";
($params =~ s/(?<=--debug=)/$flags:/) or ($params .= " --debug=$flags");
}
if ($ENV{'_RPL_DEBUG'})
{
print "# debug: params='$params'\n";
}
# Write trace file
open FILE, ">> $trace_file" or die "Error opening trace file '$trace_file': $!";
print FILE "\n======== SERVER START \[" . scalar(localtime()) . "\] ========\n"
or die "Error printing to trace file '$trace_file': $!";
close FILE or die "Error closing trace file '$trace_file': $!";
# Write expect file
open FILE, "> $expect_file" or die "Error opening $expect_file: $!";
print FILE ($params eq '' ? 'restart' : "restart:$params")
or die "Error printing to $expect_file: $!";
close FILE or die "Error closing $expect_file: $!";
EOF
#--exec echo "$_rpl_start_server_command" > $MYSQLTEST_VARDIR/tmp/mysqld.$rpl_server_number.expect
if (!$rpl_server_error)
{
--source include/rpl_reconnect.inc
--let $include_filename= rpl_start_server.inc [$_rpl_start_server_info]
--source include/end_include_file.inc
}
if ($rpl_server_error)
{
--dec $_include_file_depth
}
|