pg_start_backup
realizará un punto de control, como señala dezso. Esto tiene un impacto, pero su base de datos realiza puntos de control con bastante frecuencia de todos modos, y debe hacerlo para funcionar, por lo que claramente no son un problema para usted. Un punto de control temprano significa que se han acumulado menos datos, lo que significa que, en todo caso, un punto de control pg_start_backup
tendrá un impacto menor de lo normal.
Donde debe preocuparse es el rsync o pg_basebackup
paso equivalente . La lectura de E / S de esto no será tan mala ya que es secuencial, pero probablemente dañará significativamente el rendimiento de E / S de su base de datos, y también tenderá a expulsar los datos calientes de la memoria caché de RAM a favor de menos -usados, lo que provoca que la memoria caché se agite a medida que los datos más necesarios se vuelven a leer.
Puede usar nice
y ionice
para ayudar a limitar el impacto de E / S (pero no el impacto de la memoria caché); Sin embargo, hay un costo para eso. La copia de seguridad llevará más tiempo, y hasta que complete la copia de seguridad y ejecute pg_stop_backup
su sistema, según tengo entendido, está acumulando WAL que no puede eliminar, acumulando deudas de puntos de control para un GRAN punto de control al final de la ejecución de la copia de seguridad, y está acumulando tabla e índice hincha porque no puede limpiar las filas muertas. Por lo tanto, realmente no puede permitirse que la copia de seguridad tome para siempre, especialmente si tiene tablas de rotación muy altas.
Al final, es difícil decir si puede usar de forma segura pg_start_backup
y pg_stop_backup
para copias de seguridad en caliente en su entorno. La mayoría de la gente puede, pero si está cerca del límite de lo que puede hacer su hardware, tiene requisitos de tiempo ajustados, no puede permitirse el riesgo de un bloqueo y tiene tablas de rotación muy altas, así como tablas muy grandes, puede ser problemático .
Desafortunadamente, necesitas probarlo y verlo.
Si puede, puede valer la pena emitir un informe y CHECKPOINT
luego tomar una instantánea atómica del volumen en el que se encuentra su base de datos utilizando LVM, las herramientas de su SAN, EBS o lo que sea que esté utilizando. Si puede hacer esto, puede copiar la instantánea a su gusto. Este enfoque no es adecuado para realizar una copia de seguridad base para PITR / espera activa / espera activa, pero es perfectamente bueno para una copia de seguridad estática y tiene un impacto mucho menor en el sistema. Sin embargo, solo puede hacer esto si sus instantáneas son atómicas y toda su base de datos, incluida WAL, está en un solo volumen.
Una posibilidad que aún no he investigado es combinar los dos enfoques. Se me ocurre que uno podría ( no probado y posiblemente incorrecto e inseguro , aún no lo sé):
pg_start_backup
- Dispare instantáneas de todos los espacios de tabla, el directorio de datos principal y el volumen xlog
pg_stop_backup
- Copie WAL hasta el archivo final de
pg_stop_backup
- Copie los datos de los volúmenes capturados
Esencialmente, la idea es reducir el tiempo que la base de datos debe retrasar sus puntos de control tomando un punto en el tiempo de cada volumen que pueda copiar a su gusto.