Configurar as definições de parâmetro para a extensão pgactive - Amazon Relational Database Service

Configurar as definições de parâmetro para a extensão pgactive

É possível usar a consulta a seguir para visualizar todos os parâmetros associados à extensão pgactive.

app=> SELECT * FROM pg_settings WHERE name LIKE 'pgactive.%';

Você pode configurar a extensão pgactive usando vários parâmetros. Esses parâmetros podem ser definidos por meio do AWS Management Console ou da interface da CLI AWS.

Principais parâmetros da extensão pgactive

A seguinte tabela apresenta uma referência para os principais parâmetros da extensão pgactive:

Parâmetro

Unidade

Padrão

Descrição

pgactive.conflict_logging_include_tuples

boolean

Registra em log informações completas da tupla para a extensão pgactive.

nota

É necessário reinicializar o servidor para que as alterações entrem em vigor.

pgactive.log_conflicts_to_table

boolean

Determina se a extensão pgactive registra em log os conflitos detectados na tabela pgactive.pgactive_conflict_history. Para ter mais informações e detalhes, consulte “Registro em log de conflitos”.

nota

É necessário reinicializar o servidor para que as alterações entrem em vigor.

pgactive.log_conflicts_to_logfile

boolean

Determina se a extensão pgactive registra em log os conflitos detectados no arquivo de log do PostgreSQL. Para ter mais informações e detalhes, consulte “Registro em log de conflitos”.

nota

É necessário reinicializar o servidor para que as alterações entrem em vigor.

pgactive.synchronous_commit

boolean

off

Determina o comportamento de confirmação dos operadores apply da pgactive. Quando desabilitados (off), os operadores apply executam confirmações assíncronas, o que melhora o throughput do PostgreSQL durante as operações apply, mas atrasa as confirmações de reprodução para o precedente. Configurá-los como off é sempre seguro e não causará perda ou omissão de transações. Essa configuração afeta apenas o tempo de liberação do disco no nó subsequente e quando as confirmações são enviadas ao precedente. O sistema atrasa o envio das confirmações de liberação de reprodução até que as confirmações sejam liberadas para o disco por meio de operações não relacionadas, como pontos de verificação ou trabalho periódico. No entanto, se o precedente tiver o subsequente listado em synchronous_standby_names, configurá-lo como off fará com que as confirmações síncronas no precedente demorem mais para relatar êxito ao cliente. Nesse caso, configure o parâmetro como on.

nota

Mesmo quando esse parâmetro é definido como on com os nós listados em synchronous_standby_names, conflitos de replicação ainda podem ocorrer em configurações ativas-ativas. Isso ocorre porque o sistema não tem bloqueio entre nós e gerenciamento global de snapshots, permitindo que transações simultâneas em nós diferentes modifiquem a mesma tupla. Além disso, as transações só iniciam a replicação depois de serem confirmadas no nó precedente. Habilitar a confirmação síncrona não transforma a extensão pgactive em um sistema sempre consistente.

pgactive.temp_dump_directory

string

Define o caminho de armazenamento temporário necessário para as operações de clonagem do banco de dados durante a configuração inicial. Esse diretório deve ser gravável pelo usuário do Postgres e ter espaço de armazenamento suficiente para conter um despejo completo do banco de dados. O sistema usa esse local somente durante a configuração inicial do banco de dados com operações de cópia lógica. Esse parâmetro não é usado pelo pgactive_init_copy command.

pgactive.max_ddl_lock_delay

milliseconds

-1

Especifica o tempo máximo de espera para o bloqueio de DDL antes de interromper à força as transações de gravação simultâneas. O valor padrão é -1, que adota o valor definido em max_standby_streaming_delay. Esse parâmetro aceita unidades de tempo. Por exemplo, você pode configurá-lo como 10s (10 segundos). Durante esse período de espera, o sistema tenta adquirir bloqueios de DDL enquanto aguarda a confirmação ou reversão das transações de gravação em andamento. Para ter mais informações, consulte “DDL Locking”.

pgactive.ddl_lock_timeout

milliseconds

-1

