Nếu lưu trữ kho lưu trữ là mối quan tâm, thì bạn có thể chọn tính năng ghi nhật ký lưu trữ nén trong PostgreSQL.
“Archive_command (string)” trong $ PGDATA / postgresql.conf , giống như một lệnh shell để thực thi những gì được truyền trong phần chuỗi để sao chép tệp nguồn hoàn chỉnh (phân đoạn tệp WAL trong $ PGDATA / pg_xlog ) đến điểm đến ( VỊ TRÍ SẮP XẾP ). “String” có thể là bất kỳ thứ gì như shell script (batch trong Windows), các tiện ích nén hệ điều hành và một công cụ đặc biệt pg_compresslog. Trong Windows, cmd.exe sẽ thực thi lệnh được truyền trong archive_command “string”.
Vì chúng tôi đang áp dụng trên nền tảng Windows, điều kiện tiên quyết là:
- Thư mục lưu trữ phải có đầy đủ quyền truy cập của người dùng postgres. (“C:Program FilesPostgreSQL9.2archives” trong trường hợp của tôi)
- Tiện ích GZIP phiên bản Window. Mặc dù có rất nhiều tiện ích nén biến thể windows tốt nhưng tôi đã chọn gzip vì nó hỗ trợ cả trên Linux và Windows.
- Gzip.exe nên có quyền truy cập vào Người dùng Postgres và cả trong PATH. (“C:Program FilesGnuWin32bin” trong trường hợp của tôi).
Giả sử tất cả các điều kiện tiên quyết đã sẵn sàng và bước tiếp theo sẽ là chỉnh sửa tệp $ PGDATA / postgresql.conf và thay đổi các thông số liên quan đến lưu trữ và khởi động lại cụm:
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)
Theo tài liệu PG, các thay đổi đã được thực hiện và khởi động lại cụm, dự kiến từ đây các tệp lưu trữ của tôi sẽ được nén một. Hãy xem nhật ký:
2013-07-26 16:07:22 IST LOG:lệnh lưu trữ không thành công với mã thoát 1
2013-07-26 16:07:22 IST DETAIL:Lệnh lưu trữ không thành công là:"" "C :Tập tin chương trìnhGnuWin32bingzip.exe "-1 <" pg_xlog