PostgreSQL - Folyamatos archiválás
A RoolWikiBÓL
2007. szeptember 11., 13:01 változat (szerkesztés) 212.40.118.115 (Vita) ← Előző változtatások |
2007. szeptember 11., 13:23 változat (szerkesztés) (undo) 212.40.118.115 (Vita) Következő változtatások → |
||
3. sor: | 3. sor: | ||
A cél egy másik számítógépre duplikálni az adatbázist, úgy hogy folyamatosan - a lehető leginkább - naprakész legyen. | A cél egy másik számítógépre duplikálni az adatbázist, úgy hogy folyamatosan - a lehető leginkább - naprakész legyen. | ||
Ha a fő rendszer bármilyen hiba miatt működésképtelenné válik, akkor ez a helyébe léphet. Ebben a mentett adatbázisban nem engedélyezzük a módosítást, de a lekérdezést igen. Így akár tehermentesítheti a fő rendszert pl a több hónapot érintő összesítések lekérdezésekor. | Ha a fő rendszer bármilyen hiba miatt működésképtelenné válik, akkor ez a helyébe léphet. Ebben a mentett adatbázisban nem engedélyezzük a módosítást, de a lekérdezést igen. Így akár tehermentesítheti a fő rendszert pl a több hónapot érintő összesítések lekérdezésekor. | ||
- | |||
=== Engedélyezzük a WAL log archiválást === | === Engedélyezzük a WAL log archiválást === | ||
30. sor: | 29. sor: | ||
=== Készíteni kell egy alap mentést === | === Készíteni kell egy alap mentést === | ||
- | # működjön a wal logok archiválása! | + | * Működjön a wal logok archiválása! |
- | # Be kell lépni a backup módba | + | * Be kell lépni a backup módba. |
- | SELECT pg_start_backup('label'); | + | select pg_start_backup('label'); |
- | # Fájlrendszer szintű mentést kell készíteni | + | * Fájlrendszer szintű mentést kell készíteni |
tar cjf data_wal_start.tbz2 data | tar cjf data_wal_start.tbz2 data | ||
- | # backup mód vége | + | * backup mód vége |
select pg_stop_backup(); | select pg_stop_backup(); | ||
Befejezi a backup módot. Kiírja az utolsó wal szegmens számát. Eddig felhasználva a wal szegmenseket (azaz log fájlokat) a stop backuppal azonos állapotú adatbázis jön majd létre. | Befejezi a backup módot. Kiírja az utolsó wal szegmens számát. Eddig felhasználva a wal szegmenseket (azaz log fájlokat) a stop backuppal azonos állapotú adatbázis jön majd létre. | ||
+ | |||
+ | === Létrehozzuk a backup adatbázist === | ||
+ | |||
+ | * PostgreSQL telepítése a backup gépre. (Ugyanaz a verzió legyen mint a forrás rendszeren!) | ||
+ | * A data_wal_start.tbz2 kicsomagolása | ||
+ | ** Töröljük a pg_log tartalmát | ||
+ | ** Töröljük a serverlog, postgresql.pid fájlt! | ||
+ | ** Szerkesszük át a postgresql.conf fáljt: ne legyen bekapcsolva a wal archiválás! | ||
+ | archive_command = '' | ||
+ | archive_timeout = 0 | ||
+ | |||
+ | * A data mappában létre kell hozni egy recovery.conf állományt. Ez tartalmazza a rendszer visszaállítást vezérlő paramétereket. Nekünk most a következő kell: | ||
+ | |||
+ | restore_command = 'scp 192.168.1.13:/home/postgres/wal_ahead_log_8.2.3/%f %p' | ||
+ | |||
+ | * Indítsuk el a szervert! |
2007. szeptember 11., 13:23 változat
Ez a folyamatos archiválás teszt és dokumentáció a 23.3. Continuous Archiving and Point-In-Time Recovery (PITR) című postgresql dokumentáció alapján készült.
A cél egy másik számítógépre duplikálni az adatbázist, úgy hogy folyamatosan - a lehető leginkább - naprakész legyen. Ha a fő rendszer bármilyen hiba miatt működésképtelenné válik, akkor ez a helyébe léphet. Ebben a mentett adatbázisban nem engedélyezzük a módosítást, de a lekérdezést igen. Így akár tehermentesítheti a fő rendszert pl a több hónapot érintő összesítések lekérdezésekor.
Engedélyezzük a WAL log archiválást
A postgresql.conf fájlban az archive_command változónak kell értéket adni. pl:
archive_command = ' echo %f >> /home/postgres/wal_ahead_log_8.2.3/date && date >> /home/postgres/wal_ahead_log_8.2.3/date && test ! -f /home/postgres/wal_ahead_log_8.2.3/%f && echo copy >> /home/postgres/wal_ahead_log_8.2.3/date && cp %p /home/postgres/wal_ahead_log_8.2.3/%f '
(egy sorba kell írni a parancsot!) Elő lehet írni, hogy ha egy megadott időn belül nem készül wal log fájl, akkor készítse el:
archive_timeout = 1h
A wal_ahead_log_8.2.3 mappában összegyűlt fájlokat majd egy másik hoszton működő szerver fogja magához másolni, amikor szüksége van rá. Ezt az scp paranccsal teszi. Mivel a másolás a háttérben történik, be kell állítani, hogy az scp ne kérjen jelszót.
Újra kell olvastatni a postgresql-el a konfigurációs fájlokat.
/etc/init.d/postgresql8.2.3 reload
Készíteni kell egy alap mentést
- Működjön a wal logok archiválása!
- Be kell lépni a backup módba.
select pg_start_backup('label');
- Fájlrendszer szintű mentést kell készíteni
tar cjf data_wal_start.tbz2 data
- backup mód vége
select pg_stop_backup();
Befejezi a backup módot. Kiírja az utolsó wal szegmens számát. Eddig felhasználva a wal szegmenseket (azaz log fájlokat) a stop backuppal azonos állapotú adatbázis jön majd létre.
Létrehozzuk a backup adatbázist
- PostgreSQL telepítése a backup gépre. (Ugyanaz a verzió legyen mint a forrás rendszeren!)
- A data_wal_start.tbz2 kicsomagolása
- Töröljük a pg_log tartalmát
- Töröljük a serverlog, postgresql.pid fájlt!
- Szerkesszük át a postgresql.conf fáljt: ne legyen bekapcsolva a wal archiválás!
archive_command = archive_timeout = 0
- A data mappában létre kell hozni egy recovery.conf állományt. Ez tartalmazza a rendszer visszaállítást vezérlő paramétereket. Nekünk most a következő kell:
restore_command = 'scp 192.168.1.13:/home/postgres/wal_ahead_log_8.2.3/%f %p'
- Indítsuk el a szervert!