Tengo una base de datos de 3GB que se modifica constantemente y necesito hacer copias de seguridad sin detener el servidor (Postgres 8.3).
Mi pg_dump funciona durante 5 minutos. ¿Qué pasa si los datos se modifican durante el proceso? ¿Recibo copias de seguridad consistentes? No quiero saber cuándo ocurre un desastre.
La documentación de Postgres http://www.postgresql.org/docs/8.3/static/app-pgdump.html no dice nada al respecto.
postgresql
romano
fuente
fuente
Respuestas:
Del manual :
Entonces sí, puede confiar en la copia de seguridad. Por supuesto, es PostgreSQL, puede confiar en sus datos en PostgreSQL.
fuente
pg_dump inicia una transacción, de manera similar a cómo funcionará cualquier otra consulta de larga duración. Las garantías de coherencia provienen de la implementación de MVCC . El volcado siempre será autoconsistente dentro de esas reglas.
Todas las partes difusas de MVCC están alrededor de cosas como el orden en que las transacciones de ACTUALIZACIÓN se vuelven visibles para otros clientes y cómo se adquieren los bloqueos. pg_dump es estricto con respecto al pedido y adquiere un bloqueo de lectura en toda la base de datos para volcarlo. Para la mayoría de las personas, eso es lo que esperan, y el mecanismo utilizado nunca causa problemas. El principal riesgo de concurrencia es que los clientes que intentan cambiar la estructura de la base de datos serán bloqueados mientras se ejecuta el volcado. Sin embargo, eso no afecta la calidad del vertedero.
fuente
El volcado comienza con la configuración
TRANSACTION ISOLATION LEVEL SERIALIZABLE
.Lea el manual sobre Aislamiento de transacciones y, por ejemplo, la discusión de la Lista de usuarios al respecto .
Citar:
Básicamente todo después de
pg_dump
establecer el nivel de aislamiento de transacción no es parte de este volcado.Las operaciones de lectura / escritura no se ven afectadas (bloqueadas) durante ese tiempo.
fuente
Primero perdón por responder en este viejo hilo. Pero desde mi experiencia no puedo confirmar la afirmación de que puede confiar en pg_dump /
Me cambié hace un mes por un proyecto para postgres. Y, por supuesto, hice todas las copias de seguridad con pg_dump del sistema en vivo como se sugirió. Pero después de la primera verificación de respaldo, descubrí que todos los volcados tienen diferentes tamaños. Después de restaurar algunos de ellos al azar, descubrí que faltan algunas tablas. Así que comencé a analizar por qué sucede esto y descubrí que si la aplicación superpuesta, por ejemplo, los servidores de aplicaciones, el bloqueo de algunas tablas y pg_dump no está esperando hasta que se publiquen. Siempre me necesitaban para detener el servidor durante el período de respaldo, lo cual no es una buena solución.
Así que todavía estoy buscando una solución, pero como dije, estoy totalmente en desacuerdo con la afirmación de que puedes confiar en pg_dump.
fuente