En primer lugar, soy un desarrollador, no un administrador de bases de datos o administrador de sistemas; por favor se gentil :)
Estoy trabajando en un flujo de trabajo de la aplicación donde una sola acción del usuario desencadenará cambios complejos en la base de datos, creando cientos de registros en algunas tablas, actualizando cientos de registros en otras, etc. En total, alrededor de 12 tablas (de ~ 100 ) son tocados por esta acción. Debido a la complejidad, es muy difícil para mí revertir manualmente todos los cambios antes de poder ejecutar otra prueba. Durante la mayor parte de mi tiempo de desarrollo, simplemente puedo insertar una declaración "ROLLBACK" cerca del final del flujo de trabajo, pero cuando me acerco a confirmar mis cambios, necesito probar la cosa real.
Tengo una copia local de la base de datos de producción para trabajar. En mi caso, descargar y restaurar entre pruebas es más rápido que escribir un script para deshacer todos los cambios. Es más rápido, pero todavía me está ralentizando mucho (la restauración toma alrededor de 20 minutos en mi computadora portátil envejecida). ¿Hay alguna forma de guardar una instantánea del estado actual de la base de datos y luego restaurarla rápidamente?
Tengo la garantía de ser el único usuario en el sistema y tengo acceso de root. El volcado de la base de datos es de ~ 100 MB cuando está tar'ed y gzip'ed. La versión de PostgreSQL es la 8.3.
Gracias de antemano por cualquier idea útil.