升级到 15.04 后,我非常乐意了解 systemd。我认为一切都正常,只是我无法停止 mysql.service;systemctl 命令只是挂起,而 mysql 仍在运行。有没有人遇到过这种情况或可能知道发生了什么?
答案1
我遇到了同样的问题(升级到 15.04,使用官方文件和配置)。
我必须进行以下更改才能在系统重启/关闭时mysql
手动停止守护进程并自动停止:sytemctl
让用户
/etc/mysql/debian.cnf
可读mysql
sudo chgrp mysql /etc/mysql/debian.cnf; sudo chmod 640 /etc/mysql/debian.cnf
提供一个稍微修改过的
mysql.service
文件:sudo cp /lib/systemd/system/mysql.service /etc/systemd/system/ sudo chmod 755 /etc/systemd/system/mysql.service
通过在编辑器中打开复制的文件提供明确的停止命令:
sudo nano /etc/systemd/system/mysql.service
并在该部分下添加以下行
[Service]
:ExecStop=/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf shutdown
在 Nano 中,使用 Ctrl+O 保存(Linux 方式!),使用 Ctrl+X 退出。
使系统知道新的服务文件:
sudo systemctl daemon-reload
答案2
我在使用 Ubuntu 15.10 桌面时遇到了同样的问题,并且找到了解决方法:
/etc/mysql/mysql.conf.d/mysqld.cnf 中的 log_error 参数已被注释掉。取消注释该参数后,systemd 可以顺利关闭 mysqld。
答案3
您的问题是thread_pool_size。如果它远高于核心/线程数,则除非使用mysqladmin shutdown命令,否则您将无法正常关闭。
例如:您有 2 核 CPU 和 4 个线程。如果您将其设置为 1-4 - 它将正常工作。如果您将其设置为 16(如许多“高性能”博客中所建议的那样),它将变得很差。
答案4
只是在复制的时候mysql.service
你必须做一个chmod
后续操作。
cp /lib/systemd/system/mysql.service /etc/systemd/system/
chmod 755 /etc/systemd/system/mysql.service