Desabilitar o log binário do MySQL com a variável log_bin

35

O arquivo de configuração padrão do MySQL /etc/mysql/my.cnf instalado por algum pacote debian usando o APT geralmente define a variável log_bin, para que o binlog seja ativado:

log_bin = /var/log/mysql/mysql-bin.log

Quando eu quero desabilitar o log binário nessa instalação, comente a linha no my.cnf funciona, é claro, mas gostaria de saber se existe uma maneira de desabilitar o log binário, definindo explicitamente log_bin como OFF, no estilo debian, quero dizer em um arquivo incluído como /etc/mysql/conf.d/myCustomFile.cnf, portanto o my.cnf padrão não é alterado e pode ser facilmente atualizado pelo apt, se necessário.

Eu tentei "log_bin = 0", "log_bin = OFF" ou "log_bin =", mas nenhum funciona ...

Nicolas Payart
fonte

Respostas:

42

Essa é uma pergunta antiga, mas surgiu em uma pesquisa enquanto eu tentava movimentar minha memória sobre o nome da opção correta e, agora que descobri, estou adicionando os detalhes aqui.

A parte principal da pergunta é:

Quero dizer em um arquivo incluído como /etc/mysql/conf.d/myCustomFile.cnf

Você pode fazer isso a partir de um arquivo de opção incluído usando a opção skip-log-bin. Por exemplo, você pode criar /etc/mysql/conf.d/disable_binary_log.cnfcom o seguinte conteúdo:

[mysqld]
skip-log-bin

Você pode adicionar skip-como prefixo a outras opções para desativá-las dessa maneira também.

John Dalton
fonte
11
Ótimo, exatamente o que eu estava esperando. Isso funciona bem no MariaDB 10.0, pelo menos. Muito obrigado.
Nicolas Payart 11/11
7

No MySQL 8 é a opção disable_log_bin que deve ser fornecida sem nenhum parâmetro no my.cnfarquivo na [mysqld]seção

[mysqld]
disable_log_bin
some-other-option = any-value
Al Bundy
fonte
5

Você pode vê-lo assim, log_bin não deve aceitar parâmetros, ou você coloca:

log_bin

ou nada, pois é um parâmetro booleano.

No entanto, se um valor for definido, os logs serão ativados e o valor interpretado como o nome base do binlog.

As opções de log têm um histórico de não serem muito intuitivas e alteram seu formato de versão para versão (estou olhando para você, log lento).

jynus
fonte
Não funciona no MariaDB
MechanTOurS
Como eu uso o MariaDB e tenho exatamente a mesma linha na minha configuração, estou muito confiante de que funcione.
jynus
4

Se você não estiver replicando, poderá desativar o log de bin alterando o arquivo my.ini ou my.cnf. Abra seu my.ini ou /etc/my.cnf (/etc/mysql/my.cnf) e digite:

# vi /etc/my.cnf

Localize uma linha que leia "log_bin" e remova ou comente da seguinte maneira:

#log_bin = /var/log/mysql/mysql-bin.log

Você também precisa remover ou comentar as seguintes linhas:

#expire_logs_days = 10

#max_binlog_size = 100M

Feche e salve o arquivo. Finalmente, reinicie o servidor mysql:

# service mysql restart

Mahesh Patil
fonte
11
Eu acho que o OP entende isso, e é por isso que ele escreveu: "Quero dizer em um arquivo incluído como /etc/mysql/conf.d/myCustomFile.cnf, então o my.cnf padrão não é alterado"
Peter V. Mørch
1

Do Manual para MariaDB ( https://mariadb.com/kb/en/library/activating-the-binary-log/ )

Se você não fornecer um nome (que pode, opcionalmente, incluir um caminho absoluto), o padrão será datadir / log-basename-bin, datadir / mysql-bin ou datadir / mariadb-bin

Contudo,

Clientes com o privilégio SUPER podem desativar e reativar o log binário da sessão atual, configurando a variável sql_log_bin.

SET sql_log_bin = 0;

SET sql_log_bin = 1;

No entanto, se você diz que foi ativado por padrão durante a instalação, desabilite removendo a linha do seu arquivo my.cnf e reinicie o mysqld. Você também pode limpar os dados binários ( https://dev.mysql.com/doc/refman/5.6/en/purge-binary-logs.html )

PURGE BINARY LOGS

Finalmente, como a resposta do outro pôster menciona, no MySQL 8 existe uma opção para desativar explicitamente o log binário do arquivo de configuração usando as opções --skip-log-binou --disable-log-binna seção [mysqld] do arquivo de configuração.

Para desativar o log binário, você pode especificar a opção --skip-log-binou --disable-log-binna inicialização. Se uma dessas opções for especificada e --log-bintambém especificada, a opção especificada posteriormente terá precedência. Quando o log binário está desativado, a variável de sistema log_bin é definida como OFF.

jonnyjandles
fonte
0

Como eu sei depois de atualizar um pacote, o arquivo de configuração deve ser o antigo; portanto, após a atualização, você tem os mesmos arquivos de configuração. Caso contrário, você pode criar um segundo arquivo de configuração no caminho $ MYSQL_HOME / my.cnf. Este é para opções específicas do servidor e, como eu sei, substituirá as configurações no /etc/my.cnf global

Tamas Szasz
fonte
11
Sim, a política padrão do Debian não substitui um arquivo de configuração em / etc. Mas minha pergunta foi precisamente como substituir a configuração log_bin por um "valor nulo" SEM comentar a linha no /etc/mysql/my.cnf.
Nicolas Payart
skip-log-bin desliga booleans estabelecidos em outros lugares
santiago Arizti