my.cnf 文件组成,[] 标题重要吗?

my.cnf 文件组成,[] 标题重要吗?

我有一个很基本的问题,

我正在为 2 个新的空白服务器之间的 mySQL 复制编写一个配置脚本,现在为了使其更具故障安全性,我添加了以下几行:

sed '/log-bin/d' /etc/my.cnf
sed '/server/d' /etc/my.cnf

因此,如果已经默认设置了配置选项,它将删除相关的行。

现在,在脚本的下一步中,我希望它重新添加这些行,并使用我们想要的选项。我遇到的唯一问题是 my.cnf 文件由

[mysqld]

就像标题一样,我想知道的是(并且无法通过谷歌找到)这些是否真的很重要,或者它们是否主要是为了指示事物。

我可以补充一下吗

echo "log-bin=mysql-bin" >> /etc/my.cnf
echo "server-id=1" >> /etc/my.cnf

或者它们是否需要位于标有

[mysqld]

如果是,我可以通过添加另一个来“扩展”该部分吗?

[mysqld]

在文件的底部,这样你就会有2x这个“区域”?

有效地使它看起来像这样:

#start file
[mysqld]
#options here
[mysql.server]
#options
[mysqld_safe]
#options
[mysqld]
log-bin=mysql-bin
server-id=1

答案1

当然。组中的选项专门适用于该程序。例如,[mysqld]适用于 mysqld 服务器,[client]选项组由所有客户端程序读取,...

关于你的问题,sed可以在找到模式后插入一行,试试这个:

# sed '/\[mysqld\]/ a server-id=1' /etc/my.cnf
  • a命令代表附加

为了更容易阅读,可以将其重写为两行:

# sed '/\[mysqld\]/ a\
> server-id=1' /etc/my.cnf

您可能想server-id先检查是否存在:

# [ $(grep -c server-id /etc/my.cnf) -eq 0 ] && \
    sed '/^\[mysqld\]$/ a server-id=1' /etc/my.cnf

相关内容