Cómo seguir el progreso de un gran volcado postrgresql


13

¿Hay alguna manera de ver el progreso de una pg_dumpoperación en una gran base de datos (es decir,> 1 GB)? agregar la -vopción solo volca el texto en la pantalla, pero no me da mucha información de seguimiento significativa.

Respuestas:


7

Puede ver un progreso aproximado utilizando la lista TOC.

Primero, obtenga la lista TOC de objetos para restaurar:

pg_restore -l -f list.toc db.dump

Luego, puede ver la lista de TOC línea por línea y comparar el resultado de pg_stat_activity detallado o de consulta para ver en qué parte de la lista de TOC se encuentra pg_restore.

Sin embargo, es solo una estimación aproximada. Primero, porque cada elemento de la lista TOC puede tardar un tiempo realmente diferente en cargarse (por ejemplo, los esquemas son rápidos, pero la carga de datos de tablas grandes y la creación de índices no lo son), y si usa -j, se restaurará un elemento antes de que uno anterior haya terminado. Además, no estoy 100% seguro si pg_restore sigue la lista TOC precisamente si no usa -L, pero creo que sí.


1
Estoy confundido por esta respuesta: la pregunta original especifica el volcado de una base de datos, pero esta solución especifica la restauración de la base de datos
jaydel

2

Válido para entornos Unix / Linux:

La utilidad Pipe Viewer (pv) se puede utilizar para rastrear el progreso de la copia de seguridad. El pv anima su shell con detalles sobre el tiempo transcurrido y los bytes transferidos.

A continuación se muestra el ejemplo de volcado utilizando las utilidades pv y split para mantener los archivos de volcado grandes en pequeños fragmentos. Puede ser útil transferirlo más tarde a otra ubicación.

# dump the PREDATA in clear text into a .PREDATA.SQL text file
pg_dump -s -o --section=pre-data  -n $schemaname $DatabaseConnString | pv | split -d -b $chunksize - $backuppath/$backupfilename".PREDATA.sql"

# dump the POSTDATA in clear text into a .PREDATA.SQL text file
pg_dump -s -o --section=post-data -n $schemaname $DatabaseConnString | pv | split -d -b $chunksize - $backuppath/$backupfilename".POSTDATA.sql"

# dump the DATA into the .DATA.dump compressed (binary) file
pg_dump -Fc   --section=data      -n $schemaname $DatabaseConnString | pv | split -d -b $chunksize - $backuppath/$backupfilename".DATA.dump"

El inconveniente: este enfoque no funciona si se usa la opción pg_dump -Fd (volcar a carpeta).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.