Configurazione delle impostazioni dei parametri per l’estensione pgactive - Amazon Relational Database Service

Configurazione delle impostazioni dei parametri per l’estensione pgactive

È possibile utilizzare la seguente query per visualizzare tutti i parametri associati all’estensione pgactive.

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

Puoi configurare l’estensione pgactive utilizzando vari parametri. Questi parametri possono essere impostati tramite la AWS Management Console oppure l’interfaccia AWS CLI.

Principali parametri dell’estensione pgactive

La tabella seguente fornisce un riferimento per i parametri principali dell’estensione pgactive:

Parametro

Unità

Predefinita

Descrizione

pgactive.conflict_logging_include_tuples

boolean

Registra le informazioni complete sulla tupla per l’estensione pgactive.

Nota

Per rendere effettive le modifiche apportate, è necessario riavviare il server.

pgactive.log_conflicts_to_table

boolean

Determina se l’estensione pgactive registra i conflitti rilevati nella tabella pgactive.pgactive_conflict_history. Per ulteriori informazioni, consulta la sezione relativa alla registrazione di log dei conflitti per maggiori dettagli.

Nota

Per rendere effettive le modifiche apportate, è necessario riavviare il server.

pgactive.log_conflicts_to_logfile

boolean

Determina se l’estensione pgactive registra i conflitti rilevati nel file di log PostgreSQL. Per ulteriori informazioni, consulta la sezione relativa alla registrazione di log dei conflitti per maggiori dettagli.

Nota

Per rendere effettive le modifiche apportate, è necessario riavviare il server.

pgactive.synchronous_commit

boolean

off

Determina il comportamento di commit per i worker apply pgactive. Se sono disabilitati (off), i worker apply eseguono commit asincroni. Ciò migliora il throughput di PostgreSQL durante le operazioni apply, ma ritarda le conferme di riproduzione all’upstream. Impostarli su off è sempre sicuro ed eviterà che le transazioni vengano perse o ignorate. Questa impostazione influisce solo sulla tempistica del flush su disco sul nodo downstream e sull’invio delle conferme upstream. Il sistema ritarda l’invio delle conferme di replay flush finché non viene eseguito il flush dei commit su disco tramite operazioni non correlate come checkpoint o operazioni periodiche. Tuttavia, se nel nodo upstream il nodo downstream è elencato in synchronous_standby_names, impostando il parametro su off i commit sincroni del nodo upstream impiegheranno più tempo a segnalare l’esito positivo al client. In tal caso, imposta il parametro su on.

Nota

Anche quando questo parametro è impostato su on con nodi elencati in synchronous_standby_names, è comunque possibile che si verifichino conflitti di replica nelle configurazioni attive-attive. Questo accade perché il sistema non dispone del blocco tra i nodi e della gestione globale delle snapshot, il che consente alle transazioni simultanee su nodi diversi di modificare la stessa tupla. Inoltre, le transazioni iniziano la replica solo dopo il commit sul nodo upstream. L’abilitazione del commit sincrono non trasforma l’estensione pgactive in un sistema sempre coerente.

pgactive.temp_dump_directory

string

Definisce il percorso di archiviazione temporaneo richiesto per le operazioni di clonazione del database durante la configurazione iniziale. Questa directory deve essere scrivibile dall’utente postgres e deve disporre di spazio di archiviazione sufficiente per contenere un dump completo del database. Il sistema utilizza questa posizione solo durante la configurazione iniziale del database con operazioni di copia logica. Questo parametro non viene utilizzato da pgactive_init_copy command.

pgactive.max_ddl_lock_delay

milliseconds

-1

Specifica il tempo di attesa massimo per il blocco DDL prima dell’interruzione forzata delle transazioni di scrittura simultanee. Il valore predefinito è -1, che adotta il valore impostato in max_standby_streaming_delay. Questo parametro accetta unità temporali. Ad esempio, puoi impostarlo su 10 secondi per 10 secondi. Durante questo periodo di attesa, il sistema tenta di acquisire blocchi DDL in attesa del commit o del rollback delle transazioni di scrittura in corso. Per ulteriori informazioni, consulta la sezione sul blocco DDL.

pgactive.ddl_lock_timeout

milliseconds

-1

Specifica il lasso di tempo che un tentativo di blocco DDL attende per ottenere il blocco. Il valore predefinito è -1, che utilizza il valore specificato in lock_timeout. Puoi impostare questo parametro utilizzando unità di tempo come 10s per 10 secondi. Questo timer controlla solo il periodo di attesa per ottenere un blocco DDL. Una volta che il sistema ottiene il blocco e inizia l’operazione DDL, il timer si arresta. Questo parametro non limita la durata totale di mantenimento di un blocco DDL né il tempo complessivo dell’operazione DDL. Per controllare la durata totale dell’operazione, usa statement_timeout invece. Per ulteriori informazioni, consulta la sezione sul blocco DDL.

