MySQL在8.0版本中引入restart命令,实现远程重启mysqld进程的功能。好处不言而喻,可以在不登陆操作系统的情况下,执行重启操作,对于运管上来说也是一个很棒的功能。
执行restart命令需要数据库账号具备SHUTDOWN权限,并且mysqld是在systemd/mysqld_safe守护进程下启动的。
原理是mysqld_safe检测mysqld退出时的返回值,如果是16,则进行重启。bash shell如下:
#!/bin/bash
export MYSQLD_PARENT_PID=$$
export MYSQLD_RESTART_EXIT=16
while true ; do
bin/mysqld mysqld options here
if [ $? -ne $MYSQLD_RESTART_EXIT ]; then
break
fi
done