Я пытаюсь развернуть pt-stalk с помощью сценария инициализации, но мне трудно ввести учетные данные mysql в сценарий, не помещая их в MYSQL_OPTS
раздел для запуска pt-stalk. [Документация]
Обычно на серверах у нас есть /root/.my.cnf, содержащий учетные данные администратора для этой машины, но независимо от того, установил ли я HOME
var в скрипте явно для /root
в сценарии инициализации pt-stalk не запускается, потому что утилита mysql CLI не может найти учетные данные.
Я просмотрел страницу руководства, но не могу найти ничего, что позволило бы мне указать файл учетных данных для использования, а не помещать все в качестве аргументов командной строки.
Рассматриваемый сценарий инициализации:
#!/usr/bin/env bash
# chkconfig: 2345 20 80
# description: pt-stalk
### BEGIN INIT INFO
# Provides: pt-stalk
# Required-Start: $network $named $remote_fs $syslog
# Required-Stop: $network $named $remote_fs $syslog
# Should-Start: pt-stalk
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
export HOME=/root
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON="/usr/bin/pt-stalk"
DAEMON_OPTS="--config /etc/pt-stalk.conf"
NAME="pt-stalk"
DESC="pt-stalk"
PIDFILE="/var/run/${NAME}.pid"
STALKHOME="/var/lib/pt-stalk"
test -x $DAEMON || exit 1
[ -r /etc/default/pt-stalk ] && . /etc/default/pt-stalk
#. /lib/lsb/init-functions
sig () {
test -s "$PIDFILE" && kill -$1 `cat $PIDFILE`
}
start() {
if [[ -z $MYSQL_OPTS ]]; then
HOME=$STALKHOME $DAEMON $DAEMON_OPTS
else
HOME=$STALKHOME $DAEMON $DAEMON_OPTS -- $MYSQL_OPTS
fi
return $?
}
stop() {
if sig TERM; then
while sig 0 ; do
echo -n "."
sleep 1
done
return 0
else
echo "$DESC is not running."
return 1
fi
}
status() {
if sig 0 ; then
echo "$DESC (`cat $PIDFILE`) is running."
return 0
else
echo "$DESC is stopped."
return 1
fi
}
log_begin_msg() {
echo $1
}
log_end_msg() {
if [ $1 -eq 0 ]; then
echo "Success"
else
echo "Failure"
fi
}
case "$1" in
start)
log_begin_msg "Starting $DESC"
start
log_end_msg $?
;;
stop)
log_begin_msg "Stopping $DESC"
stop
log_end_msg $?
;;
status)
status ;;
restart)
log_begin_msg "Restarting $DESC"
stop
sleep 1
start
log_end_msg $?
;;
*)
echo "Usage: $0 {start|stop|status|}" >&2
exit 1
;;
esac
Первоначально из GitHub с парой мелких изменений.
В пример на этой странице кажется, предлагает пройти --defaults-file=./my.default.cnf
как вариант на pt-stalk.
Так что обновите свой $MYSQL_OPTS
переменная, чтобы иметь это как значение, вероятно, давая вам абсолютный путь к файлу конфигурации mysql (.my.cnf), хранящемуся где-то, который команда pt-stalk может прочитать.