Como configurar sinalizações do banco de dados

Nesta página, você verá uma descrição de como configurar sinalizações do banco de dados para o Cloud SQL, além de uma relação das sinalizações que você pode definir para sua instância. As sinalizações do banco de dados são usadas com o objetivo de ajustar parâmetros e opções do MySQL, configurar e ajustar a instância.

Em alguns casos, para configurar uma sinalização pode ser necessário configurar outra para ativar toda a funcionalidade desejada. Por exemplo, para ativar a geração lenta de registros de consulta, você precisa definir as sinalizações slow_query_log como on e log_output como FILE. Dessa forma, os registros são disponibilizados por meio do Visualizador de registros no Console do Google Cloud Platform.

Quando você define, remove ou modifica uma sinalização para uma instância, ela é reiniciada. O valor da sinalização persiste nessa instância até você removê-lo.

Como configurar sinalizações do banco de dados

Como configurar uma sinalização do banco de dados

Console

  1. No Console do Google Cloud Platform, crie um novo projeto do GCP ou abra um projeto existente, selecionando o nome dele.
  2. Abra a instância e clique em Editar.
  3. Role a tela para baixo até a seção Sinalizações.
  4. Para definir uma sinalização que ainda não tenha sido definida, clique em Adicionar item, selecione a sinalização no menu suspenso e defina o valor.
  5. Clique em Salvar para salvar as alterações.
  6. Confirme as alterações em Sinalizações, na página "Visão geral".

gcloud

Edite a instância:

gcloud sql instances patch [INSTANCE_NAME] --database-flags [FLAG1=VALUE1,FLAG2=VALUE2]

Para sinalizações sem valor, especifique o nome delas seguido de um sinal de igual ("="). Inclua os valores para todas as sinalizações que você queira definir na instância. As sinalizações não incluídas voltam a ter o valor padrão.

Por exemplo, para definir as sinalizações general_log, skip_show_database e wait_timeout, use o seguinte comando:

gcloud sql instances patch [INSTANCE_NAME] --database-flags \
    general_log=on,skip_show_database=,wait_timeout=200000

cURL

Para definir uma sinalização de uma instância existente:

ACCESS_TOKEN="$(gcloud auth application-default print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{"settings" : {"databaseFlags" :
         [{ "name": "<FLAG-NAME>",  "value": "<FLAG-VALUE>" }]}}' \
     -X PATCH \
     https://www.googleapis.com/sql/v1beta4/projects/<PROJECT-ID>/instances/<INSTANCE_NAME>

Por exemplo, para definir a sinalização general_log de uma instância existente, use:

ACCESS_TOKEN="$(gcloud auth application-default print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
       --header 'Content-Type: application/json' \
       --data '{"settings" : {"databaseFlags" : [{ "name": "general_log",  "value": "on" }]}}' \
       -X PATCH \
       https://www.googleapis.com/sql/v1beta4/projects/<PROJECT-ID>/instances/<INSTANCE_NAME>

Se houver sinalizações para a instância, modifique o comando anterior para incluí-las. O comando PATCH substitui as sinalizações existentes pelas especificadas na solicitação.

Como redefinir as sinalizações ao valor padrão

Console

  1. No Console do Google Cloud Platform, crie um novo projeto do GCP ou abra um projeto existente, selecionando o nome dele.
  2. Abra a instância e clique em Editar.
  3. Abra a seção Sinalizações do banco de dados.
  4. Clique no X ao lado de todas as sinalizações mostradas.
  5. Clique em Salvar para salvar as alterações.

gcloud

Redefina todas as sinalizações ao valor padrão em uma instância:

gcloud sql instances patch [INSTANCE_NAME] --clear-database-flags

Confirme se a instância será reiniciada.

cURL

Para apagar todas as sinalizações de uma instância existente:

ACCESS_TOKEN="$(gcloud auth application-default print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" 
--header 'Content-Type: application/json'
--data '{"settings" : {"databaseFlags" : []}}'
-X PATCH
https://www.googleapis.com/sql/v1beta4/projects/<PROJECT-ID>/instances/<INSTANCE_NAME>

Como visualizar os valores atuais das sinalizações do banco de dados

Para visualizar todos os valores atuais das variáveis do sistema MySQL, entre na instância com o cliente mysql e digite a seguinte instrução:

 SHOW VARIABLES;