Especifica por quanto tempo uma tentativa de bloqueio de DDL espera para obter o bloqueio. O valor padrão é -1, que usa o valor especificado em lock_timeout. Você pode definir esse parâmetro usando unidades de tempo, como 10s (10 segundos). Esse temporizador controla apenas o período de espera para obter um bloqueio de DDL. Quando o sistema obtém o bloqueio e inicia a operação de DDL, o temporizador para. Esse parâmetro não limita a duração total em que um bloqueio de DDL pode ser mantido ou o tempo geral de operação de DDL. Para controlar a duração total da operação, use statement_timeout em vez disso. Para ter mais informações, consulte “DDL Locking”.

pgactive.debug_trace_ddl_locks_level

boolean

Substitui o nível de log de depuração padrão para operações de bloqueio de DDL na extensão pgactive. Quando configurada, essa definição faz com que mensagens relacionadas ao bloqueio de DDL sejam emitidas no nível de depuração de LOG em vez de no nível padrão. Use esse parâmetro para monitorar a atividade de bloqueio de DDL sem habilitar os níveis detalhados de log DEBUG1 ou DEBUG2 em todo o servidor.

Níveis de log, em ordem crescente de detalhamento:

  • none: as mensagens de bloqueio de DDL aparecem somente nos níveis de log do servidor DEBUG1 e inferiores.

  • statement: adiciona saída de LOG para tentativas de aquisição de bloqueio de DDL.

  • acquire_release: registra eventos de aquisição, liberação e recusa de bloqueios, bem como aplicação de bloqueios de DDL remotos em nós pares.

  • peers: oferece detalhes adicionais sobre negociações de bloqueio de DDL entre nós pares.

  • debug; registra em log todas as atividades relacionadas a bloqueios de DDL no nível de LOG.

Para ter mais informações sobre as opções de monitoramento, consulte “Monitoring global DDL locks”.

nota

As alterações nessa configuração entram em vigor quando você a recarrega. Não é necessário reiniciar o servidor.

Parâmetros adicionais da extensão pgactive

A tabela a seguir apresenta as opções de configuração internas e menos frequentemente usadas disponíveis para a extensão pgactive.

Parâmetro

Unidade

Padrão

Descrição

pgactive.debug_apply_delay

integer

Define um atraso de apply (em milissegundos) para conexões configuradas que não têm um atraso de apply explícito na respectiva entrada pgactive.pgactive_connections. Esse atraso é definido durante a criação do nó ou o tempo de junção, e a pgactive não reproduzirá uma transação em nós pares enquanto pelo menos o número especificado de milissegundos não tiver decorrido desde que ela foi confirmada.

Usado principalmente para simular redes de alta latência em ambientes de teste para facilitar a criação de conflitos. Por exemplo, com um atraso de 500 ms nos nós A e B, você terá pelo menos 500 ms para realizar uma inserção conflitante no nó B depois de inserir um valor no nó A.

nota

Requer o recarregamento do servidor ou a reinicialização dos operadores apply para entrar em vigor.

pgactive.connectability_check_duration

integer

Especifica a duração (em segundos) em que um operador de banco de dados tenta estabelecer conexões durante tentativas malsucedidas. O operador faz 1 tentativa de conexão por segundo até ter êxito ou atingir esse valor de tempo limite. Essa configuração é útil quando o mecanismo de banco de dados é iniciado antes de o operador estar pronto para estabelecer conexões.

pgactive.skip_ddl_replication

boolean

on

Controla como as alterações de DDL são replicadas ou tratadas no Amazon RDS com pgactive habilitada. Quando definido como on, o nó processa as alterações de DDL como um nó não pgactive. Os seguintes requisitos se aplicam ao trabalhar com esse parâmetro:

  • Novos nós não podem se juntar a um grupo da pgactive se o respectivo valor de skip_ddl_replication for diferente do nó precedente.

  • Os nós existentes não podem iniciar operadores da pgactive se o valor do parâmetro não corresponder ao nó precedente.

  • Todos os membros da pgactive devem usar o mesmo valor de parâmetro.

Você pode modificar esse parâmetro de duas maneiras com privilégios de superusuário: globalmente e localmente (nível de sessão).

nota

A alteração incorreta desse parâmetro pode desfazer suas configurações de replicação.

pgactive.do_not_replicate

boolean

Esse parâmetro é somente para uso interno. Ao definir esse parâmetro em uma transação, as alterações não são replicadas para outros nós no cluster de banco de dados.

nota

A alteração incorreta desse parâmetro pode desfazer suas configurações de replicação.

pgactive.discard_mismatched_row_attributes

boolean

