sql >> Databáze >  >> RDS >> PostgreSQL

Logy komprimovaného archivu PostgreSQL ve Windows

Mnozí blogovali a křiklavě nabízeli, jak komprimovat archivní protokoly v PostgreSQL, chci se podělit o jednu krátkou verzi z mého konce, která je na Windows.

Pokud jde o ukládání archivů, můžete si vybrat funkci protokolování komprimovaného archivu v PostgreSQL.

„archive_command(string)“ v $PGDATA/postgresql.conf , je jako příkaz shellu, který provede to, co je předáno v sekci řetězce, aby se zkopíroval dokončený zdrojový soubor (segment souboru WAL v $PGDATA/pg_xlog ) do cíle (MÍSTO ARCHIVU ). „string“ může být cokoli jako samotný skript shellu (dávka ve Windows), nástroje pro kompresi OS a speciální nástroj pg_compresslog. Ve Windows provede cmd.exe příkaz předaný v archive_command „string“.

Protože se přihlašujeme na platformě Windows, předběžné požadavky jsou:

  1. Archivní adresář by měl mít plný uživatelský přístup postgres. (v mém případě „C:Program FilesPostgreSQL9.2archives“)
  2. Verze okna nástroje GZIP. Přestože existuje mnoho dobrých kompresních nástrojů pro varianty Windows, zvolil jsem gzip, protože je podporován v Linuxu i ve Windows.
  3. Gzip.exe by měl mít přístup k Postgres User a také v PATH. (V mém případě „C:Program FilesGnuWin32bin“).

Za předpokladu, že jsou splněny všechny předpoklady a dalším krokem by měla být úprava souboru $PGDATA/postgresql.conf a změna parametrů souvisejících s archivací a restartování clusteru:

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)

Podle dokumentace PG byly provedeny změny a restartován cluster s očekáváním, že odtud budou mé archivy zkomprimovány. Podívejme se na protokoly:

2013-07-26 16:07:22 IST LOG:příkaz archive selhal s kódem ukončení 1
2013-07-26 16:07:22 IST DETAIL:Selhal příkaz pro archivaci:"""C :Program FilesGnuWin32bingzip.exe" -1 <"pg_xlog
  1. Přidejte data do databáze sqlite pouze jednou a čtěte vícekrát

  2. Jak zapíšu LINQ's .Skip(1000).Take(100) v čistém SQL?

  3. Jak seskupit podle měsíce v PostgreSQL

  4. NASTAVIT NÁZVY utf8 v MySQL?