mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
MDEV-427/MDEV-5713 Add systemd script with notify functionality
After review/QA fixes.
This commit is contained in:
@ -161,6 +161,7 @@ SET(INSTALL_SUPPORTFILESDIR_RPM "share/mysql")
|
||||
SET(INSTALL_MYSQLDATADIR_RPM "/var/lib/mysql")
|
||||
|
||||
SET(INSTALL_UNIX_ADDRDIR_RPM "${INSTALL_MYSQLDATADIR_RPM}/mysql.sock")
|
||||
SET(INSTALL_SYSTEMD_UNITDIR_RPM "/usr/lib/systemd/system")
|
||||
|
||||
#
|
||||
# DEB layout
|
||||
@ -189,6 +190,8 @@ SET(INSTALL_SUPPORTFILESDIR_DEB "share/mysql")
|
||||
SET(INSTALL_MYSQLDATADIR_DEB "/var/lib/mysql")
|
||||
|
||||
SET(INSTALL_UNIX_ADDRDIR_DEB "/var/run/mysqld/mysqld.sock")
|
||||
SET(INSTALL_SYSTEMD_UNITDIR_DEB "/lib/systemd/system")
|
||||
|
||||
#
|
||||
# SVR4 layout
|
||||
#
|
||||
@ -228,7 +231,8 @@ SET(OLD_INSTALL_LAYOUT ${INSTALL_LAYOUT} CACHE INTERNAL "")
|
||||
# will be defined as ${INSTALL_BINDIR_STANDALONE} by default if STANDALONE
|
||||
# layout is chosen)
|
||||
FOREACH(var BIN SBIN LIB MYSQLSHARE SHARE PLUGIN INCLUDE SCRIPT DOC MAN SYSCONF SYSCONF2
|
||||
INFO MYSQLTEST SQLBENCH DOCREADME SUPPORTFILES MYSQLDATA UNIX_ADDR)
|
||||
INFO MYSQLTEST SQLBENCH DOCREADME SUPPORTFILES MYSQLDATA UNIX_ADDR
|
||||
SYSTEMD_UNIT)
|
||||
SET(INSTALL_${var}DIR ${INSTALL_${var}DIR_${INSTALL_LAYOUT}}
|
||||
CACHE STRING "${var} installation directory" ${FORCE})
|
||||
MARK_AS_ADVANCED(INSTALL_${var}DIR)
|
||||
|
@ -22,9 +22,9 @@ MACRO(CHECK_SYSTEMD)
|
||||
IF(WITH_SYSTEMD STREQUAL "yes" OR WITH_SYSTEMD STREQUAL "auto")
|
||||
IF(PKG_CONFIG_FOUND)
|
||||
IF(WITH_SYSTEMD STREQUAL "yes")
|
||||
pkg_check_modules(LIBSYSTEMD REQUIRED libsystemd)
|
||||
pkg_search_module(LIBSYSTEMD REQUIRED libsystemd libsystemd-daemon)
|
||||
ELSE()
|
||||
pkg_check_modules(LIBSYSTEMD libsystemd)
|
||||
pkg_search_module(LIBSYSTEMD libsystemd libsystemd-daemon)
|
||||
ENDIF()
|
||||
IF(HAVE_DLOPEN)
|
||||
SET(LIBSYSTEMD ${LIBSYSTEMD_LIBRARIES})
|
||||
@ -51,17 +51,23 @@ MACRO(CHECK_SYSTEMD)
|
||||
CHECK_FUNCTION_EXISTS(sd_listen_fds HAVE_SYSTEMD_SD_LISTEN_FDS)
|
||||
CHECK_FUNCTION_EXISTS(sd_notify HAVE_SYSTEMD_SD_NOTIFY)
|
||||
CHECK_FUNCTION_EXISTS(sd_notifyf HAVE_SYSTEMD_SD_NOTIFYF)
|
||||
SET(CMAKE_REQUIRED_LIBRARIES)
|
||||
IF(HAVE_SYSTEMD AND HAVE_SYSTEMD_SD_DAEMON_H AND HAVE_SYSTEMD_SD_LISTEN_FDS
|
||||
AND HAVE_SYSTEMD_SD_NOTIFY AND HAVE_SYSTEMD_SD_NOTIFYF)
|
||||
ADD_DEFINITIONS(-DHAVE_SYSTEMD)
|
||||
# should be from pkg-config --variable=systemdsystemconfdir systemd
|
||||
# Missing CMake macro: http://public.kitware.com/Bug/view.php?id=15634
|
||||
SET(SYSTEMD_SYSTEM_CONFDIR /etc/systemd/system)
|
||||
# should be from pkg-config --variable=systemdsystemunitdir systemd
|
||||
SET(SYSTEMD_SYSTEM_UNITDIR /usr/lib/systemd/system/)
|
||||
SET(SYSTEMD_SCRIPTS mariadb-service-convert)
|
||||
SET(SYSTEMD_DEB_FILES "usr/bin/mariadb-service-convert
|
||||
${INSTALL_SYSTEMD_UNITDIR}/mariadb.service
|
||||
${INSTALL_SYSTEMD_UNITDIR}/mariadb@.service
|
||||
${INSTALL_SYSTEMD_UNITDIR}/mariadb@bootstrap.service.d/wsrep-new-cluster.conf")
|
||||
IF(DEB)
|
||||
SET(SYSTEMD_EXECSTARTPRE "PermissionsStartOnly=true\nExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld")
|
||||
SET(SYSTEMD_EXECSTARTPOST "ExecStartPost=/etc/mysql/debian-start")
|
||||
ENDIF()
|
||||
MESSAGE(STATUS "Systemd features enabled")
|
||||
ELSE()
|
||||
UNSET(LIBSYSTEMD)
|
||||
UNSET(HAVE_SYSTEMD)
|
||||
UNSET(HAVE_SYSTEMD_SD_DAEMON_H)
|
||||
UNSET(HAVE_SYSTEMD_SD_LISTEN_FDS)
|
||||
UNSET(HAVE_SYSTEMD_SD_NOTIFY)
|
||||
|
1
debian/control
vendored
1
debian/control
vendored
@ -23,7 +23,6 @@ Build-Depends: bison,
|
||||
zlib1g-dev (>= 1:1.1.3-5~),
|
||||
${MAYBE_LIBCRACK}
|
||||
libjemalloc-dev (>= 3.0.0~) [linux-any]
|
||||
libsystemd-daemon-dev | libsystemd-dev, dh-systemd
|
||||
Standards-Version: 3.8.2
|
||||
Homepage: http://mariadb.org/
|
||||
Vcs-Git: https://github.com/MariaDB/server.git
|
||||
|
2
debian/mariadb-server-10.1.files.in
vendored
2
debian/mariadb-server-10.1.files.in
vendored
@ -55,7 +55,6 @@ usr/bin/wsrep_sst_mysqldump
|
||||
usr/bin/wsrep_sst_rsync
|
||||
usr/bin/wsrep_sst_xtrabackup
|
||||
usr/bin/wsrep_sst_xtrabackup-v2
|
||||
usr/bin/mariadb-system-convert
|
||||
usr/share/doc/mariadb-server-10.1/mysqld.sym.gz
|
||||
usr/share/doc/mariadb-server-10.1/INFO_SRC
|
||||
usr/share/doc/mariadb-server-10.1/INFO_BIN
|
||||
@ -94,3 +93,4 @@ usr/share/mysql/wsrep_notify
|
||||
@CASSANDRA_DEB_FILES@
|
||||
@SPIDER_DEB_FILES@
|
||||
@TOKUDB_DEB_FILES@
|
||||
@SYSTEMD_DEB_FILES@
|
||||
|
6
debian/mariadb-server-10.1.postinst
vendored
6
debian/mariadb-server-10.1.postinst
vendored
@ -286,6 +286,12 @@ fi
|
||||
|
||||
db_stop # in case invoke failes
|
||||
|
||||
# dh_systemd_start doesn't emit anything since we still ship /etc/init.d/mysql.
|
||||
# Thus MariaDB server is started via init.d script, which in turn redirects to
|
||||
# systemctl. If we upgrade from MySQL mysql.service may be masked, which also
|
||||
# means init.d script is disabled. Unmask mysql service explicitely.
|
||||
deb-systemd-helper unmask mysql.service >/dev/null || true
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
exit 0
|
||||
|
12
debian/rules
vendored
12
debian/rules
vendored
@ -180,12 +180,6 @@ install: build
|
||||
install -m 0644 $(builddir)/Docs/INFO_SRC $(TMP)/usr/share/doc/mariadb-server-10.1/INFO_SRC
|
||||
install -m 0644 $(builddir)/Docs/INFO_BIN $(TMP)/usr/share/doc/mariadb-server-10.1/INFO_BIN
|
||||
|
||||
# systemd helpers
|
||||
install -m 0755 scripts/mariadb-service-convert $(TMP)/usr/bin/
|
||||
install -d $(TMP)/etc/systemd/system/mariadb@bootstrap.service.d/
|
||||
install -m 0644 $(BUILDDIR)/support-files/mariadb-bootstrap.conf \
|
||||
$(TMP)/etc/systemd/system/mariadb@bootstrap.service.d/wsrep-new-cluster.conf
|
||||
|
||||
# mariadb-test
|
||||
mv $(TMP)/usr/mysql-test $(TMP)/usr/share/mysql
|
||||
|
||||
@ -221,10 +215,7 @@ binary-indep: build install
|
||||
dh_installexamples -i
|
||||
dh_installmenu -i
|
||||
dh_installlogrotate -i
|
||||
dh_systemd_enable -i support-files/mariadb.service
|
||||
dh_systemd_enable --no-enable support-files/mariadb@.service
|
||||
dh_installinit -i
|
||||
dh_systemd_start -i --restart-after-upgrade mariadb.service
|
||||
dh_installcron -i
|
||||
dh_installman -i
|
||||
dh_installinfo -i
|
||||
@ -250,9 +241,12 @@ binary-arch: build install
|
||||
dh_installexamples -a
|
||||
dh_installmenu -a
|
||||
dh_installlogrotate -a --name mysql-server
|
||||
if [ -x /usr/bin/dh_systemd_enable -a -f debian/mariadb-server-10.1/lib/systemd/system/mariadb.service ]; then dh_systemd_enable -pmariadb-server-10.1 mariadb.service; fi
|
||||
if [ -x /usr/bin/dh_systemd_enable -a -f debian/mariadb-server-10.1/lib/systemd/system/mariadb@.service ]; then dh_systemd_enable --no-enable -pmariadb-server-10.1 mariadb@.service; fi
|
||||
# Start mysql in runlevel 19 before 20 where apache, proftpd etc gets
|
||||
# started which might depend on a running database server.
|
||||
dh_installinit -a --name=mysql -- defaults 19 21
|
||||
if [ -x /usr/bin/dh_systemd_start -a -f debian/mariadb-server-10.1/lib/systemd/system/mariadb.service ]; then dh_systemd_start -pmariadb-server-10.1 --restart-after-upgrade mariadb.service; fi
|
||||
dh_installcron -a --name mysql-server
|
||||
dh_installman -a
|
||||
dh_installinfo -a
|
||||
|
@ -1,17 +1,34 @@
|
||||
/*
|
||||
Copyright (c) 2015 Daniel Black. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; version 2 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
|
||||
#ifndef MY_SYSTEMD_INCLUDED
|
||||
#define MY_SYSTEMD_INCLUDED
|
||||
|
||||
#if defined(HAVE_SYSTEMD) && !defined(EMBEDDED_LIBRARY)
|
||||
/*
|
||||
sd-daemon.h may include inttypes.h. Explicitly request format macros before
|
||||
the first inclusion of inttypes.h.
|
||||
*/
|
||||
#define __STDC_FORMAT_MACROS
|
||||
#include <systemd/sd-daemon.h>
|
||||
|
||||
#else
|
||||
|
||||
|
||||
|
||||
#define sd_notify(X, Y)
|
||||
#define sd_notifyf(E, F, ...)
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* MY_SYSTEMD_INCLUDED */
|
||||
|
@ -300,7 +300,7 @@ ELSE()
|
||||
mysqld_multi
|
||||
mysqld_safe
|
||||
${WSREP_BINARIES}
|
||||
mariadb-service-convert
|
||||
${SYSTEMD_SCRIPTS}
|
||||
)
|
||||
FOREACH(file ${BIN_SCRIPTS})
|
||||
IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${file}.sh)
|
||||
|
@ -25,14 +25,7 @@
|
||||
|
||||
tz_old=$TZ
|
||||
|
||||
get_params()
|
||||
{
|
||||
# does a return so needs to be wrapped in a function
|
||||
# . /usr/bin/mysqld_safe --simulate
|
||||
. scripts/mysqld_safe --simulate
|
||||
}
|
||||
|
||||
get_params
|
||||
. /usr/bin/mysqld_safe --dry-run
|
||||
|
||||
echo "# converted using $0"
|
||||
echo "#"
|
||||
@ -66,10 +59,11 @@ if [ -n "$mysqld_ld_library_path" ]; then
|
||||
fi
|
||||
|
||||
if [[ $want_syslog -eq 1 ]]; then
|
||||
echo StandardOutput=syslog
|
||||
echo StandardError=syslog
|
||||
echo SyslogFacility=daemon
|
||||
echo SyslogLevel=error
|
||||
echo SyslogLevelPrefix=${syslog_tag_mysqld}
|
||||
echo SyslogLevel=err
|
||||
echo SyslogIdentifier=${syslog_tag_mysqld}
|
||||
fi
|
||||
|
||||
if [[ "${flush_caches}" -gt 0 ]]; then
|
||||
@ -83,4 +77,6 @@ if [[ "${numa_interleave}" -gt 0 ]]; then
|
||||
echo
|
||||
fi
|
||||
|
||||
[ -n "${CRASH_SCRIPT}" ] && echo FailureAction=${CRASH_SCRIPT}
|
||||
if [ -n "${CRASH_SCRIPT}" ]; then
|
||||
echo FailureAction=${CRASH_SCRIPT}
|
||||
fi
|
||||
|
@ -21,7 +21,7 @@ mysqld_ld_library_path=
|
||||
flush_caches=0
|
||||
numa_interleave=0
|
||||
wsrep_on=0
|
||||
simulate=0
|
||||
dry_run=0
|
||||
|
||||
# Initial logging status: error log is not open, and not using syslog
|
||||
logging=init
|
||||
@ -82,7 +82,7 @@ Usage: $0 [OPTIONS]
|
||||
--malloc-lib=LIB Preload shared library LIB if available
|
||||
--mysqld=FILE Use the specified file as mysqld
|
||||
--mysqld-version=VERSION Use "mysqld-VERSION" as mysqld
|
||||
--simulate Simulate the start to detect errors but don't start
|
||||
--dry-run Simulate the start to detect errors but don't start
|
||||
--nice=NICE Set the scheduling priority of mysqld
|
||||
--no-auto-restart Exit after starting mysqld
|
||||
--nowatch Exit after starting mysqld
|
||||
@ -133,7 +133,7 @@ my_which ()
|
||||
}
|
||||
|
||||
log_generic () {
|
||||
[ $simulate -eq 1 ] && return
|
||||
[ $dry_run -eq 1 ] && return
|
||||
priority="$1"
|
||||
shift
|
||||
|
||||
@ -321,7 +321,7 @@ parse_arguments() {
|
||||
MYSQLD="mysqld"
|
||||
fi
|
||||
;;
|
||||
--simulate) simulate=1 ;;
|
||||
--dry[-_]run) dry_run=1 ;;
|
||||
--nice=*) niceness="$val" ;;
|
||||
--nowatch|--no[-_]watch|--no[-_]auto[-_]restart) nowatch=1 ;;
|
||||
--open[-_]files[-_]limit=*) open_files="$val" ;;
|
||||
@ -866,7 +866,7 @@ fi
|
||||
#
|
||||
# If there exists an old pid file, check if the daemon is already running
|
||||
# Note: The switches to 'ps' may depend on your operating system
|
||||
if test -f "$pid_file" && [ $simulate -eq 0 ]
|
||||
if test -f "$pid_file" && [ $dry_run -eq 0 ]
|
||||
then
|
||||
PID=`cat "$pid_file"`
|
||||
if @CHECK_PID@
|
||||
@ -941,9 +941,8 @@ fi
|
||||
# ulimit -n 256 > /dev/null 2>&1 # Fix for BSD and FreeBSD systems
|
||||
#fi
|
||||
|
||||
|
||||
cmd="`mysqld_ld_preload_text`$NOHUP_NICENESS"
|
||||
[ $simulate -eq 0 ] && cmd=''
|
||||
[ $dry_run -eq 1 ] && cmd=''
|
||||
|
||||
#
|
||||
# Set mysqld's memory interleave policy.
|
||||
@ -963,7 +962,7 @@ then
|
||||
fi
|
||||
|
||||
# Launch mysqld with numactl.
|
||||
[ $simulate -eq 0 ] && cmd="$cmd numactl --interleave=all"
|
||||
[ $dry_run -eq 0 ] && cmd="$cmd numactl --interleave=all"
|
||||
elif test $numa_interleave -eq 1
|
||||
then
|
||||
log_error "--numa-interleave is not supported on this platform"
|
||||
@ -976,8 +975,8 @@ do
|
||||
cmd="$cmd "`shell_quote_string "$i"`
|
||||
done
|
||||
cmd="$cmd $args"
|
||||
[ $dry_run -eq 1 ] && return
|
||||
# Avoid 'nohup: ignoring input' warning
|
||||
[ $simulate -eq 0 ] && cmd='true'
|
||||
test -n "$NOHUP_NICENESS" && cmd="$cmd < /dev/null"
|
||||
|
||||
log_notice "Starting $MYSQLD daemon with databases from $DATADIR"
|
||||
|
@ -1893,8 +1893,6 @@ static void __cdecl kill_server(int sig_ptr)
|
||||
else
|
||||
sql_print_error(ER_DEFAULT(ER_GOT_SIGNAL),my_progname,sig); /* purecov: inspected */
|
||||
|
||||
sd_notify(0, "STOPPING=1");
|
||||
|
||||
#ifdef HAVE_SMEM
|
||||
/*
|
||||
Send event to smem_event_connect_request for aborting
|
||||
@ -2001,6 +1999,7 @@ void unireg_end(void)
|
||||
{
|
||||
clean_up(1);
|
||||
my_thread_end();
|
||||
sd_notify(0, "STATUS=MariaDB server is down");
|
||||
#if defined(SIGNALS_DONT_BREAK_READ)
|
||||
exit(0);
|
||||
#else
|
||||
@ -2066,6 +2065,7 @@ static void mysqld_exit(int exit_code)
|
||||
shutdown_performance_schema(); // we do it as late as possible
|
||||
#endif
|
||||
DBUG_LEAVE;
|
||||
sd_notify(0, "STATUS=MariaDB server is down");
|
||||
exit(exit_code); /* purecov: inspected */
|
||||
}
|
||||
|
||||
@ -6547,10 +6547,8 @@ void handle_connections_sockets()
|
||||
socket_flags=fcntl(mysql_socket_getfd(unix_sock), F_GETFL, 0);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SYSTEMD
|
||||
sd_notify(0, "READY=1\n"
|
||||
"STATUS=Taking your SQL requests now...");
|
||||
#endif
|
||||
|
||||
DBUG_PRINT("general",("Waiting for connections."));
|
||||
MAYBE_BROKEN_SYSCALL;
|
||||
@ -6766,7 +6764,8 @@ void handle_connections_sockets()
|
||||
create_new_thread(thd);
|
||||
set_current_thd(0);
|
||||
}
|
||||
sd_notify(0, "STOPPING=1");
|
||||
sd_notify(0, "STOPPING=1\n"
|
||||
"STATUS=Shutdown in progress");
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
@ -1874,15 +1874,16 @@ loop:
|
||||
}
|
||||
}
|
||||
|
||||
progress=(ulong) (i * 100) / hash_get_n_cells(recv_sys->addr_hash);
|
||||
progress = (ulong) (i * 100)
|
||||
/ hash_get_n_cells(recv_sys->addr_hash);
|
||||
if (has_printed
|
||||
&& progress != ((i + 1) * 100)
|
||||
&& progress
|
||||
!= ((i + 1) * 100)
|
||||
/ hash_get_n_cells(recv_sys->addr_hash)) {
|
||||
|
||||
fprintf(stderr, "%lu ", progress);
|
||||
sd_notifyf(0, "STATUS=Applying batch of log records for Innodb: "
|
||||
"Progress %lu", progress);
|
||||
|
||||
sd_notifyf(0, "STATUS=Applying batch of log records for"
|
||||
" InnoDB: Progress %lu", progress);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2094,8 +2095,9 @@ skip_this_recv_addr:
|
||||
fprintf(stderr, "%lu ",
|
||||
(ulong) ((100 * i) / n_hash_cells));
|
||||
fflush(stderr);
|
||||
sd_notifyf(0, "STATUS=Applying batch of log records for backup Innodb: "
|
||||
"Progress %lu", (ulong) (100 * i) / n_hash_cells);
|
||||
sd_notifyf(0, "STATUS=Applying batch of log records for"
|
||||
" backup InnoDB: Progress %lu",
|
||||
(ulong) (100 * i) / n_hash_cells);
|
||||
}
|
||||
}
|
||||
sd_notify(0, "STATUS=InnoDB: Apply batch for backup completed");
|
||||
|
@ -1942,15 +1942,16 @@ loop:
|
||||
}
|
||||
}
|
||||
|
||||
progress=(ulong) (i * 100) / hash_get_n_cells(recv_sys->addr_hash);
|
||||
progress = (ulong) (i * 100)
|
||||
/ hash_get_n_cells(recv_sys->addr_hash);
|
||||
if (has_printed
|
||||
&& progress != ((i + 1) * 100)
|
||||
&& progress
|
||||
!= ((i + 1) * 100)
|
||||
/ hash_get_n_cells(recv_sys->addr_hash)) {
|
||||
|
||||
fprintf(stderr, "%lu ", progress);
|
||||
sd_notifyf(0, "STATUS=Applying batch of log records for Innodb: "
|
||||
"Progress %lu", progress);
|
||||
|
||||
sd_notifyf(0, "STATUS=Applying batch of log records for"
|
||||
" InnoDB: Progress %lu", progress);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2164,8 +2165,9 @@ skip_this_recv_addr:
|
||||
fprintf(stderr, "%lu ",
|
||||
(ulong) ((100 * i) / n_hash_cells));
|
||||
fflush(stderr);
|
||||
sd_notifyf(0, "STATUS=Applying batch of log records for backup Innodb: "
|
||||
"Progress %lu", (ulong) (100 * i) / n_hash_cells);
|
||||
sd_notifyf(0, "STATUS=Applying batch of log records for"
|
||||
" backup InnoDB: Progress %lu",
|
||||
(ulong) (100 * i) / n_hash_cells);
|
||||
}
|
||||
}
|
||||
sd_notify(0, "STATUS=InnoDB: Apply batch for backup completed");
|
||||
|
@ -76,23 +76,35 @@ IF(UNIX)
|
||||
INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/mysql.server
|
||||
DESTINATION ${inst_location} COMPONENT SupportFiles)
|
||||
|
||||
IF(SYSTEMD_SYSTEM_UNITDIR)
|
||||
CONFIGURE_FILE(mariadb@.service.in ${CMAKE_CURRENT_BINARY_DIR}/mariadb@.service @ONLY)
|
||||
IF(HAVE_SYSTEMD)
|
||||
CONFIGURE_FILE(mariadb.service.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mariadb.service @ONLY)
|
||||
IF(NOT RPM)
|
||||
CONFIGURE_FILE(mariadb@.service.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mariadb@.service @ONLY)
|
||||
INSTALL(FILES wsrep-new-cluster.conf
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mariadb.service
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mariadb@.service
|
||||
DESTINATION ${inst_location}/systemd COMPONENT SupportFiles)
|
||||
ENDIF()
|
||||
IF(INSTALL_SYSTEMD_UNITDIR)
|
||||
# @ in directory name broken between CMake version 2.8.12.2 and 3.3
|
||||
# http://public.kitware.com/Bug/view.php?id=14782
|
||||
INSTALL(FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mariadb-bootstrap.conf
|
||||
DESTINATION "${SYSTEMD_SYSTEM_UNITDIR}/mariadb@bootstrap.service.d" COMPONENT Server
|
||||
)
|
||||
INSTALL(FILES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mariadb@.service
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mariadb.service
|
||||
DESTINATION ${SYSTEMD_SYSTEM_UNITDIR} COMPONENT Server
|
||||
)
|
||||
IF(NOT RPM)
|
||||
INSTALL(FILES wsrep-new-cluster.conf
|
||||
DESTINATION
|
||||
"${INSTALL_SYSTEMD_UNITDIR}/mariadb@bootstrap.service.d"
|
||||
COMPONENT Server)
|
||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mariadb@.service
|
||||
DESTINATION ${INSTALL_SYSTEMD_UNITDIR} COMPONENT Server)
|
||||
ENDIF()
|
||||
|
||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mariadb.service
|
||||
DESTINATION ${INSTALL_SYSTEMD_UNITDIR} COMPONENT Server)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF (INSTALL_SYSCONFDIR)
|
||||
|
||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mysql-log-rotate DESTINATION ${INSTALL_SYSCONFDIR}/logrotate.d
|
||||
RENAME mysql COMPONENT SupportFiles)
|
||||
INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/mysql.server
|
||||
|
@ -32,6 +32,7 @@ Alias=mysqld.service
|
||||
Type=notify
|
||||
|
||||
# Setting this to true can break replication and the Type=notify settings
|
||||
# See also bind-address mysqld option.
|
||||
PrivateNetwork=false
|
||||
|
||||
##############################################################################
|
||||
@ -39,6 +40,7 @@ PrivateNetwork=false
|
||||
##
|
||||
|
||||
User=mysql
|
||||
Group=mysql
|
||||
|
||||
# Execute pre and post scripts as root, otherwise it does it as User=
|
||||
# PermissionsStartOnly=true
|
||||
@ -47,10 +49,12 @@ User=mysql
|
||||
# ExecStartPre=/usr/bin/mysql_install_db
|
||||
|
||||
# Start main service
|
||||
# EXTRA_ARGS here is for users to set in /etc/systemd/system/mariadb.service.d/MY_SPECIAL.conf
|
||||
# Use the [service] section and Environment="EXTRA_ARGS=...".
|
||||
# MYSQLD_OPTS here is for users to set in /etc/systemd/system/mariadb.service.d/MY_SPECIAL.conf
|
||||
# Use the [service] section and Environment="MYSQLD_OPTS=...".
|
||||
# This isn't a replacement for my.cnf.
|
||||
ExecStart=/usr/sbin/mysqld $EXTRA_ARGS
|
||||
@SYSTEMD_EXECSTARTPRE@
|
||||
ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS
|
||||
@SYSTEMD_EXECSTARTPOST@
|
||||
|
||||
KillMode=process
|
||||
KillSignal=SIGTERM
|
||||
@ -58,14 +62,12 @@ KillSignal=SIGTERM
|
||||
# Don't want to see an automated SIGKILL ever
|
||||
SendSIGKILL=no
|
||||
|
||||
# Exit status 1 is a fatal config error. Restarting won't help.
|
||||
RestartPreventExitStatus=1
|
||||
Restart=on-failure
|
||||
# Restart crashed server only, on-failure would also restart, for example, when
|
||||
# my.cnf contains unknown option
|
||||
Restart=on-abort
|
||||
RestartSec=5s
|
||||
|
||||
PrivateDevices=true
|
||||
|
||||
UMask=077
|
||||
UMask=007
|
||||
|
||||
##############################################################################
|
||||
## USERs can override
|
||||
@ -78,10 +80,10 @@ UMask=077
|
||||
|
||||
# Kernels like killing mysqld when out of memory because its big.
|
||||
# Lets temper that preference a little.
|
||||
OOMScoreAdjust=-600
|
||||
# OOMScoreAdjust=-600
|
||||
|
||||
# Explicitly start with high IO priority
|
||||
BlockIOWeight=1000
|
||||
# BlockIOWeight=1000
|
||||
|
||||
# If you don't use the /tmp directory for SELECT ... OUTFILE and
|
||||
# LOAD DATA INFILE you can enable PrivateTmp=true for a little more security.
|
||||
@ -94,7 +96,7 @@ PrivateTmp=false
|
||||
##
|
||||
|
||||
# Number of files limit. previously [mysqld_safe] open-file-limit
|
||||
LimitNOFILE=16364
|
||||
# LimitNOFILE=16364
|
||||
|
||||
# Maximium core size. previously [mysqld_safe] core-file-size
|
||||
# LimitCore=
|
@ -39,6 +39,7 @@ Alias=mysqld.service
|
||||
Type=notify
|
||||
|
||||
# Setting this to true can break replication and the Type=notify settings
|
||||
# See also bind-address mysqld option.
|
||||
PrivateNetwork=false
|
||||
|
||||
##############################################################################
|
||||
@ -46,6 +47,7 @@ PrivateNetwork=false
|
||||
##
|
||||
|
||||
User=mysql
|
||||
Group=mysql
|
||||
|
||||
# Execute pre and post scripts as root, otherwise it does it as User=
|
||||
# PermissionsStartOnly=true
|
||||
@ -54,16 +56,16 @@ User=mysql
|
||||
# ExecStartPre=/usr/bin/mysql_install_db
|
||||
|
||||
# Start main service
|
||||
# EXTRA_ARGS here is for users to set in /etc/systemd/system/mariadb@.service.d/MY_SPECIAL.conf
|
||||
# Use the [service] section and Environment="EXTRA_ARGS=...".
|
||||
# MYSQLD_OPTS here is for users to set in /etc/systemd/system/mariadb@.service.d/MY_SPECIAL.conf
|
||||
# Use the [service] section and Environment="MYSQLD_OPTS=...".
|
||||
# This isn't a replacement for my.cnf.
|
||||
|
||||
ExecStart=
|
||||
ExecStart=/usr/sbin/mysqld $EXTRA_ARGS --defaults-file=@INSTALL_SYSCONF2DIR@/my%I.cnf
|
||||
ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS --defaults-file=@INSTALL_SYSCONF2DIR@/my%I.cnf
|
||||
# Alternate: (remove ConditionPathExists above)
|
||||
# use [mysqld.INSTANCENAME] as sections in my.cnf
|
||||
#
|
||||
# ExecStart=/usr/sbin/mysqld $EXTRA_ARGS --defaults-group-suffix=%I
|
||||
# ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS --defaults-group-suffix=%I
|
||||
|
||||
KillMode=process
|
||||
KillSignal=SIGTERM
|
||||
@ -71,14 +73,12 @@ KillSignal=SIGTERM
|
||||
# Don't want to see an automated SIGKILL ever
|
||||
SendSIGKILL=no
|
||||
|
||||
# Exit status 1 is a fatal config error. Restarting won't help.
|
||||
RestartPreventExitStatus=1
|
||||
Restart=on-failure
|
||||
# Restart crashed server only, on-failure would also restart, for example, when
|
||||
# my.cnf contains unknown option
|
||||
Restart=on-abort
|
||||
RestartSec=5s
|
||||
|
||||
PrivateDevices=true
|
||||
|
||||
UMask=077
|
||||
UMask=007
|
||||
|
||||
##############################################################################
|
||||
## USERs can override
|
||||
@ -91,10 +91,10 @@ UMask=077
|
||||
|
||||
# Kernels like killing mysqld when out of memory because its big.
|
||||
# Lets temper that preference a little.
|
||||
OOMScoreAdjust=-600
|
||||
# OOMScoreAdjust=-600
|
||||
|
||||
# Explicitly start with high IO priority
|
||||
BlockIOWeight=1000
|
||||
# BlockIOWeight=1000
|
||||
|
||||
# If you don't use the /tmp directory for SELECT ... OUTFILE and
|
||||
# LOAD DATA INFILE you can enable PrivateTmp=true for a little more security.
|
||||
@ -107,7 +107,7 @@ PrivateTmp=false
|
||||
##
|
||||
|
||||
# Number of files limit. previously [mysqld_safe] open-file-limit
|
||||
LimitNOFILE=16364
|
||||
# LimitNOFILE=16364
|
||||
|
||||
# Maximium core size. previously [mysqld_safe] core-file-size
|
||||
# LimitCore=
|
||||
|
@ -97,6 +97,11 @@ lsb_functions="/lib/lsb/init-functions"
|
||||
if test -f $lsb_functions ; then
|
||||
. $lsb_functions
|
||||
else
|
||||
# Include non-LSB RedHat init functions to make systemctl redirect work
|
||||
init_functions="/etc/init.d/functions"
|
||||
if test -f $init_functions; then
|
||||
. $init_functions
|
||||
fi
|
||||
log_success_msg()
|
||||
{
|
||||
echo " SUCCESS! $@"
|
||||
|
@ -1,12 +1,20 @@
|
||||
if [ -f /usr/lib/systemd/system/mariadb.service -a -x /usr/bin/systemctl ]; then
|
||||
systemd_conf=/etc/systemd/system/mariadb.service.d/migrated-from-my.cnf-settings.conf
|
||||
if [ -x %{_bindir}/mariadb-service-convert -a ! -f "${systemd_conf}" ]; then
|
||||
# Either fresh install or upgrade non-systemd -> systemd
|
||||
mkdir -p /etc/systemd/system/mariadb.service.d
|
||||
%{_bindir}/mariadb-service-convert > "${systemd_conf}"
|
||||
# Make sure old possibly non-systemd instance is down
|
||||
if [ $1 = 2 ]; then
|
||||
SYSTEMCTL_SKIP_REDIRECT=1 %{_sysconfdir}/init.d/mysql stop >/dev/null 2>&1 || :
|
||||
systemctl start mariadb >/dev/null 2>&1 || :
|
||||
fi
|
||||
systemctl enable mariadb.service >/dev/null 2>&1 || :
|
||||
fi
|
||||
fi
|
||||
|
||||
# Make MySQL start/shutdown automatically when the machine does it.
|
||||
if [ $1 = 1 ] ; then
|
||||
systemd_conf=/etc/systemd/system/mariadb.service.d/migrated-from-my.cnf-settings.conf
|
||||
if [ -x /usr/bin/mariadb-service-convert -a ! -f "${systemd_conf}" ]; then
|
||||
mkdir -p /etc/systemd/system/mariadb.service.d
|
||||
/usr/bin/mariadb-service-convert > "${systemd_conf}"
|
||||
fi
|
||||
|
||||
if [ -x /usr/bin/systemctl ] ; then
|
||||
/usr/bin/systemctl daemon-reload >/dev/null 2>&1
|
||||
fi
|
||||
|
@ -12,5 +12,5 @@ ConditionPathExists=
|
||||
|
||||
# Override the multi instance service for a bootstrap start instance
|
||||
ExecStart=
|
||||
ExecStart=/usr/sbin/mysqld $EXTRA_ARGS --wsrep-new-cluster
|
||||
ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS --wsrep-new-cluster
|
||||
|
Reference in New Issue
Block a user