my.cnf file makeup, os cabeçalhos [] são importantes?

2

Eu tenho uma pergunta básica,

Estou fazendo um script de configuração para replicação mySQL entre dois novos servidores em branco. Agora, para torná-lo um pouco mais seguro, adicionei as linhas:

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

Assim, se já houver opções de configuração por padrão, elas removerão as linhas em questão.

Agora, na próxima etapa do script, quero ler essas linhas, com as opções que desejamos. O único problema que estou tendo é que o arquivo my.cnf é feito com

[mysqld]

como cabeçalhos, o que eu estou querendo saber é (e não consigo encontrar por meio do google) é se eles realmente importam, se são principalmente para indicar coisas.

posso adicionar apenas

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

ou precisam estar na seção marcada com

[mysqld]

e se forem, posso "expandir" a seção adicionando outra

[mysqld]

na parte inferior do arquivo para que você tenha 2x essa "região"?

fazendo com que seja assim:

#start file
[mysqld]
#options here
[mysql.server]
#options
[mysqld_safe]
#options
[mysqld]
log-bin=mysql-bin
server-id=1
    
por Entity_Razer 09.11.2011 / 09:35

1 resposta

2

Claro. As opções no grupo aplicam-se especialmente ao programa. Por exemplo, [mysqld] se aplica ao servidor mysqld, [client] option group é lido por todos os programas clientes, ...

Sobre a sua pergunta, sed pode inserir uma linha depois de encontrar o padrão, tente isto:

# sed '/\[mysqld\]/ a server-id=1' /etc/my.cnf
  • a comando significa acrescentar

Ele pode ser reescrito em duas linhas para facilitar a leitura:

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

Você provavelmente deseja verificar se o server-id existe primeiro:

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