Convert to systemd startup support
This commit is contained in:
parent
c606a777c1
commit
f316512a73
228
mysql.init
228
mysql.init
@ -1,228 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# mysqld This shell script takes care of starting and stopping
|
|
||||||
# the MySQL subsystem (mysqld).
|
|
||||||
#
|
|
||||||
# chkconfig: - 64 36
|
|
||||||
# description: MySQL database server.
|
|
||||||
# processname: mysqld
|
|
||||||
# config: /etc/my.cnf
|
|
||||||
# pidfile: /var/run/mysqld/mysqld.pid
|
|
||||||
### BEGIN INIT INFO
|
|
||||||
# Provides: mysqld
|
|
||||||
# Required-Start: $local_fs $remote_fs $network $named $syslog $time
|
|
||||||
# Required-Stop: $local_fs $remote_fs $network $named $syslog $time
|
|
||||||
# Short-Description: start and stop MySQL server
|
|
||||||
# Description: MySQL database server
|
|
||||||
### END INIT INFO
|
|
||||||
|
|
||||||
# Source function library.
|
|
||||||
. /etc/rc.d/init.d/functions
|
|
||||||
|
|
||||||
# Source networking configuration.
|
|
||||||
. /etc/sysconfig/network
|
|
||||||
|
|
||||||
|
|
||||||
exec="/usr/bin/mysqld_safe"
|
|
||||||
prog="mysqld"
|
|
||||||
|
|
||||||
# Set timeouts here so they can be overridden from /etc/sysconfig/mysqld
|
|
||||||
STARTTIMEOUT=120
|
|
||||||
STOPTIMEOUT=60
|
|
||||||
|
|
||||||
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
|
|
||||||
|
|
||||||
lockfile=/var/lock/subsys/$prog
|
|
||||||
|
|
||||||
|
|
||||||
# extract value of a MySQL option from config files
|
|
||||||
# Usage: get_mysql_option SECTION VARNAME DEFAULT
|
|
||||||
# result is returned in $result
|
|
||||||
# We use my_print_defaults which prints all options from multiple files,
|
|
||||||
# with the more specific ones later; hence take the last match.
|
|
||||||
get_mysql_option(){
|
|
||||||
result=`/usr/bin/my_print_defaults "$1" | sed -n "s/^--$2=//p" | tail -n 1`
|
|
||||||
if [ -z "$result" ]; then
|
|
||||||
# not found, use default
|
|
||||||
result="$3"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
get_mysql_option mysqld datadir "/var/lib/mysql"
|
|
||||||
datadir="$result"
|
|
||||||
get_mysql_option mysqld socket "$datadir/mysql.sock"
|
|
||||||
socketfile="$result"
|
|
||||||
get_mysql_option mysqld_safe log-error "/var/log/mysqld.log"
|
|
||||||
errlogfile="$result"
|
|
||||||
get_mysql_option mysqld_safe pid-file "/var/run/mysqld/mysqld.pid"
|
|
||||||
mypidfile="$result"
|
|
||||||
|
|
||||||
|
|
||||||
start(){
|
|
||||||
[ -x $exec ] || exit 5
|
|
||||||
# check to see if it's already running
|
|
||||||
RESPONSE=`/usr/bin/mysqladmin --socket="$socketfile" --user=UNKNOWN_MYSQL_USER ping 2>&1`
|
|
||||||
if [ $? = 0 ]; then
|
|
||||||
# already running, do nothing
|
|
||||||
action $"Starting $prog: " /bin/true
|
|
||||||
ret=0
|
|
||||||
elif echo "$RESPONSE" | grep -q "Access denied for user"
|
|
||||||
then
|
|
||||||
# already running, do nothing
|
|
||||||
action $"Starting $prog: " /bin/true
|
|
||||||
ret=0
|
|
||||||
else
|
|
||||||
# prepare for start
|
|
||||||
touch "$errlogfile"
|
|
||||||
chown mysql:mysql "$errlogfile"
|
|
||||||
chmod 0640 "$errlogfile"
|
|
||||||
[ -x /sbin/restorecon ] && /sbin/restorecon "$errlogfile"
|
|
||||||
if [ ! -d "$datadir/mysql" ] ; then
|
|
||||||
# First, make sure $datadir is there with correct permissions
|
|
||||||
if [ ! -e "$datadir" -a ! -h "$datadir" ]
|
|
||||||
then
|
|
||||||
mkdir -p "$datadir" || exit 1
|
|
||||||
fi
|
|
||||||
chown mysql:mysql "$datadir"
|
|
||||||
chmod 0755 "$datadir"
|
|
||||||
[ -x /sbin/restorecon ] && /sbin/restorecon "$datadir"
|
|
||||||
# Now create the database
|
|
||||||
action $"Initializing MySQL database: " /usr/bin/mysql_install_db --datadir="$datadir" --user=mysql
|
|
||||||
ret=$?
|
|
||||||
chown -R mysql:mysql "$datadir"
|
|
||||||
if [ $ret -ne 0 ] ; then
|
|
||||||
return $ret
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
chown mysql:mysql "$datadir"
|
|
||||||
chmod 0755 "$datadir"
|
|
||||||
# Pass all the options determined above, to ensure consistent behavior.
|
|
||||||
# In many cases mysqld_safe would arrive at the same conclusions anyway
|
|
||||||
# but we need to be sure. (An exception is that we don't force the
|
|
||||||
# log-error setting, since this script doesn't really depend on that,
|
|
||||||
# and some users might prefer to configure logging to syslog.)
|
|
||||||
# Note: set --basedir to prevent probes that might trigger SELinux
|
|
||||||
# alarms, per bug #547485
|
|
||||||
$exec --datadir="$datadir" --socket="$socketfile" \
|
|
||||||
--pid-file="$mypidfile" \
|
|
||||||
--basedir=/usr --user=mysql >/dev/null 2>&1 &
|
|
||||||
safe_pid=$!
|
|
||||||
# Spin for a maximum of N seconds waiting for the server to come up;
|
|
||||||
# exit the loop immediately if mysqld_safe process disappears.
|
|
||||||
# Rather than assuming we know a valid username, accept an "access
|
|
||||||
# denied" response as meaning the server is functioning.
|
|
||||||
ret=0
|
|
||||||
TIMEOUT="$STARTTIMEOUT"
|
|
||||||
while [ $TIMEOUT -gt 0 ]; do
|
|
||||||
RESPONSE=`/usr/bin/mysqladmin --socket="$socketfile" --user=UNKNOWN_MYSQL_USER ping 2>&1`
|
|
||||||
mret=$?
|
|
||||||
if [ $mret -eq 0 ]; then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
# exit codes 1, 11 (EXIT_CANNOT_CONNECT_TO_SERVICE) are expected,
|
|
||||||
# anything else suggests a configuration error
|
|
||||||
if [ $mret -ne 1 -a $mret -ne 11 ]; then
|
|
||||||
echo "$RESPONSE"
|
|
||||||
echo "Cannot check for MySQL Daemon startup because of mysqladmin failure."
|
|
||||||
ret=1
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
echo "$RESPONSE" | grep -q "Access denied for user" && break
|
|
||||||
if ! /bin/kill -0 $safe_pid 2>/dev/null; then
|
|
||||||
echo "MySQL Daemon failed to start."
|
|
||||||
ret=1
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
sleep 1
|
|
||||||
let TIMEOUT=${TIMEOUT}-1
|
|
||||||
done
|
|
||||||
if [ $TIMEOUT -eq 0 ]; then
|
|
||||||
echo "Timeout error occurred trying to start MySQL Daemon."
|
|
||||||
ret=1
|
|
||||||
fi
|
|
||||||
if [ $ret -eq 0 ]; then
|
|
||||||
action $"Starting $prog: " /bin/true
|
|
||||||
touch $lockfile
|
|
||||||
else
|
|
||||||
action $"Starting $prog: " /bin/false
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
return $ret
|
|
||||||
}
|
|
||||||
|
|
||||||
stop(){
|
|
||||||
if [ ! -f "$mypidfile" ]; then
|
|
||||||
# not running; per LSB standards this is "ok"
|
|
||||||
action $"Stopping $prog: " /bin/true
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
MYSQLPID=`cat "$mypidfile"`
|
|
||||||
if [ -n "$MYSQLPID" ]; then
|
|
||||||
/bin/kill "$MYSQLPID" >/dev/null 2>&1
|
|
||||||
ret=$?
|
|
||||||
if [ $ret -eq 0 ]; then
|
|
||||||
TIMEOUT="$STOPTIMEOUT"
|
|
||||||
while [ $TIMEOUT -gt 0 ]; do
|
|
||||||
/bin/kill -0 "$MYSQLPID" >/dev/null 2>&1 || break
|
|
||||||
sleep 1
|
|
||||||
let TIMEOUT=${TIMEOUT}-1
|
|
||||||
done
|
|
||||||
if [ $TIMEOUT -eq 0 ]; then
|
|
||||||
echo "Timeout error occurred trying to stop MySQL Daemon."
|
|
||||||
ret=1
|
|
||||||
action $"Stopping $prog: " /bin/false
|
|
||||||
else
|
|
||||||
rm -f $lockfile
|
|
||||||
rm -f "$socketfile"
|
|
||||||
action $"Stopping $prog: " /bin/true
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
action $"Stopping $prog: " /bin/false
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
# failed to read pidfile, probably insufficient permissions
|
|
||||||
action $"Stopping $prog: " /bin/false
|
|
||||||
ret=4
|
|
||||||
fi
|
|
||||||
return $ret
|
|
||||||
}
|
|
||||||
|
|
||||||
restart(){
|
|
||||||
stop
|
|
||||||
start
|
|
||||||
}
|
|
||||||
|
|
||||||
condrestart(){
|
|
||||||
[ -e $lockfile ] && restart || :
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# See how we were called.
|
|
||||||
case "$1" in
|
|
||||||
start)
|
|
||||||
start
|
|
||||||
;;
|
|
||||||
stop)
|
|
||||||
stop
|
|
||||||
;;
|
|
||||||
status)
|
|
||||||
status $prog
|
|
||||||
;;
|
|
||||||
restart)
|
|
||||||
restart
|
|
||||||
;;
|
|
||||||
condrestart|try-restart)
|
|
||||||
condrestart
|
|
||||||
;;
|
|
||||||
reload)
|
|
||||||
exit 3
|
|
||||||
;;
|
|
||||||
force-reload)
|
|
||||||
restart
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
|
|
||||||
exit 2
|
|
||||||
esac
|
|
||||||
|
|
||||||
exit $?
|
|
67
mysql.spec
67
mysql.spec
@ -1,6 +1,9 @@
|
|||||||
Name: mysql
|
Name: mysql
|
||||||
Version: 5.5.14
|
Version: 5.5.14
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
|
# Update this whenever F15 gets rebased; it must be NVR-greater than F15 pkg:
|
||||||
|
%global first_systemd_version 5.5.14-3
|
||||||
|
|
||||||
Summary: MySQL client programs and shared libraries
|
Summary: MySQL client programs and shared libraries
|
||||||
Group: Applications/Databases
|
Group: Applications/Databases
|
||||||
URL: http://www.mysql.com
|
URL: http://www.mysql.com
|
||||||
@ -20,7 +23,6 @@ Source0: mysql-%{version}-nodocs.tar.gz
|
|||||||
# the tarball into the current directory:
|
# the tarball into the current directory:
|
||||||
# ./generate-tarball.sh $VERSION
|
# ./generate-tarball.sh $VERSION
|
||||||
Source1: generate-tarball.sh
|
Source1: generate-tarball.sh
|
||||||
Source2: mysql.init
|
|
||||||
Source3: my.cnf
|
Source3: my.cnf
|
||||||
Source4: scriptstub.c
|
Source4: scriptstub.c
|
||||||
Source5: my_config.h
|
Source5: my_config.h
|
||||||
@ -29,6 +31,9 @@ Source7: README.mysql-license
|
|||||||
Source8: libmysql.version
|
Source8: libmysql.version
|
||||||
Source9: mysql-embedded-check.c
|
Source9: mysql-embedded-check.c
|
||||||
Source10: mysql.tmpfiles.d
|
Source10: mysql.tmpfiles.d
|
||||||
|
Source11: mysqld.service
|
||||||
|
Source12: mysqld-prepare-db-dir
|
||||||
|
Source13: mysqld-wait-ready
|
||||||
# Working around perl dependency checking bug in rpm FTTB. Remove later.
|
# Working around perl dependency checking bug in rpm FTTB. Remove later.
|
||||||
Source999: filter-requires-mysql.sh
|
Source999: filter-requires-mysql.sh
|
||||||
|
|
||||||
@ -45,6 +50,7 @@ Patch10: mysql-embedded-crash.patch
|
|||||||
Patch11: mysql-plugin-bool.patch
|
Patch11: mysql-plugin-bool.patch
|
||||||
Patch12: mysql-s390-tsc.patch
|
Patch12: mysql-s390-tsc.patch
|
||||||
Patch13: mysql-openssl-test.patch
|
Patch13: mysql-openssl-test.patch
|
||||||
|
Patch14: mysqld-nowatch.patch
|
||||||
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
||||||
BuildRequires: perl, readline-devel, openssl-devel
|
BuildRequires: perl, readline-devel, openssl-devel
|
||||||
@ -54,6 +60,7 @@ BuildRequires: systemtap-sdt-devel
|
|||||||
BuildRequires: time procps
|
BuildRequires: time procps
|
||||||
# Socket and Time::HiRes are needed to run regression tests
|
# Socket and Time::HiRes are needed to run regression tests
|
||||||
BuildRequires: perl(Socket), perl(Time::HiRes)
|
BuildRequires: perl(Socket), perl(Time::HiRes)
|
||||||
|
BuildRequires: systemd-units
|
||||||
|
|
||||||
Requires: grep, fileutils
|
Requires: grep, fileutils
|
||||||
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
|
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
|
||||||
@ -96,11 +103,16 @@ Requires: sh-utils
|
|||||||
Requires(pre): /usr/sbin/useradd
|
Requires(pre): /usr/sbin/useradd
|
||||||
Requires(post): chkconfig
|
Requires(post): chkconfig
|
||||||
Requires(preun): chkconfig
|
Requires(preun): chkconfig
|
||||||
# This is for /sbin/service
|
# We require this to be present for /etc/tmpfiles.d
|
||||||
Requires(preun): initscripts
|
|
||||||
Requires(postun): initscripts
|
|
||||||
# This is for /etc/tmpfiles.d
|
|
||||||
Requires: systemd-units
|
Requires: systemd-units
|
||||||
|
# Make sure it's there when scriptlets run, too
|
||||||
|
Requires(post): systemd-units
|
||||||
|
Requires(preun): systemd-units
|
||||||
|
Requires(postun): systemd-units
|
||||||
|
# This is actually needed for the %%triggerun script but Requires(triggerun)
|
||||||
|
# is not valid. We can use %%post because this particular %%triggerun script
|
||||||
|
# should fire just after this package is installed.
|
||||||
|
Requires(post): systemd-sysv
|
||||||
# mysqlhotcopy needs DBI/DBD support
|
# mysqlhotcopy needs DBI/DBD support
|
||||||
Requires: perl-DBI, perl-DBD-MySQL
|
Requires: perl-DBI, perl-DBD-MySQL
|
||||||
Conflicts: MySQL-server
|
Conflicts: MySQL-server
|
||||||
@ -189,6 +201,7 @@ the MySQL sources.
|
|||||||
%patch11 -p1
|
%patch11 -p1
|
||||||
%patch12 -p1
|
%patch12 -p1
|
||||||
%patch13 -p1
|
%patch13 -p1
|
||||||
|
%patch14 -p1
|
||||||
|
|
||||||
# workaround for upstream bug #56342
|
# workaround for upstream bug #56342
|
||||||
rm -f mysql-test/t/ssl_8k_key-master.opt
|
rm -f mysql-test/t/ssl_8k_key-master.opt
|
||||||
@ -330,12 +343,18 @@ chmod 755 ${RPM_BUILD_ROOT}%{_bindir}/mysql_config
|
|||||||
mkdir -p $RPM_BUILD_ROOT/var/log
|
mkdir -p $RPM_BUILD_ROOT/var/log
|
||||||
touch $RPM_BUILD_ROOT/var/log/mysqld.log
|
touch $RPM_BUILD_ROOT/var/log/mysqld.log
|
||||||
|
|
||||||
mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
|
|
||||||
mkdir -p $RPM_BUILD_ROOT/var/run/mysqld
|
mkdir -p $RPM_BUILD_ROOT/var/run/mysqld
|
||||||
install -m 0755 -d $RPM_BUILD_ROOT/var/lib/mysql
|
install -m 0755 -d $RPM_BUILD_ROOT/var/lib/mysql
|
||||||
install -m 0755 %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/mysqld
|
|
||||||
|
mkdir -p $RPM_BUILD_ROOT/etc
|
||||||
install -m 0644 %{SOURCE3} $RPM_BUILD_ROOT/etc/my.cnf
|
install -m 0644 %{SOURCE3} $RPM_BUILD_ROOT/etc/my.cnf
|
||||||
|
|
||||||
|
# install systemd unit files and scripts for handling server startup
|
||||||
|
mkdir -p ${RPM_BUILD_ROOT}%{_unitdir}
|
||||||
|
install -m 644 %{SOURCE11} ${RPM_BUILD_ROOT}%{_unitdir}/
|
||||||
|
install -m 755 %{SOURCE12} ${RPM_BUILD_ROOT}%{_libexecdir}/
|
||||||
|
install -m 755 %{SOURCE13} ${RPM_BUILD_ROOT}%{_libexecdir}/
|
||||||
|
|
||||||
mkdir -p $RPM_BUILD_ROOT/etc/tmpfiles.d
|
mkdir -p $RPM_BUILD_ROOT/etc/tmpfiles.d
|
||||||
install -m 0644 %{SOURCE10} $RPM_BUILD_ROOT/etc/tmpfiles.d/mysql.conf
|
install -m 0644 %{SOURCE10} $RPM_BUILD_ROOT/etc/tmpfiles.d/mysql.conf
|
||||||
|
|
||||||
@ -408,15 +427,28 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
|
|
||||||
%post server
|
%post server
|
||||||
if [ $1 = 1 ]; then
|
if [ $1 = 1 ]; then
|
||||||
/sbin/chkconfig --add mysqld
|
# Initial installation
|
||||||
|
/bin/systemctl daemon-reload >/dev/null 2>&1 || :
|
||||||
fi
|
fi
|
||||||
/bin/chmod 0755 /var/lib/mysql
|
/bin/chmod 0755 /var/lib/mysql
|
||||||
/bin/touch /var/log/mysqld.log
|
/bin/touch /var/log/mysqld.log
|
||||||
|
|
||||||
|
# Run this when upgrading from SysV initscript to native systemd unit
|
||||||
|
%triggerun server -- mysql-server < %{first_systemd_version}
|
||||||
|
# Save the current service runlevel info
|
||||||
|
# User must manually run systemd-sysv-convert --apply mysqld
|
||||||
|
# to migrate them to systemd targets
|
||||||
|
/usr/bin/systemd-sysv-convert --save mysqld >/dev/null 2>&1 || :
|
||||||
|
|
||||||
|
# Run these because the SysV package being removed won't do them
|
||||||
|
/sbin/chkconfig --del mysqld >/dev/null 2>&1 || :
|
||||||
|
/bin/systemctl try-restart mysqld.service >/dev/null 2>&1 || :
|
||||||
|
|
||||||
%preun server
|
%preun server
|
||||||
if [ $1 = 0 ]; then
|
if [ $1 = 0 ]; then
|
||||||
/sbin/service mysqld stop >/dev/null 2>&1
|
# Package removal, not upgrade
|
||||||
/sbin/chkconfig --del mysqld
|
/bin/systemctl --no-reload disable mysqld.service >/dev/null 2>&1 || :
|
||||||
|
/bin/systemctl stop mysqld.service >/dev/null 2>&1 || :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
%postun libs
|
%postun libs
|
||||||
@ -425,8 +457,10 @@ if [ $1 = 0 ] ; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
%postun server
|
%postun server
|
||||||
|
/bin/systemctl daemon-reload >/dev/null 2>&1 || :
|
||||||
if [ $1 -ge 1 ]; then
|
if [ $1 -ge 1 ]; then
|
||||||
/sbin/service mysqld condrestart >/dev/null 2>&1 || :
|
# Package upgrade, not uninstall
|
||||||
|
/bin/systemctl try-restart mysqld.service >/dev/null 2>&1 || :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@ -572,7 +606,10 @@ fi
|
|||||||
%{_datadir}/mysql/my-*.cnf
|
%{_datadir}/mysql/my-*.cnf
|
||||||
%{_datadir}/mysql/config.*.ini
|
%{_datadir}/mysql/config.*.ini
|
||||||
|
|
||||||
/etc/rc.d/init.d/mysqld
|
%{_unitdir}/mysqld.service
|
||||||
|
%{_libexecdir}/mysqld-prepare-db-dir
|
||||||
|
%{_libexecdir}/mysqld-wait-ready
|
||||||
|
|
||||||
/etc/tmpfiles.d/mysql.conf
|
/etc/tmpfiles.d/mysql.conf
|
||||||
%attr(0755,mysql,mysql) %dir /var/run/mysqld
|
%attr(0755,mysql,mysql) %dir /var/run/mysqld
|
||||||
%attr(0755,mysql,mysql) %dir /var/lib/mysql
|
%attr(0755,mysql,mysql) %dir /var/lib/mysql
|
||||||
@ -611,6 +648,10 @@ fi
|
|||||||
%{_mandir}/man1/mysql_client_test.1*
|
%{_mandir}/man1/mysql_client_test.1*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Jul 27 2011 Tom Lane <tgl@redhat.com> 5.5.14-3
|
||||||
|
- Convert to systemd startup support (no socket activation, for now anyway)
|
||||||
|
Related: #714426
|
||||||
|
|
||||||
* Tue Jul 12 2011 Tom Lane <tgl@redhat.com> 5.5.14-2
|
* Tue Jul 12 2011 Tom Lane <tgl@redhat.com> 5.5.14-2
|
||||||
- Remove make_scrambled_password and make_scrambled_password_323 from mysql.h,
|
- Remove make_scrambled_password and make_scrambled_password_323 from mysql.h,
|
||||||
since we're not allowing clients to call those functions anyway
|
since we're not allowing clients to call those functions anyway
|
||||||
|
51
mysqld-nowatch.patch
Normal file
51
mysqld-nowatch.patch
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
Add a --nowatch option to mysqld_safe that causes it to exit after
|
||||||
|
spawning mysqld. We don't need mysqld_safe to restart mysqld after
|
||||||
|
a crash, because systemd can do that just fine.
|
||||||
|
|
||||||
|
|
||||||
|
diff -Naur mysql-5.5.14.orig/scripts/mysqld_safe.sh mysql-5.5.14/scripts/mysqld_safe.sh
|
||||||
|
--- mysql-5.5.14.orig/scripts/mysqld_safe.sh 2011-06-21 12:42:40.000000000 -0400
|
||||||
|
+++ mysql-5.5.14/scripts/mysqld_safe.sh 2011-07-25 13:52:40.363068060 -0400
|
||||||
|
@@ -15,6 +15,7 @@
|
||||||
|
KILL_MYSQLD=1;
|
||||||
|
MYSQLD=
|
||||||
|
niceness=0
|
||||||
|
+nowatch=0
|
||||||
|
mysqld_ld_preload=
|
||||||
|
mysqld_ld_library_path=
|
||||||
|
|
||||||
|
@@ -54,6 +55,7 @@
|
||||||
|
--mysqld=FILE Use the specified file as mysqld
|
||||||
|
--mysqld-version=VERSION Use "mysqld-VERSION" as mysqld
|
||||||
|
--nice=NICE Set the scheduling priority of mysqld
|
||||||
|
+ --nowatch Exit after starting mysqld
|
||||||
|
--plugin-dir=DIR Plugins are under DIR or DIR/VERSION, if
|
||||||
|
VERSION is given
|
||||||
|
--skip-kill-mysqld Don't try to kill stray mysqld processes
|
||||||
|
@@ -140,8 +142,16 @@
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
- #echo "Running mysqld: [$cmd]"
|
||||||
|
- eval "$cmd"
|
||||||
|
+ if test $nowatch -eq 1
|
||||||
|
+ then
|
||||||
|
+ # We'd prefer to exec $cmd here, but SELinux needs to be fixed first
|
||||||
|
+ #/usr/bin/logger "Running mysqld: $cmd"
|
||||||
|
+ eval "$cmd &"
|
||||||
|
+ exit 0
|
||||||
|
+ else
|
||||||
|
+ #echo "Running mysqld: [$cmd]"
|
||||||
|
+ eval "$cmd"
|
||||||
|
+ fi
|
||||||
|
}
|
||||||
|
|
||||||
|
shell_quote_string() {
|
||||||
|
@@ -198,6 +208,7 @@
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
--nice=*) niceness="$val" ;;
|
||||||
|
+ --nowatch) nowatch=1 ;;
|
||||||
|
--open-files-limit=*) open_files="$val" ;;
|
||||||
|
--open_files_limit=*) open_files="$val" ;;
|
||||||
|
--skip-kill-mysqld*) KILL_MYSQLD=0 ;;
|
54
mysqld-prepare-db-dir
Normal file
54
mysqld-prepare-db-dir
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This script creates the mysql data directory during first service start.
|
||||||
|
# In subsequent starts, it does nothing much.
|
||||||
|
|
||||||
|
# extract value of a MySQL option from config files
|
||||||
|
# Usage: get_mysql_option SECTION VARNAME DEFAULT
|
||||||
|
# result is returned in $result
|
||||||
|
# We use my_print_defaults which prints all options from multiple files,
|
||||||
|
# with the more specific ones later; hence take the last match.
|
||||||
|
get_mysql_option(){
|
||||||
|
result=`/usr/bin/my_print_defaults "$1" | sed -n "s/^--$2=//p" | tail -n 1`
|
||||||
|
if [ -z "$result" ]; then
|
||||||
|
# not found, use default
|
||||||
|
result="$3"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Defaults here had better match what mysqld_safe will default to
|
||||||
|
get_mysql_option mysqld datadir "/var/lib/mysql"
|
||||||
|
datadir="$result"
|
||||||
|
get_mysql_option mysqld_safe log-error "/var/log/mysqld.log"
|
||||||
|
errlogfile="$result"
|
||||||
|
|
||||||
|
|
||||||
|
# Set up the errlogfile with appropriate permissions
|
||||||
|
touch "$errlogfile"
|
||||||
|
chown mysql:mysql "$errlogfile"
|
||||||
|
chmod 0640 "$errlogfile"
|
||||||
|
[ -x /sbin/restorecon ] && /sbin/restorecon "$errlogfile"
|
||||||
|
|
||||||
|
# Make the data directory
|
||||||
|
if [ ! -d "$datadir/mysql" ] ; then
|
||||||
|
# First, make sure $datadir is there with correct permissions
|
||||||
|
# (note: if it's not, and we're not root, this'll fail ...)
|
||||||
|
if [ ! -e "$datadir" -a ! -h "$datadir" ]
|
||||||
|
then
|
||||||
|
mkdir -p "$datadir" || exit 1
|
||||||
|
fi
|
||||||
|
chown mysql:mysql "$datadir"
|
||||||
|
chmod 0755 "$datadir"
|
||||||
|
[ -x /sbin/restorecon ] && /sbin/restorecon "$datadir"
|
||||||
|
|
||||||
|
# Now create the database
|
||||||
|
echo "Initializing MySQL database"
|
||||||
|
/usr/bin/mysql_install_db --datadir="$datadir" --user=mysql
|
||||||
|
ret=$?
|
||||||
|
chown -R mysql:mysql "$datadir"
|
||||||
|
if [ $ret -ne 0 ] ; then
|
||||||
|
exit $ret
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
56
mysqld-wait-ready
Normal file
56
mysqld-wait-ready
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This script waits for mysqld to be ready to accept connections
|
||||||
|
# (which can be many seconds or even minutes after launch, if there's
|
||||||
|
# a lot of crash-recovery work to do).
|
||||||
|
# Running this as ExecStartPost is useful so that services declared as
|
||||||
|
# "After mysqld" won't be started until the database is really ready.
|
||||||
|
|
||||||
|
# Service file passes us the daemon's PID
|
||||||
|
daemon_pid="$1"
|
||||||
|
|
||||||
|
# extract value of a MySQL option from config files
|
||||||
|
# Usage: get_mysql_option SECTION VARNAME DEFAULT
|
||||||
|
# result is returned in $result
|
||||||
|
# We use my_print_defaults which prints all options from multiple files,
|
||||||
|
# with the more specific ones later; hence take the last match.
|
||||||
|
get_mysql_option(){
|
||||||
|
result=`/usr/bin/my_print_defaults "$1" | sed -n "s/^--$2=//p" | tail -n 1`
|
||||||
|
if [ -z "$result" ]; then
|
||||||
|
# not found, use default
|
||||||
|
result="$3"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Defaults here had better match what mysqld_safe will default to
|
||||||
|
get_mysql_option mysqld datadir "/var/lib/mysql"
|
||||||
|
datadir="$result"
|
||||||
|
get_mysql_option mysqld socket "$datadir/mysql.sock"
|
||||||
|
socketfile="$result"
|
||||||
|
|
||||||
|
# Wait for the server to come up or for the mysqld process to disappear
|
||||||
|
ret=0
|
||||||
|
while /bin/true; do
|
||||||
|
RESPONSE=`/usr/bin/mysqladmin --socket="$socketfile" --user=UNKNOWN_MYSQL_USER ping 2>&1`
|
||||||
|
mret=$?
|
||||||
|
if [ $mret -eq 0 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
# exit codes 1, 11 (EXIT_CANNOT_CONNECT_TO_SERVICE) are expected,
|
||||||
|
# anything else suggests a configuration error
|
||||||
|
if [ $mret -ne 1 -a $mret -ne 11 ]; then
|
||||||
|
ret=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
# "Access denied" also means the server is alive
|
||||||
|
echo "$RESPONSE" | grep -q "Access denied for user" && break
|
||||||
|
|
||||||
|
# Check process still exists
|
||||||
|
if ! /bin/kill -0 $daemon_pid 2>/dev/null; then
|
||||||
|
ret=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
exit $ret
|
24
mysqld.service
Normal file
24
mysqld.service
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=MySQL database server
|
||||||
|
After=syslog.target
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=forking
|
||||||
|
User=mysql
|
||||||
|
Group=mysql
|
||||||
|
|
||||||
|
ExecStartPre=/usr/libexec/mysqld-prepare-db-dir
|
||||||
|
# Note: we set --basedir to prevent probes that might trigger SELinux alarms,
|
||||||
|
# per bug #547485
|
||||||
|
ExecStart=/usr/bin/mysqld_safe --nowatch --basedir=/usr
|
||||||
|
ExecStartPost=/usr/libexec/mysqld-wait-ready $MAINPID
|
||||||
|
|
||||||
|
# Give a reasonable amount of time for the server to start up/shut down
|
||||||
|
TimeoutSec=300
|
||||||
|
|
||||||
|
# We rely on systemd, not mysqld_safe, to restart mysqld if it dies
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
Loading…
Reference in New Issue
Block a user