Als archiefopslag een probleem is, kunt u de gecomprimeerde archiefregistratiefunctie in PostgreSQL kiezen.
“archive_command(string)” in $PGDATA/postgresql.conf , is als een shell-opdracht om uit te voeren wat in de string-sectie is doorgegeven om het voltooide bronbestand (WAL-bestandssegment in $PGDATA/pg_xlog te kopiëren) ) naar bestemming(ARCHIEF LOCATIE ). "string" kan van alles zijn, zoals shellscript (batch in Windows) zelf, OS-compressiehulpprogramma's en een speciale tool pg_compresslog. In Windows voert cmd.exe de opdracht uit die is doorgegeven in archive_command "string".
Aangezien we op het Windows-platform solliciteren, zijn de volgende vereisten:
- De archiefmap moet volledige postgres-gebruikerstoegang hebben. ("C:Program FilesPostgreSQL9.2archives" in mijn geval)
- Vensterversie GZIP-hulpprogramma. Hoewel er talloze goede compressieprogramma's voor Windows-varianten zijn, heb ik voor gzip gekozen omdat het zowel op Linux als Windows wordt ondersteund.
- Gzip.exe zou toegang moeten hebben tot Postgres User en ook tot PATH. ("C:Program FilesGnuWin32bin" in mijn geval).
Ervan uitgaande dat alle vereisten aanwezig zijn en de volgende stap het bewerken van het bestand $PGDATA/postgresql.conf en het wijzigen van de archiveringsgerelateerde parameters zou moeten zijn en het cluster opnieuw moet opstarten:
wal_level=archive
archive_mode=on
archive_command = '"C:\Program Files\GnuWin32\bin\gzip.exe -1 " < "%p" > "C:\Program Files\PostgreSQL\9.2\archives\%f.gz"'
c:Program FilesPostgreSQL9.2bin>pg_ctl.exe -D ..data start (You can also start from services.msc)
Volgens de PG-documentatie zijn er wijzigingen aangebracht en is het cluster opnieuw gestart, in afwachting dat mijn archieven vanaf nu worden gecomprimeerd. Laten we naar de logs kijken:
2013-07-26 16:07:22 IST LOG:archiefopdracht mislukt met afsluitcode 1
2013-07-26 16:07:22 IST DETAIL:De mislukte archiefopdracht was:"""C :Program FilesGnuWin32bingzip.exe" -1 <"pg_xlog