Przede wszystkim jestem programistą, nie DBA ani sysadmin; proszę bądź delikatny :)
Pracuję nad przepływem pracy aplikacji, w którym pojedyncza akcja użytkownika wywoła złożone zmiany w bazie danych - tworzenie setek rekordów w niektórych tabelach, aktualizowanie setek rekordów w innych itp. W sumie około 12 tabel (z ~ 100 ) są dotknięte tą czynnością. Ze względu na złożoność bardzo trudno mi ręcznie cofnąć wszystkie zmiany, zanim będę mógł uruchomić kolejny test. Przez większość mojego czasu programowania mogę po prostu wstawić instrukcję „ROLLBACK” pod koniec przepływu pracy, ale kiedy zbliżam się do zatwierdzenia moich zmian, muszę przetestować prawdziwą rzecz.
Mam lokalną kopię produkcyjnej bazy danych do pracy. W moim przypadku zrzucanie i przywracanie między testami jest szybsze niż pisanie skryptu, aby cofnąć wszystkie zmiany. Jest szybszy, ale wciąż bardzo mnie spowalnia (przywracanie zajmuje około 20 minut na moim starzejącym się laptopie). Czy jest jakiś sposób, aby zapisać migawkę bieżącego stanu bazy danych, a następnie szybko ją przywrócić?
Jestem gwarantem, że jestem jedynym użytkownikiem w systemie i mam dostęp do konta root. Zrzut bazy danych wynosi ~ 100 MB po tar'owaniu i gzip'owaniu. Wersja PostgreSQL to 8.3.
Z góry dziękuję za wszelkie pomocne pomysły.