我有ps
mysql 1562 0.0 0.0 113316 3064 ? Ss Sep01 0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mysql 1895 1.8 1.0 3011308 251660 ? Sl Sep01 2828:21 \_ /usr/libexec/mysqld --basedir=/usr --datadir=/main_db/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/main_db/mysql/mysql.sock
在后台运行。
如何以同样的方式重新启动它?
我停了下来
mysqladmin -u root -p shutdown
然后执行以下操作并挂起:
sudo /usr/bin/mysqld_safe --basedir=/usr
201215 04:13:30 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
201215 04:13:30 mysqld_safe Starting mysqld daemon with databases from /main_db/mysql
现在如何停止并重新启动?
这也不起作用:
sudo runuser -l mysql -c 'mysqld_safe --basedir=/usr'
runuser: warning: cannot change directory to /var/lib/mysql: No such file or directory
This account is currently not available.
答案1
kill
如果您知道进程的 ID,则始终可以使用 来终止进程,或者使用pkill
与命令匹配的 来终止该进程(并且可能更危险,因为它可能匹配错误的进程或多个进程)。我会选择:
# pgrep -lf mysql
(如果运行后者,请更改mysql
为mariadb
)然后检查输出以获取PID
(正确进程行上的第一个字段),然后使用kill
# kill -TERM <PID>
你可以检查MySQL 的手册了解其他信号以及它们如何影响 MySQL 服务器。
另一方面,我不确定“冷血”地杀死数据库服务器是个好主意,因为它可能会使数据库处于奇怪的状态。确保使用-TERM
让它安全死亡。
我首先会尝试找出导致挂起的原因,并检查它是否真的挂起。 mysqld_safe
不会分叉到后台,因此一旦启动,您将不会返回到 shell,并且(至少在我的情况下)不会做出反应^C
,因此您显示的行为是预期的。打开另一个终端并运行pgrep
,kill
如上所述,很好地杀死了服务器,如其日志所示:
2020-12-19 16:08:47 0 [Note] /usr/local/libexec/mariadbd (initiated by: unknown): Normal shutdown
2020-12-19 16:08:47 0 [Note] Event Scheduler: Purging the queue. 0 events
2020-12-19 16:08:47 0 [Note] InnoDB: FTS optimize thread exiting.
2020-12-19 16:08:47 0 [Note] InnoDB: Starting shutdown...
2020-12-19 16:08:47 0 [Note] InnoDB: Dumping buffer pool(s) to /var/mysql/ib_buffer_pool
2020-12-19 16:08:47 0 [Note] InnoDB: Buffer pool(s) dump completed at 201219 16:08:47
2020-12-19 16:08:47 0 [Note] InnoDB: Shutdown completed; log sequence number 126817447; transaction id 271335
2020-12-19 16:08:47 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
2020-12-19 16:08:47 0 [Note] /usr/local/libexec/mariadbd: Shutdown complete