Monitoraggio della cache di scrittura e degli slot logici per la replica logica di Aurora PostgreSQL - Amazon Aurora

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Monitoraggio della cache di scrittura e degli slot logici per la replica logica di Aurora PostgreSQL

Il monitoraggio della cache di scrittura della replica logica e la gestione degli slot logici migliorano le prestazioni del cluster di database Aurora PostgreSQL. Di seguito, sono riportate ulteriori informazioni sulla cache di scrittura e sugli slot logici.

Monitoraggio della cache di scrittura della replica logica di Aurora PostgreSQL

Per impostazione predefinita, le versioni 14.5, 13.8, 12.12 e 11.17 e successive di Aurora PostgreSQL utilizzano una cache write-through per migliorare le prestazioni per la replica logica. Senza la cache write-through, Aurora PostgreSQL utilizza il livello di archiviazione Aurora nell'implementazione del processo di replica logica nativa di PostgreSQL. Lo fa scrivendo i dati WAL nell'archivio e quindi leggendo i dati dall'archivio per decodificarli e inviarli (replicare) alle destinazioni (sottoscrittori). Questo comportamento può causare rallentamenti durante la replica logica per i cluster database Aurora PostgreSQL.

La cache di scrittura riduce al minimo la dipendenza dal livello di archiviazione Aurora. Invece di scrivere e leggere in modo coerente da questo livello, Aurora PostgreSQL utilizza un buffer per memorizzare nella cache il flusso logico WAL da utilizzare durante il processo di replica, riducendo la necessità di accedere al disco. Questo buffer è la cache nativa di PostgreSQL utilizzata dalla replica logica, identificata nei parametri del cluster di database Aurora PostgreSQL come rds.logical_wal_cache.

Quando usi la replica logica con il cluster database Aurora PostgreSQL per le versioni che supportano la cache write-through, puoi monitorare la percentuale di riscontri della cache per vedere se funziona per il tuo caso d'uso. Per farlo, connettiti all'istanza di scrittura del cluster database Aurora PostgreSQL utilizzando psql e quindi usa la funzione Aurora aurora_stat_logical_wal_cache, come mostrato nell'esempio seguente.

SELECT * FROM aurora_stat_logical_wal_cache();

La funzione restituisce un output come il seguente:

name | active_pid | cache_hit | cache_miss | blks_read | hit_rate | last_reset_timestamp -----------+------------+-----------+------------+-----------+----------+-------------- test_slot1 | 79183 | 24 | 0 | 24 | 100.00% | 2022-08-05 17:39... test_slot2 | | 1 | 0 | 1 | 100.00% | 2022-08-05 17:34... (2 rows)

I valori last_reset_timestamp sono stati abbreviati per garantire la leggibilità. Per ulteriori informazioni su questa funzione, consulta aurora_stat_logical_wal_cache.

Aurora PostgreSQL fornisce le seguenti due funzioni per il monitoraggio della cache write-through.

Se si ritiene che la dimensione della cache WAL regolata automaticamente non sia sufficiente per i carichi di lavoro, è possibile modificare il valore di rds.logical_wal_cache manualmente. Considera i seguenti aspetti:

  • Quando il parametro rds.logical_replication è disabilitato, rds.logical_wal_cache è impostato su zero (0).

  • Quando il parametro rds.logical_replication è abilitato, rds.logical_wal_cache ha il valore predefinito 16 MB.

  • Il parametro rds.logical_wal_cache è statico e richiede il riavvio dell’istanza database per rendere effettive le modifiche. Questo parametro è definito in termini di blocchi da 8 KB. Qualsiasi valore positivo inferiore a 32 KB viene considerato come 32 KB. Per ulteriori informazioni su wal_buffers, consultare Write Ahead Log nella documentazione PostgreSQL.

Gestione degli slot logici per Aurora PostgreSQL

L'attività di streaming viene acquisita nella vista pg_replication_origin_status. Per visualizzare il contenuto di questa vista, è possibile utilizzare la funzione pg_show_replication_origin_status(), come illustrato di seguito:

SELECT * FROM pg_show_replication_origin_status();

Puoi ottenere un elenco degli slot logici utilizzando la seguente query SQL.

SELECT * FROM pg_replication_slots;

Per eliminare uno slot logico, utilizza pg_drop_replication_slot con il nome dello slot, come illustrato nel seguente comando.

SELECT pg_drop_replication_slot('test_slot');