Ik heb hier ene caldav server met postgresql backend. Om de een of andere reden is een agenda van een user verdwenen. De server draait met archive_mode = on in postgresql.conf en een timeout van 24 uur. Ik heb een backup van de originele database en alle WAL's van de laatste 18 maanden. Het lukt me echter niet om een recovery uit te voeren. Ik wil terug naar de status van voor ca. 20 augustus 2011.
Ik heb (zover ik weet) alles precies volgens de manpages gedaan, maar ik loop vast bij het terugzetten van de originele database.
poging 1:
- de /var/lib/postgresql/8.3/main folder verwijderen
- nieuwe main folder aanmaken en als user postgres:
- postgresql starten (en hier gaat het volgens mij mis)
- terugzetten van de originele db als user postgres:
- postgresql stoppen
- recovery script aanmaken /var/lib/postgresql/8.3/main/recovery.conf en verwijzen naar backup bestanden:
-postgresql starten
Dan krijg ik in de logfiles de volgende errors:
Volgens mij omdat door de start van de server een nieuwe xlog-entry aangemaakt wordt waardoor de WAL's niet consistent meer zijn.
Tweede poging:
- de /var/lib/postgresql/8.3/main folder verwijderen
- nieuwe main folder aanmaken en als user postgres:
- terugzetten van de originele db door de inhoud van base folder uit een .gz bestand terug te zetten.
- recovery script aanmaken /var/lib/postgresql/8.3/main/recovery.conf en verwijzen naar backup bestanden:
-postgresql starten
Dit lijkt op het eerste gezicht goed te gaan, geen FATAL of PANIC in de log-files, maar de database structuur wordt niet aangemaakt.
Wat doe ik fout?
Ik heb (zover ik weet) alles precies volgens de manpages gedaan, maar ik loop vast bij het terugzetten van de originele database.
poging 1:
- de /var/lib/postgresql/8.3/main folder verwijderen
- nieuwe main folder aanmaken en als user postgres:
code:
1
| initdb -d /var/lib/postgresql/8.3/main |
- postgresql starten (en hier gaat het volgens mij mis)
- terugzetten van de originele db als user postgres:
code:
1
| psql -f backup.dump postgres |
- postgresql stoppen
- recovery script aanmaken /var/lib/postgresql/8.3/main/recovery.conf en verwijzen naar backup bestanden:
code:
1
2
3
| restore_command = 'cp /BACKUP/davical/postgresql/%f %p' recovery_target_time = '2011-08-20 22:39:00 EST' recovery_target_inclusive = 'false' |
-postgresql starten
Dan krijg ik in de logfiles de volgende errors:
code:
1
2
3
4
5
6
7
8
| 2011-08-26 15:31:47 CEST LOG: database system was shut down at 2011-08-26 15:31:40 CEST 2011-08-26 15:31:47 CEST LOG: could not open file "pg_xlog/000000010000000000000000" (log file 0, segment 0): No such file or directory 2011-08-26 15:31:47 CEST LOG: invalid primary checkpoint record 2011-08-26 15:31:47 CEST LOG: could not open file "pg_xlog/000000010000000000000000" (log file 0, segment 0): No such file or directory 2011-08-26 15:31:47 CEST LOG: invalid secondary checkpoint record 2011-08-26 15:31:47 CEST PANIC: could not locate a valid checkpoint record 2011-08-26 15:31:47 CEST LOG: startup process (PID 6193) was terminated by signal 6: Aborted 2011-08-26 15:31:47 CEST LOG: aborting startup due to startup process failure |
Volgens mij omdat door de start van de server een nieuwe xlog-entry aangemaakt wordt waardoor de WAL's niet consistent meer zijn.
Tweede poging:
- de /var/lib/postgresql/8.3/main folder verwijderen
- nieuwe main folder aanmaken en als user postgres:
code:
1
| initdb -d /var/lib/postgresql/8.3/main |
- terugzetten van de originele db door de inhoud van base folder uit een .gz bestand terug te zetten.
- recovery script aanmaken /var/lib/postgresql/8.3/main/recovery.conf en verwijzen naar backup bestanden:
code:
1
2
3
| restore_command = 'cp /BACKUP/davical/postgresql/%f %p' recovery_target_time = '2011-08-20 22:39:00 EST' recovery_target_inclusive = 'false' |
-postgresql starten
Dit lijkt op het eerste gezicht goed te gaan, geen FATAL of PANIC in de log-files, maar de database structuur wordt niet aangemaakt.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| 2011-08-26 16:59:07 CEST LOG: database system was shut down at 2011-08-26 16:54:54 CEST 2011-08-26 16:59:07 CEST LOG: starting archive recovery 2011-08-26 16:59:07 CEST LOG: restore_command = 'cp /BACKUP/davical/postgresql/%f %p' 2011-08-26 16:59:07 CEST LOG: recovery_target_time = '2011-08-21 05:39:00+02' 2011-08-26 16:59:07 CEST LOG: recovery_target_inclusive = false cp: cannot stat `/BACKUP/davical/postgresql/00000001.history': No such file or directory cp: cannot stat `/BACKUP/davical/postgresql/000000010000000000000000': No such file or directory 2011-08-26 16:59:07 CEST LOG: automatic recovery in progress 2011-08-26 16:59:07 CEST LOG: record with zero length at 0/440C10 2011-08-26 16:59:07 CEST LOG: redo is not required cp: cannot stat `/BACKUP/davical/postgresql/000000010000000000000000': No such file or directory cp: cannot stat `/BACKUP/davical/postgresql/00000002.history': No such file or directory 2011-08-26 16:59:07 CEST LOG: selected new timeline ID: 2 cp: cannot stat `/BACKUP/davical/postgresql/00000001.history': No such file or directory 2011-08-26 16:59:08 CEST LOG: incomplete startup packet 2011-08-26 16:59:08 CEST LOG: archive recovery complete 2011-08-26 16:59:08 CEST LOG: autovacuum launcher started 2011-08-26 16:59:08 CEST LOG: database system is ready to accept connections 2011-08-26 16:59:08 CEST LOG: archive command failed with exit code 1 2011-08-26 16:59:08 CEST DETAIL: The failed archive command was: /usr/local/bin/pg_backup pg_xlog/00000002.history 00000002.history 2011-08-26 16:59:09 CEST LOG: archive command failed with exit code 1 2011-08-26 16:59:09 CEST DETAIL: The failed archive command was: /usr/local/bin/pg_backup pg_xlog/00000002.history 00000002.history 2011-08-26 16:59:10 CEST LOG: archive command failed with exit code 1 2011-08-26 16:59:10 CEST DETAIL: The failed archive command was: /usr/local/bin/pg_backup pg_xlog/00000002.history 00000002.history 2011-08-26 16:59:10 CEST WARNING: transaction log file "00000002.history" could not be archived: too many failures |
Wat doe ik fout?
[ Voor 26% gewijzigd door GA!S op 26-08-2011 17:08 ]
de betaler vervuilt