重新加载 my.cnf,无需重启 MySQL 服务

重新加载 my.cnf,无需重启 MySQL 服务

我必须配置一个 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 重启脚本可能与我的不同,但您的想法是正确的!

相关内容