在 CentOS/RHEL 上覆盖 Mysql my.cnf 的正确方法?

Mat*_*URE 5 mysql ubuntu centos

上下文:我正在将开源服务器软件(并编写相关文档)从 Debian/Ubuntu 移植到 CentOS/RHEL。

为了让软件正常运行,我需要在Mysql配置中添加十几个具体参数(例如:增加max_allowed_packet)。

从 Debian 的角度来看,我知道我可以通过添加一个文件来覆盖 Mysql 的 my.cnf /etc/mysql.d,比如/etc/mysql.d/my-software.cnf.

我的问题是:如何在 CentOS/RHEL 上正确地做同样的事情?

其他信息:

  • 由于https://dev.mysql.com/doc/refman/5.7/en/option-files.html,我知道 mysqld 在哪里查找其配置文件。但是,对于 CentOS,我不明白:
    • 如何不直接编辑/etc/my.cnf(可能不是包更新证明)
    • 在哪里添加我的特定 Mysql 参数
  • 阅读CentOS Mysql init脚本(/etc/init.d/mysql),看到a/etc/sysconfig/mysqld是source的,但是不知道怎么添加配置参数。
  • 我在 ServerFault、StackOverflow 和 DBA.StackExchange 上搜索了 override / my.cnf / centos 的组合,但没有找到相关的内容。
  • 我在“centos:6”Docker 容器中进行所有测试
  • 该软件是 Asqatasun https://github.com/Asqatasun/Asqatasun

小智 0

使用strace -e open /some/prog/name, 例如strace -e open mysql将显示在哪些位置检查配置指令以及针对每个特定操作系统和程序版本检查的顺序。不同的程序使用配置中的不同位置和部分。

至于覆盖,您只能确保 CentOS/RHEL 安装并使用/etc/my.cnf. 如果您要移植的软件使用libmysqlclient,您可以采用覆盖MYSQL_HOME环境变量的路径。如果没有,添加!include /some/location.cnf到 /etc/my.cnf 的 [client] 部分仍然是一个选项。