我有一个很基本的问题,
我正在为两个新的空白服务器之间的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