En un PostgreSQL v9.0 tengo un sistema de archivo WAL funcionando. Entonces, WAL archiva regularmente un archivo (cuando se crean 3 WAL o si un WAL es anterior a 15 minutos).
Ahora agrego un paquete binario del directorio PG_DATA (excluyendo el subdirectorio pg_xlog). Para hacer eso, realizo una pg_start_backup(),
copia binaria y a pg_stop_backup()
.
Creo que entiendo bastante bien lo que están haciendo pg_start_backup y pg_stop_backup, el primero hace un punto de control y el último asegura que el último archivo WAL esté archivado.
De la documentación oficial podemos ver que para la copia de datos binarios debemos:
Realice la copia de seguridad, utilizando cualquier herramienta conveniente de copia de seguridad del sistema de archivos, como tar o cpio (no pg_dump o pg_dumpall). No es necesario ni deseable detener el funcionamiento normal de la base de datos mientras lo hace.
Así que estoy bastante perplejo. Esto significa que se puede realizar un punto de control mientras hacemos la copia. Vi mucha documentación que indicaba que el comando de copia debería permitir cambios de datos al realizar la copia, estoy de acuerdo con eso, simplemente es cuestión de encontrar la herramienta adecuada. Pero mi pregunta es cómo postgreSQL manejará la recuperación con un contenido pg_data que contiene algunos archivos que son inconsistentes (algunos anteriores al punto de control, otros posteriores).
Al reproducir los registros de transacciones, Postgresql podrá poner todos estos archivos en el estado correcto. Vi que crear tablas y soltar operaciones son peligrosas mientras se realiza la copia de seguridad. ¿No hay algunas operaciones peligrosas como comandos de vacío ? ¿El pg_backup suspende las operaciones de vacío? ¿Debo hacer una copia del archivo global / pg_control al final del inicio del proceso de copia binaria? ¿Debo usar un sistema de archivos habilitado para instantáneas (como con una congelación xfs) para obtener un proceso de restauración más rápido?
Vi que un bloqueo del script de copia de seguridad no iniciará un pg_stop_backup automáticamente, por lo que existe la posibilidad de que mi estado de copia de seguridad viva durante mucho tiempo (hasta que mi nagios toque a alguien en algún lugar para arreglar el pg_stop_backup ()). Entonces, si algo es diferente en PostgreSQL entre estos dos grupos, me gustaría saberlo, para comprender qué impacto puede tener.
Iluminame por favor.