Esse parâmetro destina-se somente a especialistas. Recomendamos usá-lo somente ao solucionar problemas específicos de replicação. Use esse parâmetro quando:

  • O fluxo de replicação de entrada contiver linhas com mais colunas do que a tabela local.

  • Essas linhas remotas contêm valores não nulos.

Essa configuração substitui a seguinte mensagem de erro e permite que surjam divergências de dados para que a replicação continue: cannot right-pad mismatched attributes; attno %u is missing in local table and remote row has non-null, non-dropped value for this attribute.

nota

A alteração incorreta desse parâmetro pode desfazer suas configurações de replicação.

pgactive.debug_trace_replay

boolean

Quando definido como on, ele emite uma mensagem de log para cada ação remota que os operadores apply subsequentes processam. Os logs incluem:

  • Alterar tipo

  • Nome da tabela afetada

  • Número de alterações desde o início da transação

  • LSN de confirmação da transação

  • Carimbo de data/hora da confirmação

  • Identificador do nó precedente

  • Identificador do nó de encaminhamento (se aplicável)

Os logs também capturam comandos de DDL enfileirados e exclusões de tabela.

para>

Por padrão, os logs não incluem o conteúdo de campos de linha. Para incluir valores de linha nos logs, você deve recompilar com os seguintes sinalizadores habilitados:

  • VERBOSE_INSERT

  • VERBOSE_UPDATE

  • VERBOSE_DELETE

nota

A habilitação dessa configuração de registro em log pode afetar o desempenho. Recomendamos habilitá-la somente quando necessário para solucionar problemas. As alterações nessa configuração entram em vigor quando você a recarrega. Não é necessário reiniciar o servidor.

pgactive.extra_apply_connection_options

Você pode configurar os parâmetros de conexão para todas as conexões de nós pares com nós da pgactive. Esses parâmetros controlam configurações, como keepalives e modos SSL. Por padrão, a pgactive usa os seguintes parâmetros de conexão:

  • connect_timeout=30

  • keepalives=1

  • keepalives_idle=20

  • keepalives_interval=20

  • keepalives_count=5

Para substituir os parâmetros padrão, use o comando semelhante abaixo:

pgactive.extra_apply_connection_options = 'keepalives=0'

As strings de conexão de nós individuais têm precedência sobre essas configurações e sobre as opções de conexão integradas da pgactive. Para ter mais informações sobre formatos de string de conexão, consulte as strings de conexão libpq.

Recomendamos manter as configurações padrão de keepalive habilitadas. Só desabilite os keepalives se você tiver problemas para concluir grandes transações em redes não confiáveis.

nota

Recomendamos manter as configurações padrão de keepalive habilitadas. Só desabilite os keepalives se você tiver problemas para concluir grandes transações em redes não confiáveis. As alterações nessa configuração entram em vigor quando você a recarrega. Não é necessário reiniciar o servidor.

pgactive.init_node_parallel_jobs (int)

Especifica o número de trabalhos paralelos que pg_dump e pg_restore podem usar durante junções de nós lógicos com a função pgactive.pgactive_join_group.

As alterações nessa configuração entram em vigor quando você a recarrega. Não é necessário reiniciar o servidor.

pgactive.max_nodes

int

4

Especifica o número máximo de nós permitidos em um grupo da extensão pgactive. O valor padrão é quatro nós. Você deve considerar o seguinte ao definir o valor desse parâmetro:

  • Todos os nós em um grupo da extensão pgactive devem usar o mesmo valor de parâmetro.

  • Um novo nó não poderá se juntar se o valor do respectivo parâmetro for diferente do nó precedente.

  • Os nós existentes não poderão iniciar operadores da extensão pgactive se o valor do respectivo parâmetro for diferente do nó precedente.

  • Grupos maiores exigem esforços adicionais de monitoramento e manutenção; portanto, defina o valor desse parâmetro de maneira sensata.

Você pode definir esse parâmetro de duas maneiras: no arquivo de configuração e usando o comando ALTER SYSTEM SET.

O valor padrão para esse parâmetro é 4; ou seja, pode haver no máximo quatro nós permitidos no grupo da extensão pgactive em qualquer momento específico.

nota

A alteração entra em vigor após a reinicialização do servidor.

pgactive.permit_node_identifier_getter_function_creation

boolean

Esse parâmetro destina-se somente para uso interno. Quando habilitada, a extensão pgactive permite a criação da função getter do identificador de nó da pgactive.