É possível alterar o valor somente para sinalizações compatíveis (conforme listado abaixo).

Como determinar quais sinalizações do banco de dados foram configuradas para uma instância

Para ver quais sinalizações foram definidas para uma instância do Cloud SQL:

Console

  1. No Console do Google Cloud Platform, crie um novo projeto do GCP ou abra um projeto existente, selecionando o nome dele.
  2. Selecione a instância para abrir a página Visão geral da instância.

    As sinalizações do banco de dados que foram configuradas estão listadas na seção Sinalizações do banco de dados.

gcloud

Veja o estado da instância:

gcloud sql instances describe [INSTANCE_NAME]

Na saída, as sinalizações do banco de dados são listadas em settings como a coleção databaseFlags. Para saber mais sobre a representação dos sinalizadores na saída, consulte Representação do recurso das instâncias.

cURL

Para listar as configurações de uma instância:

ACCESS_TOKEN="$(gcloud auth application-default print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" 
--header 'Content-Type: application/json'
-X GET
https://www.googleapis.com/sql/v1beta4/projects/<PROJECT-ID>/instances/<INSTANCE_NAME>?fields=settings

Na saída, procure o campo databaseFlags.

Sinalizações aceitas

As sinalizações aceitas no Cloud SQL são as solicitadas com mais frequência para o MySQL. Observe que, para uma determinada sinalização, o Cloud SQL pode aceitar uma variação diferente da variável ou opção correspondente no MySQL.

As sinalizações são aplicáveis a todas as versões do MySQL compatíveis com o Cloud SQL, exceto quando indicado.

Sinalização do Cloud SQL Tipo Valores aceitos e observações Necessário reiniciar
auto_increment_increment integer 1 .. 65535 Não
auto_increment_offset integer 1 .. 65535 Não
binlog_row_image enumeration full (padrão), minimal ou noblob. Não
character_set_server string utf8 ou utf8mb4 (recomendado) Sim
default_time_zone string Especificar valores de -12:59 a +13:00. Zeros à esquerda são obrigatórios. Sim
event_scheduler boolean on | off

Não é possível definir um horário de criação para instâncias da primeira geração.

Se você estiver usando o "Programador de eventos", precisará configurar a instância com uma política de ativação definida como ALWAYS para garantir a execução dos eventos programados.

Não
ft_max_word_len integer 10 .. 252 Sim
ft_min_word_len integer 1 .. 16 Sim
ft_query_expansion_limit integer 0 .. 1000 Sim
general_log boolean on | off

Consulte a seção Dicas para mais informações sobre registros gerais.

Não
group_concat_max_len integer 4 .. 17179869184 Não
innodb_autoinc_lock_mode integer 0 .. 2 Sim
innodb_file_per_table boolean on | off

Consulte a seção Dicas para mais informações sobre esta sinalização.

Não
innodb_ft_max_token_size integer 10 .. 252

Compatível apenas com MySQL 5.6 e versões posteriores.

Sim
innodb_ft_min_token_size integer 0 .. 16

Compatível apenas com MySQL 5.6 e versões posteriores.

Sim
innodb_ft_server_stopword_table string Compatível apenas com MySQL 5.6 e versões posteriores. Não
innodb_large_prefix boolean on | off

Compatível apenas com MySQL 5.5 e 5.6.

Não
innodb_lock_wait_timeout integer 1 .. 1073741824 Não
innodb_print_all_deadlocks boolean on | off Não
interactive_timeout integer 1 .. 31536000 Não
local_infile boolean on | off Não
lock_wait_timeout integer 1 .. 31536000 Não
log_bin_trust_function_creators boolean on | off Não
log_output set FILE | TABLE | NONE Não
log_queries_not_using_indexes boolean on | off Não
long_query_time float 0 .. 30000000

O Cloud SQL possibilita que você defina esta sinalização para menos de 1, se necessário.

Não
lower_case_table_names integer 0 ou 1

Na maioria dos casos, o valor padrão 0 deve ser usado, então os nomes de tabela e banco de dados diferenciam maiúsculas e minúsculas. Se você precisar alterar o valor desse sinalizador, confirme como a alteração afetará suas tabelas e bancos de dados existentes.

