postgresql
Alta disponibilità di PostgreSQL
Ricerca…
Replica in PostgreSQL
Configurazione del server primario
Requisiti:
- Utente di replica per attività di replica
- Directory per memorizzare gli archivi WAL
Crea utente di replica
createuser -U postgres replication -P -c 5 --replication
+ option -P will prompt you for new password + option -c is for maximum connections. 5 connections are enough for replication + -replication will grant replication privileges to the user
Creare una directory di archivio nella directory dei dati
mkdir $PGDATA/archive
Modifica il file pg_hba.conf
Questo è il file di autenticazione di base host, contiene le impostazioni per l'autocertificazione del client. Aggiungi sotto voce:
#hosttype database_name user_name hostname/IP method host replication replication <slave-IP>/32 md5
Modifica il file postgresql.conf
Questo è il file di configurazione di PostgreSQL.
wal_level = hot_standby
Questo parametro decide il comportamento del server slave.
`hot_standby` logs what is required to accept read only queries on slave server. `streaming` logs what is required to just apply the WAL's on slave. `archive` which logs what is required for archiving.
archive_mode=on
Questo parametro consente di inviare segmenti WAL alla posizione di archiviazione utilizzando il parametro
archive_command
.archive_command = 'test ! -f /path/to/archivedir/%f && cp %p /path/to/archivedir/%f'
Fondamentalmente, ciò che sopra
archive_command
fa è copiare i segmenti WAL nella directory di archivio.wal_senders = 5
Questo è il numero massimo di processi WAL del mittente.Ora riavvia il server primario.
Backup del server di primay sul server slave
Prima di apportare modifiche al server, interrompere il server primario.
Importante: non riavviare il servizio finché non sono stati completati tutti i passaggi di configurazione e backup. È necessario aprire il server di standby in uno stato in cui è pronto per essere un server di backup. Ciò significa che tutte le impostazioni di configurazione devono essere installate e che i database devono essere già sincronizzati. Altrimenti, la replica dello streaming non verrà avviata
Ora esegui l'utilità pg_basebackup
pg_basebackup
utilitàpg_basebackup
copia i dati dalla directory dei dati del server primario nella directory dei dati slave.$ pg_basebackup -h <primary IP> -D /var/lib/postgresql/<version>/main -U replication -v -P --xlog-method=stream
-D: This is tells pg_basebackup where to the initial backup
-h: Specifies the system where to look for the primary server
-xlog-method=stream: This will force the pg_basebackup to open another connection and stream enough xlog while backup is running.
It also ensures that fresh backup can be started without failing back to using an archive.
Configurazione del server di standby
Per configurare il server di standby, modificherai postgresql.conf e creerai un nuovo file di configurazione denominato recovery.conf.
hot_standby = on
Questo specifica se è possibile eseguire query durante il ripristino
Creazione del file recovery.conf
standby_mode = on
Impostare la stringa di connessione sul server primario. Sostituire con l'indirizzo IP esterno del server primario. Sostituire con la password per l'utente denominato replica
`primary_conninfo = 'host = port = 5432 user = password di replica ='
(Opzionale) Imposta la posizione del file di trigger:
trigger_file = '/tmp/postgresql.trigger.5432'
Il percorso
trigger_file
specificato è la posizione in cui è possibile aggiungere un file quando si desidera che il sistematrigger_file
iltrigger_file
sul server di standby. La presenza del file "attiva" il failover. In alternativa, è possibile utilizzare il comando pg_ctl promote per attivare il failover.
Avvia il server di standby
Ora hai tutto a posto e pronto per richiamare il server di standby
Attribuzione
Questo articolo è sostanzialmente derivato da e attribuito a Come impostare PostgreSQL per la disponibilità elevata e la replica con Hot Standby , con piccole modifiche nella formattazione ed esempi e alcuni testi cancellati. La fonte è stata pubblicata sotto Creative Commons Public License 3.0 , che viene mantenuta qui.