pgactive.debug_trace_ddl_locks_level

boolean

Sostituisce il livello di log di debug predefinito per le operazioni di blocco DDL nell’estensione pgactive. Se configurata, questa impostazione fa sì che i messaggi relativi al blocco DDL vengano emessi al livello di debug del LOG anziché al livello predefinito. Utilizza questo parametro per monitorare l’attività di blocco DDL senza abilitare i livelli di log DEBUG1 DEBUG2 dettagliati sull’intero server.

Livelli di log disponibili, in ordine crescente di dettaglio:

  • none: i messaggi di blocco DDL vengono visualizzati solo a livello di log del server DEBUG1 e a livelli inferiori.

  • statement: aggiunge l’output LOG per i tentativi di acquisizione del blocco DDL.

  • acquire_release: registra l’acquisizione di blocchi, rilascio, eventi di declinazione e applicazioni di nodi peer dei blocchi DDL remoti.

  • peers: fornisce dettagli aggiuntivi sulle negoziazioni di blocco DDL tra nodi peer.

  • debug: registra tutte le attività relative al blocco DDL a livello di LOG.

Per ulteriori informazioni sulle opzioni di monitoraggio, consulta la sezione sul monitoraggio dei blocchi DDL globali.

Nota

Le modifiche a questa impostazione vengono eseguite quando ricarichi la configurazione. Non è necessario riavviare il server.

Parametri aggiuntivi dell’estensione pgactive

La tabella seguente presenta le opzioni di configurazione interne e utilizzate meno di frequente disponibili per l’estensione pgactive.

Parametro

Unità

Predefinita

Descrizione

pgactive.debug_apply_delay

integer

Imposta un ritardo di applicazione (in millisecondi) per le connessioni configurate che non hanno un ritardo di applicazione esplicito nella voce pgactive.pgactive_connections. Questo ritardo viene impostato durante la creazione del nodo o al momento del join e pgactive non riprodurrà una transazione sui nodi peer finché non sarà trascorso almeno il numero di millisecondi specificato dal momento in cui è stato eseguito il commit.

Utilizzato principalmente per simulare reti ad alta latenza in ambienti di test per facilitare la creazione di conflitti. Ad esempio, con un ritardo di 500 ms sui nodi A e B, hai almeno 500 ms per eseguire un inserimento in conflitto sul nodo B dopo aver inserito un valore sul nodo A.

Nota

Per rendere effettivi i worker apply, è necessario ricaricare o riavviare il server.

pgactive.connectability_check_duration

integer

Specifica la durata (in secondi) del tempo che un worker del database attende per stabilire connessioni durante i tentativi falliti. Il worker effettua un tentativo di connessione al secondo finché non riesce o non raggiunge questo valore di timeout. Questa impostazione è utile quando il motore del database si avvia prima che il worker sia pronto a stabilire delle connessioni.

pgactive.skip_ddl_replication

boolean

on

Controlla il modo in cui le modifiche DDL vengono replicate o gestite in Amazon RDS con il parametro pgactive abilitato. Se impostato su on, il nodo elabora le modifiche DDL come un nodo non-pgactive. Quando si lavora con questo parametro, vengono applicati i seguenti requisiti:

  • I nuovi nodi non si possono unire a un gruppo se il loro valore skip_ddl_replication è diverso dal nodo upstream.

  • I nodi esistenti non possono avviare i worker pgactive se il valore del loro parametro non corrisponde al nodo upstream.

  • Tutti i membri pgactive devono utilizzare lo stesso valore del parametro.

Puoi modificare questo parametro in due modi con i privilegi di super utente: globalmente e localmente (a livello di sessione).

Nota

Modificare questo parametro in modo errato può comportare l’interruzione delle configurazioni di replica.

pgactive.do_not_replicate

boolean

Questo parametro è solo per l’uso interno. Quando imposti questo parametro in una transazione, le modifiche non vengono replicate su altri nodi del cluster di database.

Nota

Modificare questo parametro in modo errato può comportare l’interruzione delle configurazioni di replica.

pgactive.discard_mismatched_row_attributes

boolean

