mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-27477 Remaining SUSE patches for 10.2+
Adds reload and --datadir functionality to mysqld_multi Increased version to 3.0 Source: https://github.com/openSUSE/mysql-packaging/blob/master/patches/mysql-patches/mariadb-10.0.15-mysqld_multi-features.patch Author: Michal Hrusecky <Michal.Hrusecky@opensuse.org> Reviewer: monty@mariadb.org
This commit is contained in:
@ -20,9 +20,10 @@
|
|||||||
|
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
use POSIX qw(strftime getcwd);
|
use POSIX qw(strftime getcwd);
|
||||||
|
use File::Path qw(mkpath);
|
||||||
|
|
||||||
$|=1;
|
$|=1;
|
||||||
$VER="2.20";
|
$VER="3.0";
|
||||||
|
|
||||||
my @defaults_options; # Leading --no-defaults, --defaults-file, etc.
|
my @defaults_options; # Leading --no-defaults, --defaults-file, etc.
|
||||||
|
|
||||||
@ -147,6 +148,7 @@ sub main
|
|||||||
usage() if (!defined($ARGV[0]) ||
|
usage() if (!defined($ARGV[0]) ||
|
||||||
(!($ARGV[0] =~ m/^start$/i) &&
|
(!($ARGV[0] =~ m/^start$/i) &&
|
||||||
!($ARGV[0] =~ m/^stop$/i) &&
|
!($ARGV[0] =~ m/^stop$/i) &&
|
||||||
|
!($ARGV[0] =~ m/^reload$/i) &&
|
||||||
!($ARGV[0] =~ m/^report$/i)));
|
!($ARGV[0] =~ m/^report$/i)));
|
||||||
|
|
||||||
if (!$opt_no_log)
|
if (!$opt_no_log)
|
||||||
@ -160,7 +162,7 @@ sub main
|
|||||||
print strftime "%a %b %e %H:%M:%S %Y", localtime;
|
print strftime "%a %b %e %H:%M:%S %Y", localtime;
|
||||||
print "\n";
|
print "\n";
|
||||||
}
|
}
|
||||||
if ($ARGV[0] =~ m/^start$/i)
|
if (($ARGV[0] =~ m/^start$/i) || ($ARGV[0] =~ m/^reload$/i))
|
||||||
{
|
{
|
||||||
if (!defined(($mysqld= my_which($opt_mysqld))) && $opt_verbose)
|
if (!defined(($mysqld= my_which($opt_mysqld))) && $opt_verbose)
|
||||||
{
|
{
|
||||||
@ -169,7 +171,11 @@ sub main
|
|||||||
print "This is OK, if you are using option \"mysqld=...\" in ";
|
print "This is OK, if you are using option \"mysqld=...\" in ";
|
||||||
print "groups [mysqldN] separately for each.\n\n";
|
print "groups [mysqldN] separately for each.\n\n";
|
||||||
}
|
}
|
||||||
start_mysqlds();
|
if ($ARGV[0] =~ m/^start$/i) {
|
||||||
|
start_mysqlds();
|
||||||
|
} elsif ($ARGV[0] =~ m/^reload$/i) {
|
||||||
|
reload_mysqlds();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -332,6 +338,39 @@ sub start_mysqlds()
|
|||||||
|
|
||||||
for ($j = 0, $tmp= ""; defined($options[$j]); $j++)
|
for ($j = 0, $tmp= ""; defined($options[$j]); $j++)
|
||||||
{
|
{
|
||||||
|
if ("--datadir=" eq substr($options[$j], 0, 10)) {
|
||||||
|
$datadir = $options[$j];
|
||||||
|
$datadir =~ s/\-\-datadir\=//;
|
||||||
|
eval { mkpath($datadir) };
|
||||||
|
if ($@) {
|
||||||
|
print "FATAL ERROR: Cannot create data directory $datadir: $!\n";
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
if (! -d $datadir."/mysql") {
|
||||||
|
if (-w $datadir) {
|
||||||
|
print "\n\nInstalling new database in $datadir\n\n";
|
||||||
|
$install_cmd="@bindir@/mysql_install_db ";
|
||||||
|
$install_cmd.="--user=mysql ";
|
||||||
|
$install_cmd.="--datadir=$datadir";
|
||||||
|
system($install_cmd);
|
||||||
|
} else {
|
||||||
|
print "\n";
|
||||||
|
print "FATAL ERROR: Tried to create mysqld under group [$groups[$i]],\n";
|
||||||
|
print "but the data directory is not writable.\n";
|
||||||
|
print "data directory used: $datadir\n";
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! -d $datadir."/mysql") {
|
||||||
|
print "\n";
|
||||||
|
print "FATAL ERROR: Tried to start mysqld under group [$groups[$i]],\n";
|
||||||
|
print "but no data directory was found or could be created.\n";
|
||||||
|
print "data directory used: $datadir\n";
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ("--mysqladmin=" eq substr($options[$j], 0, 13))
|
if ("--mysqladmin=" eq substr($options[$j], 0, 13))
|
||||||
{
|
{
|
||||||
# catch this and ignore
|
# catch this and ignore
|
||||||
@ -412,6 +451,58 @@ sub start_mysqlds()
|
|||||||
}
|
}
|
||||||
|
|
||||||
####
|
####
|
||||||
|
#### reload multiple servers
|
||||||
|
####
|
||||||
|
|
||||||
|
sub reload_mysqlds()
|
||||||
|
{
|
||||||
|
my (@groups, $com, $tmp, $i, @options, $j);
|
||||||
|
|
||||||
|
if (!$opt_no_log)
|
||||||
|
{
|
||||||
|
w2log("\nReloading MySQL servers\n","$opt_log",0,0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print "\nReloading MySQL servers\n";
|
||||||
|
}
|
||||||
|
@groups = &find_groups($groupids);
|
||||||
|
for ($i = 0; defined($groups[$i]); $i++)
|
||||||
|
{
|
||||||
|
$mysqld_server = $mysqld;
|
||||||
|
@options = defaults_for_group($groups[$i]);
|
||||||
|
|
||||||
|
for ($j = 0, $tmp= ""; defined($options[$j]); $j++)
|
||||||
|
{
|
||||||
|
if ("--mysqladmin=" eq substr($options[$j], 0, 13))
|
||||||
|
{
|
||||||
|
# catch this and ignore
|
||||||
|
}
|
||||||
|
elsif ("--mysqld=" eq substr($options[$j], 0, 9))
|
||||||
|
{
|
||||||
|
$options[$j] =~ s/\-\-mysqld\=//;
|
||||||
|
$mysqld_server = $options[$j];
|
||||||
|
}
|
||||||
|
elsif ("--pid-file=" eq substr($options[$j], 0, 11))
|
||||||
|
{
|
||||||
|
$options[$j] =~ s/\-\-pid-file\=//;
|
||||||
|
$pid_file = $options[$j];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$com = "killproc -p $pid_file -HUP $mysqld_server";
|
||||||
|
system($com);
|
||||||
|
|
||||||
|
$com = "touch $pid_file";
|
||||||
|
system($com);
|
||||||
|
}
|
||||||
|
if (!$i && !$opt_no_log)
|
||||||
|
{
|
||||||
|
w2log("No MySQL servers to be reloaded (check your GNRs)",
|
||||||
|
"$opt_log", 0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
#### stop multiple servers
|
#### stop multiple servers
|
||||||
####
|
####
|
||||||
|
|
||||||
@ -793,7 +884,7 @@ sub usage
|
|||||||
$my_progname version $VER by Jani Tolonen
|
$my_progname version $VER by Jani Tolonen
|
||||||
|
|
||||||
Description:
|
Description:
|
||||||
$my_progname can be used to start, or stop any number of separate
|
$my_progname can be used to start, reload, or stop any number of separate
|
||||||
mysqld processes running in different TCP/IP ports and UNIX sockets.
|
mysqld processes running in different TCP/IP ports and UNIX sockets.
|
||||||
|
|
||||||
$my_progname can read group [mysqld_multi] from my.cnf file. You may
|
$my_progname can read group [mysqld_multi] from my.cnf file. You may
|
||||||
@ -811,16 +902,16 @@ integer starting from 1. These groups should be the same as the regular
|
|||||||
[mysqld] group, but with those port, socket and any other options
|
[mysqld] group, but with those port, socket and any other options
|
||||||
that are to be used with each separate mysqld process. The number
|
that are to be used with each separate mysqld process. The number
|
||||||
in the group name has another function; it can be used for starting,
|
in the group name has another function; it can be used for starting,
|
||||||
stopping, or reporting any specific mysqld server.
|
reloading, stopping, or reporting any specific mysqld server.
|
||||||
|
|
||||||
Usage: $my_progname [OPTIONS] {start|stop|report} [GNR,GNR,GNR...]
|
Usage: $my_progname [OPTIONS] {start|reload|stop|report} [GNR,GNR,GNR...]
|
||||||
or $my_progname [OPTIONS] {start|stop|report} [GNR-GNR,GNR,GNR-GNR,...]
|
or $my_progname [OPTIONS] {start|reload|stop|report} [GNR-GNR,GNR,GNR-GNR,...]
|
||||||
|
|
||||||
The GNR means the group number. You can start, stop or report any GNR,
|
The GNR means the group number. You can start, reload, stop or report any GNR,
|
||||||
or several of them at the same time. (See --example) The GNRs list can
|
or several of them at the same time. (See --example) The GNRs list can
|
||||||
be comma separated or a dash combined. The latter means that all the
|
be comma separated or a dash combined. The latter means that all the
|
||||||
GNRs between GNR1-GNR2 will be affected. Without GNR argument all the
|
GNRs between GNR1-GNR2 will be affected. Without GNR argument all the
|
||||||
groups found will either be started, stopped, or reported. Note that
|
groups found will either be started, reloaded, stopped, or reported. Note that
|
||||||
syntax for specifying GNRs must appear without spaces.
|
syntax for specifying GNRs must appear without spaces.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
|
Reference in New Issue
Block a user