pg_start_backup v Posgtresu

pg_start_backup v Posgtresu
« kdy: 28. 05. 2020, 23:55:10 »
Ahoj,
rad bych se zdejsich zkusenejsich zeptal na zkusenosti s pouzivanim online backupu v Postgresu.
Resim situaci, kdy pro base zalohu db v archivnim rezimu vyuzivam pg_start_backup/pg_end_backup.
Domnival jsem se, ze po spusteni pg_start_backup jiz nedochazi k zapisu do datovych souboru a vsechno jde do wal segmentu. Nicmene narazil jsem na situaci, kdy zalohovaci sw vyhodil chybovou hlasku s tim, ze behem zalohy doslo ke zmene velikosti nektereho souboru.
Pri hledani o jaky soubor jde jsem pak zjistil, ze jde o datovy soubor jedne tabulky.
V dokumentaci jsem dohledal, ze jde o normalni situaci ... nicmene pro me tim pada me puvodni vysvetleni toho, jak ta online zaloha funguje ...
Setkal jste se tu s tim nekdo, pripadne umite vysvetlit, proc to tak je?
Diky za pripadnou ochotu!


Re:pg_start_backup v Posgtresu
« Odpověď #1 kdy: 29. 05. 2020, 07:21:21 »
Ahoj,
rad bych se zdejsich zkusenejsich zeptal na zkusenosti s pouzivanim online backupu v Postgresu.
Resim situaci, kdy pro base zalohu db v archivnim rezimu vyuzivam pg_start_backup/pg_end_backup.
Domnival jsem se, ze po spusteni pg_start_backup jiz nedochazi k zapisu do datovych souboru a vsechno jde do wal segmentu. Nicmene narazil jsem na situaci, kdy zalohovaci sw vyhodil chybovou hlasku s tim, ze behem zalohy doslo ke zmene velikosti nektereho souboru.
Pri hledani o jaky soubor jde jsem pak zjistil, ze jde o datovy soubor jedne tabulky.
V dokumentaci jsem dohledal, ze jde o normalni situaci ... nicmene pro me tim pada me puvodni vysvetleni toho, jak ta online zaloha funguje ...
Setkal jste se tu s tim nekdo, pripadne umite vysvetlit, proc to tak je?
Diky za pripadnou ochotu!

Vaše doměnka je špatná. Implementace archivace v Postgresu neblokuje zápisy do datových souborů jako jiné databáze. pg_start_backup synchronizuje RAM a IO checkpointem a začne zápis do nového segmentu transakčního logu. Vy můžete zahájit fullbackup, který co se týče datovych souborů nemusí být konzistentní (protože stále dochází k zápisům). Nicméně při obnově tohoto pravděpodobně nekonzistentního backupu (pokud je databáze pod zátěží) postgres přehraje všechny transakční logy, které byly zapsány mezi pg_start_backup a pg_stop_backup. Tím zajistí konzistenci, protože vše, co se teoreticky nezkopírovalo se "přepíše" z transakčních logů. Vše je popsáno v dokumentaci https://www.postgresql.org/docs/current/continuous-archiving.html

Re:pg_start_backup v Posgtresu
« Odpověď #2 kdy: 29. 05. 2020, 08:04:45 »
Dekuji za vysvetleni! Bohuzel jsem automaticky aplikoval logiku online zaloh z jineho RDBMS a proto mi to nedavalo smysl :) Musim tedy nechat nastavit zalohovaci sw tak, aby zmeny velikosti souboru nevnimal jako chybu (coz standardne dela).
Diky moc za pomoc!