MariaDB/MySQL中defaults-group-suffix为空时的配置方案咨询
MariaDB配置组与选项优先级问题解答
一、仅无--defaults-group-suffix时生效的选项组
MariaDB/MySQL没有原生支持“仅当未指定--defaults-group-suffix参数时生效”的专属配置组——只要指定了后缀参数,实例就会同时读取默认组(比如[mariadbd])和带后缀的组,默认组的配置会被所有实例共享。
要实现“默认实例专属配置”的需求,可以用以下实操技巧:
- 把所有实例的公共配置放在
[mariadbd]组中 - 创建一个带特定后缀的组,比如
[mariadbd.default],将默认实例的专属配置放在这个组里 - 启动默认实例时,显式指定
--defaults-group-suffix=.default,这样它会读取[mariadbd]+[mariadbd.default]的配置 - 其他带自定义后缀的实例(比如
.sample),启动时指定各自的后缀,只会读取[mariadbd]+[mariadbd.sample]的内容,不会加载[mariadbd.default]的专属配置
通过这种方式,既能复用公共配置,又能实现默认实例和其他实例的配置隔离。
二、重复选项的生效规则
当同一配置选项在单个或多个配置文件中多次出现时,最后被读取到的选项值会生效,也就是后出现的配置会覆盖之前的:
- 如果是同一配置组内多次设置同一选项,组内最后一次设置的值生效
- 如果是不同配置组(比如
[mariadbd]和[mariadbd.sample]),由于带后缀的组是在默认组之后被读取的,所以后缀组里的选项会覆盖默认组的同名选项 - 如果是多个配置文件,按照MariaDB读取配置文件的顺序(比如先
/etc/my.cnf,再/etc/mysql/my.cnf等),最后一个文件里的对应选项会覆盖前面的
举个实际例子:
# /etc/my.cnf [mariadbd] datadir=/var/lib/mysql port=3306 [mariadbd.sample] datadir=/var/lib/mysql_sample
当用--defaults-group-suffix=.sample启动实例时,datadir会使用/var/lib/mysql_sample,而port保持3306不变。
内容的提问来源于stack exchange,提问作者user20357489
相关产品推荐
相关产品推荐

