mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-33750: Sync maintainer scripts etc with latest downstream 10.11.5 in Debian
Fix a large amount of minor fixes to maintainer scripts and other done downstream in the official Debian packaging. Changes include:38198d0b9e
> Limit check of running mysqld/mariadbd to system users (Closes: #1032047) > > If a random user has their own copy of mysqld/mariadbd running, the > dpkg maintainer script should not care about it.8116354d22
> Make error more helpful in case server restart fails (Related: #1033234) > > Bugs such as https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1033234 > and https://bugs.launchpad.net/ubuntu/+source/mariadb-10.6/+bug/2011293 > show that currently dpkg stopping on service stop/start does not have > a very helpful error message.8675e97202
> Complement upstream commits with more complete mysql->mariadb conversion > > The upstream commit952af4a1
missed some places where 'mysql' or > 'MySQL' can and should be converted to use 'mariadb' or 'MariaDB'.c983613300
> Fix indentation in Debian post and pre scripts > > There is several misindentation inside Debian post and pre > installation scripts. False indentation with space as indent space > should be 2 and indentation with tabs. > > Adopt upstream commit7cbb45d1
in Debian by conserving customizations > in: > - debian/mariadb-server.postinst > - debian/mariadb-server.postrm > - debian/mariadb-server.preinstd0bcab443f
> Ensure spaces are used everywhere instead of tabs for indentation0300a9157c
> Complement previous upstream commits to fix Shellcheck issues > > - Unify if/then and while/do on separate lines > - Fix indentation to be consistent > - Use "$()" instead of backticks for subshells > - Exit code cannot be -1, must be 0-255 > - Remove unused variables MYCHECK and MYCHECK_PARAMS > - Rewrite messy command-line database calls to an easier to read form > that does exactly the same > - Use 'command -v' test instead of 'which' > > With this commit, all of debian/* is Shellcheck clean. Also * Update mariadb.conf.d template to tell users where to create logdir if they are not using journald * Remove use of work 'slave' * Add minor workaround for Debian Bug #1022994 if TMPDIR is empty * Make start/stop in maintainer scripts correctly check mariadbd ownership and only start/stop processes owned by root or 'mysql' * Remove obsolete 'NO_UPDATE_BUILD_VERSION=1' as it did not affect the RocksDB build reproducibility as previously assumed * Run 'wrap-and-sort -av'
This commit is contained in:
committed by
Daniel Black
parent
5000d1ba6e
commit
2adaf5c261
106
debian/mariadb-server.mariadb.init
vendored
106
debian/mariadb-server.mariadb.init
vendored
@@ -8,7 +8,7 @@
|
||||
# Should-Stop: $network $named $time
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: Start and stop the mysql database server daemon
|
||||
# Short-Description: Start and stop the MariaDB database server daemon
|
||||
# Description: Controls the main MariaDB database server daemon "mariadbd"
|
||||
# and its wrapper script "mysqld_safe".
|
||||
### END INIT INFO
|
||||
@@ -19,9 +19,10 @@ ${DEBIAN_SCRIPT_DEBUG:+ set -v -x}
|
||||
|
||||
test -x /usr/sbin/mariadbd || exit 0
|
||||
|
||||
# shellcheck source=/dev/null
|
||||
. /lib/lsb/init-functions
|
||||
|
||||
SELF=$(cd "$(dirname $0)"; pwd -P)/$(basename $0)
|
||||
SELF="$(cd "$(dirname "$0")"; pwd -P)/$(basename "$0")"
|
||||
|
||||
if [ -f /usr/bin/mariadb-admin ]
|
||||
then
|
||||
@@ -31,26 +32,30 @@ then
|
||||
MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
|
||||
else
|
||||
log_failure_msg "Command mariadb-admin/mysqladmin not found! This SysV init script depends on it."
|
||||
exit -1
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -x /usr/bin/mariadbd-safe ]
|
||||
then
|
||||
log_failure_msg "/usr/bin/mariadbd-safe not found or executable! This SysV init script depends on it."
|
||||
exit -1
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# priority can be overridden and "-s" adds output to stderr
|
||||
ERR_LOGGER="logger -p daemon.err -t /etc/init.d/mariadb -i"
|
||||
|
||||
if [ -f /etc/default/mysql ]; then
|
||||
if [ -f /etc/default/mysql ]
|
||||
then
|
||||
# shellcheck source=/dev/null
|
||||
. /etc/default/mysql
|
||||
fi
|
||||
|
||||
# Also source default/mariadb in case the installation was upgraded from
|
||||
# packages originally installed from MariaDB.org repositories, which have
|
||||
# had support for reading /etc/default/mariadb since March 2016.
|
||||
if [ -f /etc/default/mariadb ]; then
|
||||
if [ -f /etc/default/mariadb ]
|
||||
then
|
||||
# shellcheck source=/dev/null
|
||||
. /etc/default/mariadb
|
||||
fi
|
||||
|
||||
@@ -77,13 +82,14 @@ mariadbd_get_param() {
|
||||
## Do some sanity checks before even trying to start mariadbd.
|
||||
sanity_checks() {
|
||||
# check for config file
|
||||
if [ ! -r /etc/mysql/my.cnf ]; then
|
||||
if [ ! -r /etc/mysql/my.cnf ]
|
||||
then
|
||||
log_warning_msg "$0: WARNING: /etc/mysql/my.cnf cannot be read. See README.Debian.gz"
|
||||
echo "WARNING: /etc/mysql/my.cnf cannot be read. See README.Debian.gz" | $ERR_LOGGER
|
||||
fi
|
||||
|
||||
# check for diskspace shortage
|
||||
datadir=`mariadbd_get_param datadir`
|
||||
datadir="$(mariadbd_get_param datadir)"
|
||||
|
||||
# If datadir location is not changed int configuration
|
||||
# then it's not printed with /usr/sbin/mariadbd --print-defaults
|
||||
@@ -105,7 +111,8 @@ sanity_checks() {
|
||||
# As preset blocksize of GNU df is 1024 then available bytes is $df_available_blocks * 1024
|
||||
# 4096 blocks is then lower than 4 MB
|
||||
df_available_blocks="$(LC_ALL=C BLOCKSIZE='' df --output=avail "$datadir" | tail -n 1)"
|
||||
if [ "$df_available_blocks" -lt "4096" ]; then
|
||||
if [ "$df_available_blocks" -lt "4096" ]
|
||||
then
|
||||
log_failure_msg "$0: ERROR: The partition with $datadir is too full!"
|
||||
echo "ERROR: The partition with $datadir is too full!" | $ERR_LOGGER
|
||||
exit 1
|
||||
@@ -119,17 +126,30 @@ sanity_checks() {
|
||||
#
|
||||
# Usage: boolean mariadbd_status [check_alive|check_dead] [warn|nowarn]
|
||||
mariadbd_status () {
|
||||
ping_output=`$MYADMIN ping 2>&1`; ping_alive=$(( ! $? ))
|
||||
ping_output="$($MYADMIN ping 2>&1)"
|
||||
# The whole mariadbd_status function should be rewritten in clean shell script,
|
||||
# so ignore minor Shellcheck nag for now as fixing it would be half of the
|
||||
# rewrite
|
||||
# shellcheck disable=SC2181
|
||||
ping_alive="$(( ! $? ))"
|
||||
|
||||
ps_alive=0
|
||||
pidfile=`mariadbd_get_param pid-file`
|
||||
if [ -f "$pidfile" ] && ps `cat $pidfile` >/dev/null 2>&1; then ps_alive=1; fi
|
||||
pidfile="$(mariadbd_get_param pid-file)"
|
||||
if [ -f "$pidfile" ] && ps "$(cat "$pidfile")" >/dev/null 2>&1
|
||||
then
|
||||
ps_alive=1
|
||||
fi
|
||||
|
||||
# Using '-a' is unstandard, but it works and might be needed for the grouping
|
||||
# of the if-else, so keep it and just ignore in Shellcheck
|
||||
# shellcheck disable=SC2166
|
||||
if [ "$1" = "check_alive" -a $ping_alive = 1 ] ||
|
||||
[ "$1" = "check_dead" -a $ping_alive = 0 -a $ps_alive = 0 ]; then
|
||||
[ "$1" = "check_dead" -a $ping_alive = 0 -a $ps_alive = 0 ]
|
||||
then
|
||||
return 0 # EXIT_SUCCESS
|
||||
else
|
||||
if [ "$2" = "warn" ]; then
|
||||
if [ "$2" = "warn" ]
|
||||
then
|
||||
echo -e "$ps_alive processes alive and '$MYADMIN ping' resulted in\n$ping_output\n" | $ERR_LOGGER -p daemon.debug
|
||||
fi
|
||||
return 1 # EXIT_FAILURE
|
||||
@@ -146,7 +166,8 @@ case "${1:-''}" in
|
||||
sanity_checks;
|
||||
# Start daemon
|
||||
log_daemon_msg "Starting MariaDB database server" "mariadbd"
|
||||
if mariadbd_status check_alive nowarn; then
|
||||
if mariadbd_status check_alive nowarn
|
||||
then
|
||||
log_progress_msg "already running"
|
||||
log_end_msg 0
|
||||
else
|
||||
@@ -156,16 +177,22 @@ case "${1:-''}" in
|
||||
# Start MariaDB!
|
||||
/usr/bin/mariadbd-safe "${@:2}" 2>&1 >/dev/null | $ERR_LOGGER &
|
||||
|
||||
for i in $(seq 1 "${MYSQLD_STARTUP_TIMEOUT:-30}"); do
|
||||
for _ in $(seq 1 "${MYSQLD_STARTUP_TIMEOUT:-30}")
|
||||
do
|
||||
sleep 1
|
||||
if mariadbd_status check_alive nowarn ; then break; fi
|
||||
if mariadbd_status check_alive nowarn
|
||||
then
|
||||
break
|
||||
fi
|
||||
log_progress_msg "."
|
||||
done
|
||||
if mariadbd_status check_alive warn; then
|
||||
if mariadbd_status check_alive warn
|
||||
then
|
||||
log_end_msg 0
|
||||
# Now start mysqlcheck or whatever the admin wants.
|
||||
output=$(/etc/mysql/debian-start)
|
||||
if [ -n "$output" ]; then
|
||||
if [ -n "$output" ]
|
||||
then
|
||||
log_action_msg "$output"
|
||||
fi
|
||||
else
|
||||
@@ -181,28 +208,40 @@ case "${1:-''}" in
|
||||
# to specify it explicit as e.g. sudo environments points to the normal
|
||||
# users home and not /root)
|
||||
log_daemon_msg "Stopping MariaDB database server" "mariadbd"
|
||||
if ! mariadbd_status check_dead nowarn; then
|
||||
if ! mariadbd_status check_dead nowarn
|
||||
then
|
||||
set +e
|
||||
shutdown_out=`$MYADMIN shutdown 2>&1`; r=$?
|
||||
shutdown_out="$($MYADMIN shutdown 2>&1)"
|
||||
r=$?
|
||||
set -e
|
||||
if [ "$r" -ne 0 ]; then
|
||||
if [ "$r" -ne 0 ]
|
||||
then
|
||||
log_end_msg 1
|
||||
[ "$VERBOSE" != "no" ] && log_failure_msg "Error: $shutdown_out"
|
||||
log_daemon_msg "Killing MariaDB database server by signal" "mariadbd"
|
||||
killall -15 mariadbd
|
||||
server_down=
|
||||
for i in `seq 1 600`; do
|
||||
for _ in {1..600}
|
||||
do
|
||||
sleep 1
|
||||
if mariadbd_status check_dead nowarn; then server_down=1; break; fi
|
||||
if mariadbd_status check_dead nowarn
|
||||
then
|
||||
server_down=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$server_down"; then killall -9 mariadbd; fi
|
||||
if test -z "$server_down"
|
||||
then
|
||||
killall -9 mariadbd
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! mariadbd_status check_dead warn; then
|
||||
if ! mariadbd_status check_dead warn
|
||||
then
|
||||
log_end_msg 1
|
||||
log_failure_msg "Please stop MariaDB manually and read /usr/share/doc/mariadb-server/README.Debian.gz!"
|
||||
exit -1
|
||||
exit 1
|
||||
else
|
||||
log_end_msg 0
|
||||
fi
|
||||
@@ -221,7 +260,8 @@ case "${1:-''}" in
|
||||
;;
|
||||
|
||||
'status')
|
||||
if mariadbd_status check_alive nowarn; then
|
||||
if mariadbd_status check_alive nowarn
|
||||
then
|
||||
log_action_msg "$($MYADMIN version)"
|
||||
else
|
||||
log_action_msg "MariaDB is stopped."
|
||||
@@ -230,11 +270,11 @@ case "${1:-''}" in
|
||||
;;
|
||||
|
||||
'bootstrap')
|
||||
# Bootstrap the cluster, start the first node
|
||||
# that initiates the cluster
|
||||
log_daemon_msg "Bootstrapping the cluster" "mariadbd"
|
||||
$SELF start "${@:2}" --wsrep-new-cluster
|
||||
;;
|
||||
# Bootstrap the cluster, start the first node
|
||||
# that initiates the cluster
|
||||
log_daemon_msg "Bootstrapping the cluster" "mariadbd"
|
||||
$SELF start "${@:2}" --wsrep-new-cluster
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Usage: $SELF start|stop|restart|reload|force-reload|status"
|
||||
|
Reference in New Issue
Block a user