Como posso desabilitar o log binário no MySQL 8.0?
Estou precisando importar um arquivo MySQLDump grande e não quero preencher os logs binários com muitos GB de dados. No passado eu teria definido log_bin=0
no my.cnf
e reiniciado o banco de dados.
Mas com o MySQL 8.0 eu tentei várias configurações, mas toda vez que entro no banco de dados e executo:
SELECT @@global.log_bin;
e continua voltando1
Eu tentei:
log_bin = 0
log_bin = OFF
#log_bin = 1
É possível desabilitar os logs binários?
Além de especificar o argumento de linha de comando correspondente, você também pode adicionar uma opção para
my.cnf
:Edite
my.cnf
e adicioneskip-log-bin
na[mysqld]
seção.Reiniciar
mysqld
Aproveite sua falta de binlogs
Observe que isso permanecerá em vigor até que você remova a opção do arquivo de configuração.
Use o comando set-environment:
Em seguida, recarregue os arquivos de configuração e reinicie o servidor usando os seguintes comandos:
Em seguida, verifique o valor da variável global log_bin:
Do manual de referência do MySQL 8.0 , seção 5.4.4:
Há algumas informações conflitantes flutuando por aí. Aparentemente, o MySQL 8.0+ habilita logs binários por padrão, então muitos administradores de servidor estão descobrindo isso no meio da noite devido a falhas nos servidores!
De um modo geral, o MySQL usa traços
-
para sinalizadores de comando embutidos e usa sublinhados_
para nomes de opções de configuração permanentes... isso é comum para muitos aplicativos, na verdade. No entanto, por qualquer motivo, isso está se tornando menos verdadeiro, e vários formatos agora são aceitáveis (mais abaixo) ...Se você deseja desabilitar os logs binários apenas para sua sessão atual , use:
--disable-log-bin
--skip-log-bin
No entanto, se você deseja uma solução permanente, edite seu
my.cnf
arquivo de configuração e adicione:disable-log-bin
skip-log-bin
disable_log_bin
skip_log_bin
Eu testei todas essas variações com sucesso em nosso clichê do SlickStack . (Qualquer um que você escolher está bem, apenas certifique-se de não incluir várias versões.)
Observe que a sintaxe compartilhada pelo OP NÃO funciona:
log_bin = OFF
Você pode estar se perguntando por que o MySQL tornou as coisas tão complicadas, mas responder isso está acima do meu salário e eu me arrisco a adivinhar, eles só querem nos confundir o máximo possível;)
Algumas informações adicionais que podem ajudar os usuários do Windows em particular.
Resumo do TLDR - Verifique se você tem o arquivo de configuração correto, adicione uma das opções de desativar/ignorar e comente/remova qualquer referência à configuração de um nome de arquivo de log bin.
A entrada de serviço não tinha um arquivo padrão especificado, no meu caso
Que não apareceu na névoa de opções quando eu corri
mysql.exe --help
eu tentei todos esses
E nenhum funcionou, eu sabia que estava reiniciando o serviço correto porque se eu parasse não conseguiria conectar. Acontece que eu tinha um nome de arquivo especificado
Comentar isso significa que as opções de configuração como
disable-log-bin
agora funcionam.Abra o arquivo
/etc/mysql/mysql.conf.d/mysqld.cnf
e adicione 1 linhaskip-log-bin = true
após [mysqld]ou seja.
Salve o arquivo
reinicie o serviço mysql com
sudo service mysql restart
.Para confirmá-lo. Faça login no mysql usando
mysql -u <user> -p<passowrd>
e execute este comandoSELECT * FROM performance_schema.global_variables WHERE VARIABLE_NAME IN ('log_bin');
Espero que esta ajuda