Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Configurando as variáveis ​​de configuração do MySQL – MySQL 5.7 vs MySQL 8.0

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:

  1. Defina a configuração do tempo de execução usando o comando SET GLOBAL
mysql> set global max_connect_errors=10000;
  1. 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.