my.cnf文件构成,头文件重要吗?

我有一个很基本的问题,

我正在为两个新的空白服务器之间的mySQL复制制作一个configuration脚本,现在使它更有保障我添加了行:

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

所以,如果在默认情况下已经设置了configuration选项,它将删除所述的行。

现在,在脚本的下一个步骤中,我希望它读取这些行,并select我们想要的选项。 我遇到的唯一问题是my.cnf文件是由

 [mysqld] 

像头,我想知道的是(而不能通过谷歌find)是否这些实际上是重要的,如果他们主要是指示的东西。

我可以添加吗?

 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 

当然。 该组中的选项特别适用于该程序。 例如, [mysqld]适用于mysqld服务器, [client]选项组被所有客户端程序读取,…

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

 # 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