![重新加载 my.cnf,无需重启 MySQL 服务](https://linux22.com/image/497184/%E9%87%8D%E6%96%B0%E5%8A%A0%E8%BD%BD%20my.cnf%EF%BC%8C%E6%97%A0%E9%9C%80%E9%87%8D%E5%90%AF%20MySQL%20%E6%9C%8D%E5%8A%A1.png)
我必须配置一个 MySQL 服务器来充当复制主服务器。
我修改了 my.cnf 以激活二进制日志,但现在为了重新加载配置,我必须使用 重新加载服务/etc/init.d/mysqld restart
。问题是服务器每秒接收多个查询,我不想丢失同时到达的所有数据。
有没有办法无需重新启动服务即可重新加载配置文件 my.cnf?
答案1
MySQL 具体来说:
my.cnf 中的选项是系统变量。这些变量要么是动态的(可以在运行时更改),要么不是动态的。动态的变量可以在运行时使用 SET 变量语法进行更改。您可以使用 查看变量SHOW VARIABLES;
。但根据手册中的这个链接,二进制日志选项不是动态的。所以看起来你必须重新启动。不过,你可能需要等待比我更了解 mysql 的人来确认这一点。
守护进程概述:
在 Linux 中,/etc/init.d/ 保存启动和停止守护进程(服务)的脚本。由于这些是脚本,因此您可以使用文本编辑器查看它们。许多脚本都会采用 reload 参数。查看我的 mysql 脚本,reload 作为参数使用 mysqladmin 命令。因此,reload 下的 mysqladmin 手册显示:
重新加载
Reload the grant tables.
因此总的来说,这不是为了配置更改,而是为了权限更改(也许是等效的刷新权限命令?)。
答案2
我一直在寻找解决方案,但得到的帮助有限,让我不满意。有个家伙提供了 kill -HUP ……但对我不起作用……
我所做的是暂停 apache 实例...然后稍后继续运行它们...在服务器上效果很好,平均每秒有 25 个活动请求。
使用 sudo (显然) pkill -STOP httpd && /etc/init.d/mysqld restart && pkill -CONT httpd
当然,您的 apache 进程名称和/或 mysql 重启脚本可能与我的不同,但您的想法是正确的!