Sim
max_allowed_packet integer 16384 .. 1073741824 Não
max_heap_table_size integer 16384 .. 67108864

Consulte a seção Dicas para mais informações sobre esta sinalização.

Não
max_prepared_stmt_count integer 0 .. 1048576 Não
net_read_timeout integer 30 .. 4294967295 Não
net_retry_count integer 10 .. 4294967295 Não
net_write_timeout integer 60 .. 4294967295 Não
optimizer_search_depth integer 0 .. 62 Não
performance_schema boolean on | off (padrão)

É necessário usar a API para alterar o valor desta sinalização. Não é possível fazer a ativação em instâncias com um tamanho de camada menor do que db-n1-standard-8 ou db-n1-highmem-4. Se esta sinalização estiver ativada, não será possível alterar sua camada para um tamanho que não a suporte e será necessário desativá-la primeiro. Não compatível com instâncias da Primeira geração.

Sim
query_cache_limit integer 0 .. 223338299392 Não
query_cache_size integer 0 .. 223338299392

Consulte a seção Dicas para mais informações sobre esta sinalização.

Não
query_cache_type enumeration 0 .. 2

Consulte a seção Dicas para mais informações sobre esta sinalização.

Sim
read_only boolean on | off

Não tem efeito em réplicas.

Não
show_compatibility_56 boolean on | off

Compatível apenas com MySQL 5.7.

Não
skip_show_database flag on | off Sim
slow_query_log boolean on | off

Consulte a seção Dicas para mais informações sobre registros de consulta lentos.

Não
sql_mode string Consulte os Modos SQL do servidor na documentação do MySQL (conteúdo em inglês), para ver os valores permitidos, incluindo modos combinados como ANSI. Apenas um modo pode ser selecionado. NO_DIR_IN_CREATE e NO_ENGINE_SUBSTITUTION não são compatíveis. Não
tmp_table_size integer

1024 .. 67108864

Consulte a seção Dicas para mais informações sobre esta sinalização.

Não
wait_timeout integer 1 .. 31536000 Não

Dicas para trabalhar com sinalizações

general_log, slow_query_log

Para tornar disponíveis os registros de general ou slow query, ative a sinalização correspondente e defina a sinalização log_output como FILE. Isso disponibiliza a saída de registro por meio do Visualizador de registros no Console do Google Cloud Platform. Observe que cobranças do Stackdriver Logging se aplicam.

Se o log_output estiver configurado para NONE, não será possível acessar os registros. Se configurar log_output como TABLE, a saída de registro será colocada em uma tabela no seu banco de dados. Se essa tabela ficar muito grande, isso afetará o tempo de reinicialização da instância ou resultará na perda da cobertura do SLA. Por isso, não recomendamos usar a opção TABLE. Se necessário, você pode truncar as tabelas de registro usando a API. Para mais informações, consulte a página de referência "instances.truncateLog".

Para instâncias da Primeira geração, uma tabela mysql.general_log ou mysql.slow_log muito grande pode fazer com que conexões fiquem penduradas após um reinício da instância. Para evitar esse problema, as configurações general_log e/ou slow_query_log são ignoradas no reinício se o tamanho do registro ultrapassar 128 MB. Por esse motivo, em instâncias da Primeira Geração, recomendamos ativar o sinalizador apenas temporariamente ou manter a tabela pequena por meio do truncamento periódico. Se necessário, INSERT ... SELECT pode ser usado para preservar o conteúdo da tabela mysql.general_log.

innodb_file_per_table

Essa sinalização é definida como OFF por padrão no MySQL 5.5. Nas versões posteriores do MySQL, o valor padrão é ON.

max_heap_table_size, tmp_table_size

Quando você define tmp_table_size e max_heap_table_size muito altos para o número de consultas simultâneas que a instância processa, pode haver exaustão da memória disponível para a instância. A exaustão da memória causa falha e reinício da instância.

Alguns valores dessas sinalizações podem resultar na perda da cobertura do SLA da instância. Saiba mais. Para saber mais informações sobre como usar essas sinalizações, consulte Como o MySQL usa tabelas temporárias internas e O mecanismo de armazenamento MEMORY.

query_cache_size, query_cache_type

Alguns valores dessas sinalizações podem resultar na perda da cobertura do SLA da instância. Saiba mais.

Próximas etapas

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Cloud SQL para MySQL