As variáveis de configuração do MySQL são um conjunto de variáveis do sistema do servidor usadas para configurar a operação e o comportamento do servidor. Nesta postagem do blog, explicaremos as diferenças no gerenciamento das variáveis de configuração entre o MySQL 5.7 e o MySQL 8.0.
Vamos explicar três maneiras diferentes de definir as variáveis de configuração com base no seu caso de uso. As variáveis de configuração que podem ser definidas em tempo de execução são chamadas de variáveis dinâmicas e aquelas que precisam de uma reinicialização do servidor MySQL para entrar em vigor são chamadas de variáveis não dinâmicas.
1:Defina a configuração para a vida útil atual de um servidor MySQL em execução
A maioria das configurações do MySQL são de natureza dinâmica e podem ser definidas em tempo de execução usando o comando SET. Isso significa que as alterações não são persistentes e serão perdidas se o servidor MySQL reiniciar. Isso é útil para testar o comportamento de sua alteração de configuração antes de torná-la permanente.
Para MySQL 5.7 e 8.0, você pode fazer isso usando o comando SET GLOBAL
Exemplo:
mysql> set global max_connect_errors=10000;
2:Defina e persista a alteração de configuração nas reinicializações do MySQL
Quando estiver satisfeito com as configurações de alteração de configuração, você deve torná-las permanentes.
No MySQL 5.7, você precisaria fazer isso em 2 etapas:
- Defina a configuração do tempo de execução usando o comando SET GLOBAL
mysql> set global max_connect_errors=10000;
- Salve esta alteração em seu arquivo my.cnf atualizando a entrada existente para max_connect_errors ou adicionando uma nova.
Isso se tornou muito mais fácil no MySQL 8.0. Você pode fazer isso em uma única etapa usando o comando SET PERSIST
mysql> set persist max_connect_errors=10000;Como definir variáveis de configuração - MySQL 5.7 vs MySQL 8.0Click To Tweet
Isso definirá o valor de tempo de execução para a configuração e também persistirá a alteração salvando-a no arquivo mysqld-auto.cnf que existe no diretório de dados. Este é um arquivo json e agora você verá as seguintes entradas no arquivo.
{ "Version": 1, "mysql_server": { "max_connect_errors": { "Value": "10000", "Metadata": { "Timestamp": 1581135119397374, "User": "sgroot", "Host": "localhost" } } } }
Observação: As definições de configuração presentes em mysqld-auto.cnf sempre substituem os valores presentes no arquivo my.cnf. Portanto, quaisquer outras alterações feitas no arquivo my.cnf para a variável “max_connect_errors” não terão efeito. Isso pode ser confuso para aqueles que estão fazendo a transição do MySQL 5.7, pois podem ser usados para armazenar todas as suas configurações em my.cnf
3:Definindo variáveis de configuração que não são dinâmicas
Algumas das variáveis de configuração não podem ser definidas em tempo de execução e exigiriam uma reinicialização do MySQL para entrar em vigor.
No MySQL 5.7, você faria uma entrada para essas variáveis em seu arquivo my.cnf e reiniciaria o servidor MySQL para que tenha efeito. Um exemplo para tal variável é innodb_log_file_size.
No MySQL 8.0, você pode executar um comando chamado SET PERSIST ONLY que fará uma entrada no mysqld-auto.cnf.
Exemplo:
mysql> set persist_only innodb_log_file_size=134217728;
Também é possível reiniciar o servidor MySQL a partir da linha de comando usando o comando RESTART. Isso fará com que o valor alterado de innodb_log_file_size tenha efeito.
Observação: O comando RESTART funciona apenas se o MySQL for gerenciado usando programas externos como systemd ou mysqld_safe. Por favor, veja mais detalhes sobre isso aqui.
Caso contrário, o comando RESTART falhará com uma mensagem como a seguinte.
mysql> RESTART; ERROR 3707 (HY000): Restart server failed (mysqld is not managed by supervisor process).
Gerenciamento de configuração do MySQL em vários servidores
Gerenciar a configuração do MySQL em ambientes de réplica de origem é um processo tedioso se você precisar gerenciar vários clusters que executam diferentes versões do MySQL. É aqui que uma solução gerenciada como ScaleGrid seria benéfica.
O console ScaleGrid UI pode ser usado para revisar as configurações atuais de várias variáveis de configuração ou definir seus valores.
ScaleGrid pode reconhecer quando uma configuração não é dinâmica e avisará o usuário se uma reinicialização do MySQL for necessária para que o valor tenha efeito. O ScaleGrid também fará um backup do arquivo my.cnf atual antes de aplicar qualquer nova alteração de configuração.
Em ambientes de réplica de origem, o ScaleGrid altera as configurações de forma contínua, um servidor por vez. Se uma variável não dinâmica precisar ser definida, ScaleGrid executa um failover do mestre atual para minimizar o tempo de inatividade envolvido se o MySQL tiver que ser reiniciado de outra forma.
Acesse o link abaixo para saber mais sobre os diferentes recursos da solução de hospedagem ScaleGrid MySQL.