背景:我正在将开源服务器软件(并编写相关文档)从 Debian/Ubuntu 移植到 CentOS/RHEL。
为了软件正确运行,我需要在 Mysql 配置中添加十几个特定参数(例如:增加max_allowed_packet
)。
从 Debian 的角度来看,我知道我可以通过添加文件来覆盖 Mysql 的 my.cnf /etc/mysql.d
,比如说/etc/mysql.d/my-software.cnf
。
我的问题是:如何在 CentOS/RHEL 上正确执行相同操作?
其他信息:
- 我知道 mysqld 在哪里寻找它的配置文件,这要归功于https://dev.mysql.com/doc/refman/5.7/en/option-files.html。但是,对于 CentOS,我不明白:
- 如何不直接编辑
/etc/my.cnf
(这可能不具备包更新保护) - 在哪里添加我的特定 Mysql 参数
- 如何不直接编辑
- 阅读 CentOS Mysql 初始化脚本(
/etc/init.d/mysql
),看到了/etc/sysconfig/mysqld
有源代码,但是不知道如何添加配置参数。 - 我在 ServerFault、StackOverflow 以及 DBA.StackExchange 上搜索了 override / my.cnf / centos 的组合,但没有找到任何相关内容。
- 我在“centos:6”Docker 容器中进行所有测试
- 该软件是 Asqatasunhttps://github.com/Asqatasun/Asqatasun
答案1
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] 部分。