mirror of
https://abf.rosa.ru/djam/mariadb.git
synced 2025-02-23 22:52:48 +00:00

This package in ROSA was maintained quite poorly, had only a few users and lacked such important features as running multiple instances of MySQL server (mysqld@.service) and scripts for automatic upgrade to newer versions. Also upstream has renamed libraries, now there is mysql-connector-c with devel parts. /srv/mysql is also rather strange, /var/lib/mysql is more common. Let's rebase to a well-maintained package from openSUSE. It is being done in a not released platform without any compatibility for smooth upgrades fromt he old package. The new one has a lower epoch, automatic upgrades won't be done. High epoch is not needed anymore: mysql-community has not been merged from abf.io/rosaserver to abf.io/import, and now the library in mariadb is called libmariadbclient, not libmysqlclient (but compatibility symlinks do exist), so there are no duplicated provides and so there is no need in a high epoch. This commits just imports from openSUSE's SRPM without any changes, the following one will adapt it for ROSA. It will allow to easily see the diff against the openSUSE's package to easify further syncs and contibuting back to SUSE (https://bugzilla.opensuse.org/show_bug.cgi?id=1182218)
179 lines
5.6 KiB
Diff
179 lines
5.6 KiB
Diff
PATCH-P0-FEATURE-UPSTREAM: Add more functionality to mysqld_multi script
|
|
|
|
Adds reload funcionality to mysqld_multi.sh perl script and adds --datadir
|
|
support.
|
|
|
|
Maintainer: Michal Hrusecky <Michal.Hrusecky@opensuse.org>
|
|
|
|
Index: scripts/mysqld_multi.sh
|
|
===================================================================
|
|
--- scripts/mysqld_multi.sh.orig
|
|
+++ scripts/mysqld_multi.sh
|
|
@@ -36,6 +36,7 @@
|
|
|
|
use Getopt::Long;
|
|
use POSIX qw(strftime getcwd);
|
|
+use File::Path qw(mkpath);
|
|
|
|
$|=1;
|
|
$VER="2.20";
|
|
@@ -162,6 +163,7 @@ sub main
|
|
usage() if (!defined($ARGV[0]) ||
|
|
(!($ARGV[0] =~ m/^start$/i) &&
|
|
!($ARGV[0] =~ m/^stop$/i) &&
|
|
+ !($ARGV[0] =~ m/^reload$/i) &&
|
|
!($ARGV[0] =~ m/^report$/i)));
|
|
|
|
if (!$opt_no_log)
|
|
@@ -175,7 +177,7 @@ sub main
|
|
print strftime "%a %b %e %H:%M:%S %Y", localtime;
|
|
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)
|
|
{
|
|
@@ -184,7 +186,11 @@ sub main
|
|
print "This is OK, if you are using option \"mysqld=...\" in ";
|
|
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
|
|
{
|
|
@@ -344,6 +350,39 @@ sub start_mysqlds()
|
|
$com= "$mysqld";
|
|
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))
|
|
{
|
|
# catch this and ignore
|
|
@@ -408,6 +447,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
|
|
####
|
|
|
|
@@ -770,7 +861,7 @@ sub usage
|
|
$my_progname version $VER by Jani Tolonen
|
|
|
|
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.
|
|
|
|
$my_progname can read group [mysqld_multi] from my.cnf file. You may
|
|
@@ -788,16 +879,16 @@ integer starting from 1. These groups sh
|
|
[mysqld] group, but with those port, socket and any other options
|
|
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,
|
|
-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...]
|
|
-or $my_progname [OPTIONS] {start|stop|report} [GNR-GNR,GNR,GNR-GNR,...]
|
|
+Usage: $my_progname [OPTIONS] {start|reload|stop|report} [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
|
|
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
|
|
-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.
|
|
|
|
Options:
|