Questo parametro è destinato esclusivamente all’uso da parte di specialisti. Si consiglia di utilizzare questo parametro solo per la risoluzione di problemi di replica specifici. Utilizza questo parametro quando:

  • Il flusso di replica in entrata contiene righe con più colonne rispetto alla tabella locale.

  • Queste righe remote contengono valori non nulli.

Questa impostazione sovrascrive il messaggio di errore seguente e consente la divergenza dei dati per fare in modo che la replica continui: 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

Modificare questo parametro in modo errato può comportare l’interruzione delle configurazioni di replica.

pgactive.debug_trace_replay

boolean

Se impostato su on, emette un messaggio di log per ogni azione remota che i worker apply downstream elaborano. I log includono:

  • Tipo di modifica

  • Nome della tabella interessata

  • Numero di modifiche dall’inizio della transazione

  • LSN di commit della transazione

  • Timestamp del commit

  • Identificatore del nodo upstream

  • Identificatore del nodo di inoltro (se applicabile)

I log registrano anche i comandi DDL in coda e le eliminazioni di tabelle.

para>

Per impostazione predefinita, i log non includono il contenuto dei campi riga. Per includere i valori delle righe nei log, è necessario eseguire di nuovo la compilazione con i seguenti flag abilitati:

  • VERBOSE_INSERT

  • VERBOSE_UPDATE

  • VERBOSE_DELETE

Nota

L’attivazione di questa impostazione di log può influire sulle prestazioni. Si consiglia di abilitarla solo se necessario per la risoluzione dei problemi. Le modifiche a questa impostazione vengono eseguite quando ricarichi la configurazione. Non è necessario riavviare il server.

pgactive.extra_apply_connection_options

Puoi configurare i parametri di connessione per tutte le connessioni tra nodi peer con nodi pgactive. Questi parametri controllano impostazioni quali keepalives e modalità SSL. Per impostazione predefinita, pgactive utilizza i seguenti parametri di connessione:

  • connect_timeout=30

  • keepalives=1

  • keepalives_idle=20

  • keepalives_interval=20

  • keepalives_count=5

Per sovrascrivere i parametri predefiniti, utilizza il seguente comando simile:

pgactive.extra_apply_connection_options = 'keepalives=0'

Le stringhe di connessione dei singoli nodi hanno la precedenza su entrambe queste impostazioni e sulle opzioni di connessione integrate di pgactive. Per ulteriori informazioni sui formati delle stringhe di connessione, consulta la sezione sulle stringhe di connessione libpq.

Consigliamo di mantenere abilitate le impostazioni keepalive predefinite. Disabilita keepalive solo se riscontri problemi con il completamento di transazioni di grandi dimensioni su reti inaffidabili.

Nota

Consigliamo di mantenere abilitate le impostazioni keepalive predefinite. Disabilita keepalive solo se riscontri problemi con il completamento di transazioni di grandi dimensioni su reti inaffidabili. Le modifiche a questa impostazione vengono eseguite quando ricarichi la configurazione. Non è necessario riavviare il server.

pgactive.init_node_parallel_jobs (int)

Specifica il numero di lavori paralleli che pg_dump e pg_restore possono utilizzare durante l’unione del nodo logico con la funzione pgactive.pgactive_join_group.

Le modifiche a questa impostazione vengono eseguite quando ricarichi la configurazione. Non è necessario riavviare il server.

pgactive.max_nodes

int

4

Specifica il numero massimo di nodi permessi in un gruppo di estensioni pgactive. Il valore predefinito è 4 nodi. È necessario considerare quanto segue quando si imposta il valore di questo parametro:

  • Tutti i nodi in un gruppo di estensioni pgactive devono utilizzare lo stesso valore del parametro.

  • Non è possibile unire un nuovo nodo se il valore del suo parametro è diverso dal nodo upstream.

  • I nodi esistenti non possono avviare i worker dell’estensione pgactive se il valore del loro parametro è diverso dal nodo upstream.

  • I gruppi più grandi richiedono sforzi di monitoraggio e manutenzione aggiuntivi, quindi è opportuno utilizzare il valore di questo parametro con saggezza.

Puoi impostare questo parametro in due modi: nel file di configurazione, utilizzando il comando ALTER SYSTEM SET

Il valore predefinito per questo parametro è 4, il che significa che possono essere consentiti al massimo 4 nodi nel gruppo di estensioni pgactive in qualsiasi momento.

Nota

La modifica ha effetto dopo il riavvio del server.

pgactive.permit_node_identifier_getter_function_creation

boolean

Questo parametro è destinato esclusivamente all’uso interno. Se abilitata, l’estensione pgactive consente la creazione della funzione getter dell’identificatore del nodo pgactive.