File: rpl_start_server.inc

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (139 lines) | stat: -rw-r--r-- 4,850 bytes parent folder | download
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
}