MariaDB:我应该使用“/etc/my.cnf”还是“/etc/my.cnf.d”中的文件来配置数据库服务器?

MariaDB:我应该使用“/etc/my.cnf”还是“/etc/my.cnf.d”中的文件来配置数据库服务器?

我正在尝试在以 Fedora 37:Workstation 为操作系统的机器上配置 MariaDB。

我原本希望使用它/etc/my.cnf来配置端口等,但是,该文件包含目录/etc/my.cnf.d。我不明白为什么它有扩展名.d,我记得在计算机科学课上以 .d 结尾的路径就像头文件,但对于 C++ 程序来说,它是依赖项。

所以我想知道的是:我是否能够使用来配置 MariaDB /etc/my.cnf,并且我也可以使用目录mariadb-server.cnf中的文件吗/etc/my.cnf.d

如果我可以同时使用两者,那么是否可以正确地假设设置的任何设置/etc/my.cnf都会覆盖/etc/my.cnf.d目录内的其他配置?

答案1

虽然/etc/my.cnf是主配置文件,但/etc/my.cnf.d它是附加 MySQL 配置文件的目录。

关于这个问题:

“我很困惑为什么它以 .d 作为扩展名,在计算机科学课上我记得以 .d 结尾的路径就像头文件,但对于 C++ 程序来说却是依赖项。”

所有的.d代表都是directory。就是这样。

这只是组织配置文件的一种不同方式。没有什么深奥或技术性的东西。如果你问我,MySQL 安装不需要它,但我不是决定创建此功能的 MariaDB 开发人员。所以……嘿!进入核心细节。

“如果我可以同时使用两者,那么是否可以正确地假设设置的任何设置/etc/my.cnf都会覆盖目录内的其他配置/etc/my.cnf.d?”

不是。恰恰相反:先加载,然后加载/etc/my.cnf配置。详情如下。/etc/my.cnf.d

虽然/etc/my.cnf是主配置文件,但是/etc/my.cnf.d是一个配置目录。这意味着一个目录可能包含多个配置文件。

作为官方 MariaDB 文档解释:

包括选项文件目录

也可以从另一个选项文件包含目录中的所有选项文件。例如,要包含 /etc/my.cnf.d/ 中的所有选项文件,选项文件可以包含:

[mariadb]
...
!includedir /etc/my.cnf.d/

!includedir配置选项将从/etc/my.cnf.d/目录中加载配置文件。通常在主配置/etc/my.cnf加载后。

实际情况是,您可以在主文件中进行所有想要的更改,/etc/my.cnf/etc/my.cnf.d目录可以包含您希望单独管理的配置选项。

说实话,我从未理解 MySQL 的好处。但是 — 例如 — 在 Apache 中有一个类似的目录/etc/httpd/conf.d,名为,我会将根据服务器和位置而变化的特定配置文件放在其中。

但对于 MySQL(或 MariaDB),我只需在主配置文件中进行所有更改/etc/my.cnf

我的意思是,也许你可以将所有 InnoDB 配置选项拆分出来,并将它们设置在一个名为的配置文件中,/etc/my.cnf.d/innodb.cnf然后根据需要加载该文件。但每次我思考这样做的好处时,它仍然似乎是一种过于分散的配置管理方法。

最后,您需要将其视为/etc/my.cnf.d/管理配置文件的便捷方法。如果您不需要它,请不要使用它。

相关内容