PostgresStreamReplication » Cronologia » Versione 1
Simone Piccardi, 21-11-2019 12:34
| 1 | 1 | Simone Piccardi | h1. Replicazione di PostgresSQL |
|---|---|---|---|
| 2 | |||
| 3 | *ATTENZIONE*: questo articolo è una bozza, al momento è nello stato di insieme di appunti sparsi senza un'ordine specifico |
||
| 4 | |||
| 5 | PostgreSQL supporta diversi meccanismi di replicazione, tratteremo in questo articolo solo uno di questi, la cosiddetta _streaming replication_. |
||
| 6 | |||
| 7 | |||
| 8 | h2. Come ripristinare una replica |
||
| 9 | |||
| 10 | Se per un qualunque motivo la _streaming replication_ si interrompe (la ragione più comune è che non si è previsto sul primario la retention di un sufficiente numero di segmenti WAL a coprire le differenze da trasmettere al secondario) occorre ripristinare manualmente da zero la stessa. |
||
| 11 | |||
| 12 | Per farlo è disponibile, a partire dalla versione 9.4 di PostgreSQL il comando @pg_basebackup@ (si legga la documentazione su https://www.postgresql.org/docs/10/app-pgbasebackup.html) che consente di eseguire il ripristino direttamente dal secondario. I passi da seguire per farlo sono i seguenti: |
||
| 13 | |||
| 14 | * fermare postgresql: |
||
| 15 | <pre> |
||
| 16 | service postgresql stop |
||
| 17 | </pre> |
||
| 18 | * vuotare la directory dei dati (o spostarne i contenuti altrove): |
||
| 19 | <pre> |
||
| 20 | mkdir oldpgdir/ |
||
| 21 | mv /var/lib/postgresql/9.6/main/* oldpgdir/ |
||
| 22 | </pre> |
||
| 23 | * collegarsi con l'utente postgres: |
||
| 24 | <pre> |
||
| 25 | su postgres |
||
| 26 | </pre> |
||
| 27 | * ripristinare il DB e la replicazione con: |
||
| 28 | <pre> |
||
| 29 | pg_basebackup -h IP.DEL.DB.MASTER -U replication -D /var/lib/postgresql/9.6/main/ -P -Xs -R |
||
| 30 | </pre> |
||
| 31 | quest'ultimo comando chiederà la password dell'utente @replication@ usato per gestire la replicazione e provvederà alla ricostruzione. |