Loading scripts/mysqld_multi.sh +91 −68 Original line number Diff line number Diff line Loading @@ -4,7 +4,7 @@ use Getopt::Long; use POSIX qw(strftime); $|=1; $VER="2.9"; $VER="2.10"; $opt_config_file = undef(); $opt_example = 0; Loading @@ -18,6 +18,7 @@ $opt_tcp_ip = 0; $opt_user = "root"; $opt_version = 0; $opt_silent = 0; $opt_verbose = 0; my $my_print_defaults_exists= 1; my $logdir= undef(); Loading @@ -42,13 +43,10 @@ sub main { # We can't throw out yet, since --version, --help, or --example may # have been given if (!$opt_silent) { print "WARNING! my_print_defaults command not found!\n"; print "Please make sure you have this command available and\n"; print "in your path. The command is available from the latest\n"; print "MySQL distribution.\n"; } $my_print_defaults_exists= 0; } if ($my_print_defaults_exists) Loading Loading @@ -80,7 +78,7 @@ sub main } GetOptions("help","example","version","mysqld=s","mysqladmin=s", "config-file=s","user=s","password=s","log=s","no-log","tcp-ip", "silent") "silent","verbose") || die "Wrong option! See $my_progname --help for detailed information!\n"; init_log() if (!defined($opt_log)); Loading @@ -91,11 +89,6 @@ sub main exit(0); } example() if ($opt_example); if (!defined(($mysqladmin = my_which($opt_mysqladmin)))) { print "Couldn't find the mysqladmin binary! Tried: $opt_mysqladmin\n"; $flag_exit=1; } usage() if ($opt_help); if ($flag_exit) { Loading @@ -111,9 +104,9 @@ sub main exit(1); } usage() if (!defined($ARGV[0]) || ($ARGV[0] ne 'start' && $ARGV[0] ne 'START' && $ARGV[0] ne 'stop' && $ARGV[0] ne 'STOP' && $ARGV[0] ne 'report' && $ARGV[0] ne 'REPORT')); (!($ARGV[0] =~ m/^start$/i) && !($ARGV[0] =~ m/^stop$/i) && !($ARGV[0] =~ m/^report$/i))); if (!$opt_no_log) { Loading @@ -126,27 +119,36 @@ sub main print strftime "%a %b %e %H:%M:%S %Y", localtime; print "\n"; } if ($ARGV[0] eq 'report' || $ARGV[0] eq 'REPORT') { report_mysqlds(); } elsif ($ARGV[0] eq 'start' || $ARGV[0] eq 'START') if ($ARGV[0] =~ m/^start$/i) { if (!defined(($mysqld = my_which($opt_mysqld))) && !$opt_silent) if (!defined(($mysqld= my_which($opt_mysqld))) && $opt_verbose) { print "WARNING: Couldn't find the default mysqld binary. "; print "WARNING: Couldn't find the default mysqld binary.\n"; print "Tried: $opt_mysqld\n"; print "This is OK, if you are using option --mysqld= under groups"; print " [mysqldN] separately for each.\n"; print "(Disable warnings with --silent)\n"; print "This is OK, if you are using option \"mysqld=...\" in "; print "groups [mysqldN] separately for each.\n\n"; } start_mysqlds(); } else { if (!defined(($mysqladmin= my_which($opt_mysqladmin))) && $opt_verbose) { print "WARNING: Couldn't find the default mysqladmin binary.\n"; print "Tried: $opt_mysqladmin\n"; print "This is OK, if you are using option \"mysqladmin=...\" in "; print "groups [mysqldN] separately for each.\n\n"; } if ($ARGV[0] =~ m/^report$/i) { report_mysqlds(); } else { stop_mysqlds(); } } } #### #### Init log file. Check for appropriate place for log file, in the following Loading Loading @@ -196,7 +198,7 @@ sub init_log sub report_mysqlds { my (@groups, $com, $i, @options, $j, $pec); my (@groups, $com, $i, @options, $pec); print "Reporting MySQL servers\n"; if (!$opt_no_log) Loading @@ -206,23 +208,7 @@ sub report_mysqlds @groups = &find_groups($groupids); for ($i = 0; defined($groups[$i]); $i++) { $com = "my_print_defaults"; $com.= defined($opt_config_file) ? " --config-file=$opt_config_file" : ""; $com.= " $groups[$i]"; @options = `$com`; chop @options; $com = "$mysqladmin -u $opt_user"; $com.= defined($opt_password) ? " -p$opt_password" : ""; $com.= $opt_tcp_ip ? " -h 127.0.0.1" : ""; for ($j = 0; defined($options[$j]); $j++) { if ((($options[$j] =~ m/^(\-\-socket\=)(.*)$/) && !$opt_tcp_ip) || ($options[$j] =~ m/^(\-\-port\=)(.*)$/)) { $com.= " $options[$j]"; } } $com= get_mysqladmin_options($i, @groups); $com.= " ping >> /dev/null 2>&1"; system($com); $pec = $? >> 8; Loading Loading @@ -261,7 +247,7 @@ sub report_mysqlds sub start_mysqlds() { my (@groups, $com, $tmp, $i, @options, $j); my (@groups, $com, $tmp, $i, @options, $j, $mysqld_found); if (!$opt_no_log) { Loading @@ -285,7 +271,11 @@ sub start_mysqlds() $com= "$mysqld"; for ($j = 0, $tmp= ""; defined($options[$j]); $j++) { if ("--mysqld=" eq substr($options[$j], 0, 9)) if ("--mysqladmin=" eq substr($options[$j], 0, 13)) { # catch this and ignore } elsif ("--mysqld=" eq substr($options[$j], 0, 9)) { $options[$j]=~ s/\-\-mysqld\=//; $com= $options[$j]; Loading @@ -302,10 +292,10 @@ sub start_mysqlds() $com.= " &"; if (!$mysqld_found) { print "\n\n"; print "\n"; print "FATAL ERROR: Tried to start mysqld under group [$groups[$i]], "; print "but no mysqld binary was found.\n"; print "Please add --mysqld=... in group [mysqld_multi], or add it to "; print "Please add \"mysqld=...\" in group [mysqld_multi], or add it to "; print "group [$groups[$i]] separately.\n"; exit(1); } Loading @@ -324,7 +314,7 @@ sub start_mysqlds() sub stop_mysqlds() { my (@groups, $com, $i, @options, $j); my (@groups, $com, $i, @options); if (!$opt_no_log) { Loading @@ -337,33 +327,65 @@ sub stop_mysqlds() @groups = &find_groups($groupids); for ($i = 0; defined($groups[$i]); $i++) { $com= get_mysqladmin_options($i, @groups); $com.= " shutdown"; $com.= " >> $opt_log 2>&1" if (!$opt_no_log); $com.= " &"; system($com); } if (!$i && !$opt_no_log) { w2log("No MySQL servers to be stopped (check your GNRs)", "$opt_log", 0, 0); } } #### #### Sub function for mysqladmin option parsing #### sub get_mysqladmin_options { my ($i, @groups)= @_; my ($mysqladmin_found, $com, $tmp, $j); $com = "my_print_defaults"; $com.= defined($opt_config_file) ? " --config-file=$opt_config_file" : ""; $com.= " $groups[$i]"; @options = `$com`; chop @options; $com = "$mysqladmin -u $opt_user"; $com.= defined($opt_password) ? " -p$opt_password" : ""; $com.= $opt_tcp_ip ? " -h 127.0.0.1" : ""; $mysqladmin_found= 1; # The default $mysqladmin_found= 0 if (!length($mysqladmin)); $com = "$mysqladmin"; $tmp = " -u $opt_user"; $tmp.= defined($opt_password) ? " -p$opt_password" : ""; $tmp.= $opt_tcp_ip ? " -h 127.0.0.1" : ""; for ($j = 0; defined($options[$j]); $j++) { if ((($options[$j] =~ m/^(\-\-socket\=)(.*)$/) && !$opt_tcp_ip) || if ("--mysqladmin=" eq substr($options[$j], 0, 13)) { $options[$j]=~ s/\-\-mysqladmin\=//; $com= $options[$j]; $mysqladmin_found= 1; } elsif ((($options[$j] =~ m/^(\-\-socket\=)(.*)$/) && !$opt_tcp_ip) || ($options[$j] =~ m/^(\-\-port\=)(.*)$/)) { $com.= " $options[$j]"; $tmp.= " $options[$j]"; } } $com.= " shutdown"; $com.= " >> $opt_log 2>&1" if (!$opt_no_log); $com.= " &"; system($com); } if (!$i && !$opt_no_log) if (!$mysqladmin_found) { w2log("No MySQL servers to be stopped (check your GNRs)", "$opt_log", 0, 0); print "\n"; print "FATAL ERROR: Tried to use mysqladmin in group [$groups[$i]], "; print "but no mysqladmin binary was found.\n"; print "Please add \"mysqladmin=...\" in group [mysqld_multi], or "; print "in group [$groups[$i]].\n"; exit(1); } $com.= $tmp; return $com; } #### Loading Loading @@ -702,6 +724,7 @@ Options: file is turned on. --password=... Password for user for mysqladmin. --silent Disable warnings. --verbose Be more verbose. --tcp-ip Connect to the MySQL server(s) via the TCP/IP port instead of the UNIX socket. This affects stopping and reporting. If a socket file is missing, the server may still be Loading Loading
scripts/mysqld_multi.sh +91 −68 Original line number Diff line number Diff line Loading @@ -4,7 +4,7 @@ use Getopt::Long; use POSIX qw(strftime); $|=1; $VER="2.9"; $VER="2.10"; $opt_config_file = undef(); $opt_example = 0; Loading @@ -18,6 +18,7 @@ $opt_tcp_ip = 0; $opt_user = "root"; $opt_version = 0; $opt_silent = 0; $opt_verbose = 0; my $my_print_defaults_exists= 1; my $logdir= undef(); Loading @@ -42,13 +43,10 @@ sub main { # We can't throw out yet, since --version, --help, or --example may # have been given if (!$opt_silent) { print "WARNING! my_print_defaults command not found!\n"; print "Please make sure you have this command available and\n"; print "in your path. The command is available from the latest\n"; print "MySQL distribution.\n"; } $my_print_defaults_exists= 0; } if ($my_print_defaults_exists) Loading Loading @@ -80,7 +78,7 @@ sub main } GetOptions("help","example","version","mysqld=s","mysqladmin=s", "config-file=s","user=s","password=s","log=s","no-log","tcp-ip", "silent") "silent","verbose") || die "Wrong option! See $my_progname --help for detailed information!\n"; init_log() if (!defined($opt_log)); Loading @@ -91,11 +89,6 @@ sub main exit(0); } example() if ($opt_example); if (!defined(($mysqladmin = my_which($opt_mysqladmin)))) { print "Couldn't find the mysqladmin binary! Tried: $opt_mysqladmin\n"; $flag_exit=1; } usage() if ($opt_help); if ($flag_exit) { Loading @@ -111,9 +104,9 @@ sub main exit(1); } usage() if (!defined($ARGV[0]) || ($ARGV[0] ne 'start' && $ARGV[0] ne 'START' && $ARGV[0] ne 'stop' && $ARGV[0] ne 'STOP' && $ARGV[0] ne 'report' && $ARGV[0] ne 'REPORT')); (!($ARGV[0] =~ m/^start$/i) && !($ARGV[0] =~ m/^stop$/i) && !($ARGV[0] =~ m/^report$/i))); if (!$opt_no_log) { Loading @@ -126,27 +119,36 @@ sub main print strftime "%a %b %e %H:%M:%S %Y", localtime; print "\n"; } if ($ARGV[0] eq 'report' || $ARGV[0] eq 'REPORT') { report_mysqlds(); } elsif ($ARGV[0] eq 'start' || $ARGV[0] eq 'START') if ($ARGV[0] =~ m/^start$/i) { if (!defined(($mysqld = my_which($opt_mysqld))) && !$opt_silent) if (!defined(($mysqld= my_which($opt_mysqld))) && $opt_verbose) { print "WARNING: Couldn't find the default mysqld binary. "; print "WARNING: Couldn't find the default mysqld binary.\n"; print "Tried: $opt_mysqld\n"; print "This is OK, if you are using option --mysqld= under groups"; print " [mysqldN] separately for each.\n"; print "(Disable warnings with --silent)\n"; print "This is OK, if you are using option \"mysqld=...\" in "; print "groups [mysqldN] separately for each.\n\n"; } start_mysqlds(); } else { if (!defined(($mysqladmin= my_which($opt_mysqladmin))) && $opt_verbose) { print "WARNING: Couldn't find the default mysqladmin binary.\n"; print "Tried: $opt_mysqladmin\n"; print "This is OK, if you are using option \"mysqladmin=...\" in "; print "groups [mysqldN] separately for each.\n\n"; } if ($ARGV[0] =~ m/^report$/i) { report_mysqlds(); } else { stop_mysqlds(); } } } #### #### Init log file. Check for appropriate place for log file, in the following Loading Loading @@ -196,7 +198,7 @@ sub init_log sub report_mysqlds { my (@groups, $com, $i, @options, $j, $pec); my (@groups, $com, $i, @options, $pec); print "Reporting MySQL servers\n"; if (!$opt_no_log) Loading @@ -206,23 +208,7 @@ sub report_mysqlds @groups = &find_groups($groupids); for ($i = 0; defined($groups[$i]); $i++) { $com = "my_print_defaults"; $com.= defined($opt_config_file) ? " --config-file=$opt_config_file" : ""; $com.= " $groups[$i]"; @options = `$com`; chop @options; $com = "$mysqladmin -u $opt_user"; $com.= defined($opt_password) ? " -p$opt_password" : ""; $com.= $opt_tcp_ip ? " -h 127.0.0.1" : ""; for ($j = 0; defined($options[$j]); $j++) { if ((($options[$j] =~ m/^(\-\-socket\=)(.*)$/) && !$opt_tcp_ip) || ($options[$j] =~ m/^(\-\-port\=)(.*)$/)) { $com.= " $options[$j]"; } } $com= get_mysqladmin_options($i, @groups); $com.= " ping >> /dev/null 2>&1"; system($com); $pec = $? >> 8; Loading Loading @@ -261,7 +247,7 @@ sub report_mysqlds sub start_mysqlds() { my (@groups, $com, $tmp, $i, @options, $j); my (@groups, $com, $tmp, $i, @options, $j, $mysqld_found); if (!$opt_no_log) { Loading @@ -285,7 +271,11 @@ sub start_mysqlds() $com= "$mysqld"; for ($j = 0, $tmp= ""; defined($options[$j]); $j++) { if ("--mysqld=" eq substr($options[$j], 0, 9)) if ("--mysqladmin=" eq substr($options[$j], 0, 13)) { # catch this and ignore } elsif ("--mysqld=" eq substr($options[$j], 0, 9)) { $options[$j]=~ s/\-\-mysqld\=//; $com= $options[$j]; Loading @@ -302,10 +292,10 @@ sub start_mysqlds() $com.= " &"; if (!$mysqld_found) { print "\n\n"; print "\n"; print "FATAL ERROR: Tried to start mysqld under group [$groups[$i]], "; print "but no mysqld binary was found.\n"; print "Please add --mysqld=... in group [mysqld_multi], or add it to "; print "Please add \"mysqld=...\" in group [mysqld_multi], or add it to "; print "group [$groups[$i]] separately.\n"; exit(1); } Loading @@ -324,7 +314,7 @@ sub start_mysqlds() sub stop_mysqlds() { my (@groups, $com, $i, @options, $j); my (@groups, $com, $i, @options); if (!$opt_no_log) { Loading @@ -337,33 +327,65 @@ sub stop_mysqlds() @groups = &find_groups($groupids); for ($i = 0; defined($groups[$i]); $i++) { $com= get_mysqladmin_options($i, @groups); $com.= " shutdown"; $com.= " >> $opt_log 2>&1" if (!$opt_no_log); $com.= " &"; system($com); } if (!$i && !$opt_no_log) { w2log("No MySQL servers to be stopped (check your GNRs)", "$opt_log", 0, 0); } } #### #### Sub function for mysqladmin option parsing #### sub get_mysqladmin_options { my ($i, @groups)= @_; my ($mysqladmin_found, $com, $tmp, $j); $com = "my_print_defaults"; $com.= defined($opt_config_file) ? " --config-file=$opt_config_file" : ""; $com.= " $groups[$i]"; @options = `$com`; chop @options; $com = "$mysqladmin -u $opt_user"; $com.= defined($opt_password) ? " -p$opt_password" : ""; $com.= $opt_tcp_ip ? " -h 127.0.0.1" : ""; $mysqladmin_found= 1; # The default $mysqladmin_found= 0 if (!length($mysqladmin)); $com = "$mysqladmin"; $tmp = " -u $opt_user"; $tmp.= defined($opt_password) ? " -p$opt_password" : ""; $tmp.= $opt_tcp_ip ? " -h 127.0.0.1" : ""; for ($j = 0; defined($options[$j]); $j++) { if ((($options[$j] =~ m/^(\-\-socket\=)(.*)$/) && !$opt_tcp_ip) || if ("--mysqladmin=" eq substr($options[$j], 0, 13)) { $options[$j]=~ s/\-\-mysqladmin\=//; $com= $options[$j]; $mysqladmin_found= 1; } elsif ((($options[$j] =~ m/^(\-\-socket\=)(.*)$/) && !$opt_tcp_ip) || ($options[$j] =~ m/^(\-\-port\=)(.*)$/)) { $com.= " $options[$j]"; $tmp.= " $options[$j]"; } } $com.= " shutdown"; $com.= " >> $opt_log 2>&1" if (!$opt_no_log); $com.= " &"; system($com); } if (!$i && !$opt_no_log) if (!$mysqladmin_found) { w2log("No MySQL servers to be stopped (check your GNRs)", "$opt_log", 0, 0); print "\n"; print "FATAL ERROR: Tried to use mysqladmin in group [$groups[$i]], "; print "but no mysqladmin binary was found.\n"; print "Please add \"mysqladmin=...\" in group [mysqld_multi], or "; print "in group [$groups[$i]].\n"; exit(1); } $com.= $tmp; return $com; } #### Loading Loading @@ -702,6 +724,7 @@ Options: file is turned on. --password=... Password for user for mysqladmin. --silent Disable warnings. --verbose Be more verbose. --tcp-ip Connect to the MySQL server(s) via the TCP/IP port instead of the UNIX socket. This affects stopping and reporting. If a socket file is missing, the server may still be Loading