Questo è il comando pg_rewind che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre molteplici workstation online gratuite come Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS
PROGRAMMA:
NOME
pg_rewind - sincronizza una directory di dati PostgreSQL con un'altra directory di dati che era
biforcuto dal primo
SINOSSI
pg_rewind [opzione...] {-D | --target-pgdata} elenco {--source-pgdata=elenco |
--server-sorgente=costrizione}
DESCRIZIONE
pg_rewind è uno strumento per sincronizzare un cluster PostgreSQL con un'altra copia dello stesso
cluster, dopo che le tempistiche dei cluster si sono divise. Uno scenario tipico è quello di portare un
il vecchio server master torna online dopo il failover, come standby che segue il nuovo master.
Il risultato equivale a sostituire la directory dei dati di destinazione con quella di origine. Tutto
i file vengono copiati, inclusi i file di configurazione. Il vantaggio di pg_rewind rispetto a prendere a
il nuovo backup di base, o strumenti come rsync, è che pg_rewind non richiede la lettura
tutti i file non modificati nel cluster. Ciò lo rende molto più veloce quando il database è grande
e solo una piccola parte di esso differisce tra i grappoli.
pg_rewind esamina le cronologie della sequenza temporale dei cluster di origine e di destinazione per determinare
il punto in cui si sono separati e si aspetta di trovare WAL nel pg_xlog del cluster di destinazione
directory che arriva fino al punto di divergenza. Nel tipico failover
scenario in cui il cluster target è stato chiuso subito dopo la divergenza, non è una cosa
problema, ma se il cluster di destinazione è stato eseguito per molto tempo dopo la divergenza, il vecchio
I file WAL potrebbero non essere più presenti. In tal caso, possono essere copiati manualmente dal
archivio WAL nella directory pg_xlog. Recupero di file mancanti da un archivio WAL
automaticamente non è attualmente supportato.
Quando il server di destinazione viene avviato per la prima volta dopo aver eseguito pg_rewind, lo farà
vai in modalità di ripristino e riproduci tutti i WAL generati nel server di origine dopo il punto di
divergenza. Se parte del WAL non era più disponibile nel server di origine quando pg_rewind
è stato eseguito e quindi non può essere copiato dalla sessione pg_rewind, deve essere eseguito
disponibile all'avvio del server di destinazione. Ciò può essere fatto creando un
recovery.conf nella directory dei dati di destinazione con un adatto comando_ripristina.
pg_rewind richiede che il server di destinazione abbia l'opzione wal_log_hints abilitata
in postgresql.conf o che i checksum dei dati sono stati abilitati quando il cluster è stato inizializzato
con initdb. Nessuno di questi è attualmente attivo per impostazione predefinita. full_page_writes deve anche essere
abilitato. Questa è l'impostazione predefinita.
VERSIONI
pg_rewind accetta i seguenti argomenti della riga di comando:
-D elenco
--target-pgdata=elenco
Questa opzione specifica la directory dei dati di destinazione sincronizzata con l'origine.
Il server di destinazione deve chiudersi in modo pulito prima di eseguire pg_rewind
--source-pgdata=elenco
Specifica il percorso alla directory dei dati del server di origine, per sincronizzare il target
insieme a. quando --source-pgdata viene utilizzato, il server di origine deve essere spento in modo pulito.
--server-sorgente=costrizione
Specifica una stringa di connessione libpq per connettersi al server PostgreSQL di origine a
sincronizzare il target con. La connessione deve essere normale (non replicata)
connessione con accesso superutente. Il server deve essere attivo e funzionante e non deve essere
in modalità di ripristino.
-n
--funzionamento a secco
Fai tutto tranne che modificare effettivamente la directory di destinazione.
-P
--progresso
Consente la segnalazione dei progressi. L'attivazione di questa opzione fornirà un progresso approssimativo
report durante la copia dei dati dal cluster di origine.
- debug
Stampa un output di debug dettagliato che è principalmente utile per il debug degli sviluppatori
pg_rewind.
-V
--versione
Visualizza le informazioni sulla versione, quindi esci.
-?
--Aiuto
Mostra aiuto, quindi esci.
AMBIENTE
Quando --server-sorgente viene utilizzata l'opzione, pg_rewind utilizza anche le variabili di ambiente
supportato da libpq (vedere la Sezione 31.14, «Variabili d'ambiente», nella documentazione).
NOTE
Come it lavori
L'idea di base è copiare tutto dal nuovo cluster al vecchio cluster, tranne
i blocchi che sappiamo essere gli stessi.
1. Scansiona il log WAL del vecchio cluster, partendo dall'ultimo checkpoint prima del
punto in cui la cronologia della sequenza temporale del nuovo cluster si è biforcata dal vecchio cluster. Per
ogni record WAL, prendere nota dei blocchi di dati che sono stati toccati. Questo produce un elenco
di tutti i blocchi di dati che sono stati modificati nel vecchio cluster, dopo il nuovo cluster
biforcuto.
2. Copiare tutti i blocchi modificati dal nuovo cluster al vecchio cluster.
3. Copiare tutti gli altri file come clog e file di configurazione dal nuovo cluster al
vecchio cluster, tutto tranne i file di relazione.
4. Applicare il WAL dal nuovo cluster, a partire dal checkpoint creato al failover.
(A rigor di termini, pg_rewind non applica il WAL, crea solo un'etichetta di backup
file che indica che quando PostgreSQL viene avviato, inizierà la riproduzione da quello
checkpoint e applicare tutti i WAL richiesti.)
Usa pg_rewind online usando i servizi onworks.net