La herramienta g_proabckup es una herramienta de administración de respaldo y recuperación para la base de datos postgresql
artículo de introducción de pg_probackup
Fines de prueba:
La diferencia en el rendimiento de la copia de seguridad entre el modo delta y el modo de página de la herramienta pg_probackup en esta prueba
Examen de preparación:
Prepare mil millones de datos (tamaño de datos 146G):
pgbench -i -s 10000 -U backup -h 127.0.0.1 pgbench
pgbench=# \dt
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+--------
public | pgbench_accounts | table | backup
public | pgbench_branches | table | backup
public | pgbench_history | table | backup
public | pgbench_tellers | table | backup
(4 rows)
pgbench=# select count(*) from pgbench_accounts;
count
------------
1000000000
(1 row)
Uso del disco:
[postgres @ ecos75r018-meijia-31-150 ~] $ df -h Tamaño del sistema de archivos utilizado% de uso disponible montado ondevtmpfs 7.5G 0 7.5G 0% / devtmpfs 7.5G 12K 7.5G 1% / dev / shmtmpfs 7.5G 9.2M 7.5G 1 % / runtmpfs 7.5G 0 7.5G 0% / sys / fs / cgroup / dev / mapper / vg00-lv_root 20G 9.9G 8.8G 53% // dev / sda1 501M 335M 130M 73% / boot / dev / sda2 524M 12K 524M 1% / boot / efi / dev / sdb1 296G 147G 134G 53% / postgresql / data / dev / sdc1 296G 65M 281G 1% / postgresql / backuptmpfs 1.5G 0 1.5G 0% / run / user / 0 / dev / sdd1 296G 122G 160G 44% / postgresql / archivo
Copia de seguridad completa (DELTA)
pg_probackup-12 copia de seguridad -B / postgresql / copia de seguridad / --instancia pgbak -j 4 -U probackup --stream -b completo
[postgres @ ecos75r018-meijia-31-150 postgresql] $ pg_probackup-12 backup -B / postgresql / backup / --instance pgbak -j 4 -U probackup --stream -b full --temp-slotINFO: Inicio de copia de seguridad, pg_probackup versión: 2.4.8, instancia: pgbak, ID de respaldo: QLOIL1, modo de respaldo: FULL, modo wal: STREAM, remoto: falso, algoritmo de compresión: ninguno, nivel de compresión: 1 ADVERTENCIA: Esta instancia de PostgreSQL se inicializó sin sumas de verificación de bloques de datos . pg_probackup no tiene forma de detectar la corrupción del bloque de datos sin ellos. Reinicialice PGDATA con la opción '--data-checksums'.INFO: Tamaño de PGDATA: 146GBINFO: Iniciar la transferencia de archivos de datosINFO: Los archivos de datos se transfieren, tiempo transcurrido: 33m: 19s2020-12-21 16: 12: 20.388 CST [24069] LOG: punto de restauración "pg_probackup, backup_id QLOIL1" creado en 23 / C00001782020-12-21 16: 12: 20.388 CST [24069] DECLARACIÓN: SELECT pg_catalog.
Hora: 2020/12/21 15:39 ~ 2020/12/18 16:31
ps: se producen los siguientes errores y es necesario configurar las variables de entorno de la biblioteca pg lib:
exportar LD_LIBRARY_PATH = / usr / local / postgresql-12.4 / lib
ERROR: no se pudo conectar a la base de datos postgres: no se pudo conectar al servidor: no existe tal archivo o directorio. ¿El servidor se está ejecutando localmente y acepta conexiones en el socket de dominio Unix "/var/run/postgresql/.s.PGSQL.5432"?
Preparación de datos incrementales:
Inserte 100 millones de datos incrementales (aproximadamente 15G de datos)
pgbench -i -s 1000 -U probackup -h 127.0.0.1 pgbench_inc
Uso del disco:
[postgres @ ecos75r018-meijia-31-150 postgresql] $ df -h Tamaño del sistema de archivos utilizado Uso disponible% Montado ondevtmpfs 7.5G 0 7.5G 0% / devtmpfs 7.5G 12K 7.5G 1% / dev / shmtmpfs 7.5G 9.1M 7.5G 1 % / runtmpfs 7.5G 0 7.5G 0% / sys / fs / cgroup / dev / mapper / vg00-lv_root 20G 9.9G 8.8G 53% // dev / sda1 501M 335M 130M 73% / boot / dev / sda2 524M 12K 524M 1% / boot / efitmpfs 1.5G 0 1.5G 0% / run / user / 0 / dev / sdb1 296G 162G 119G 58% / postgresql / data / dev / sdc1 296G 147G 134G 53% / postgresql / backup / dev / sdd1 296G 13G 268G 5% / postgresql / archivo
Copia de seguridad incremental (DELTA)
pg_probackup-12 copia de seguridad -B / postgresql / copia de seguridad / --instancia pgbak -j 4 -U probackup --stream -b delta --temp-slot
[postgres @ ecos75r018-meijia-31-150 postgresql] $ pg_probackup-12 backup -B / postgresql / backup / --instance pgbak -j 4 -U probackup --stream -b delta --temp-slotINFO: Inicio de copia de seguridad, pg_probackup versión: 2.4.8, instancia: pgbak, ID de respaldo: QLOMCV, modo de respaldo: DELTA, modo wal: STREAM, remoto: falso, algoritmo de compresión: ninguno, nivel de compresión: 1 ADVERTENCIA: Esta instancia de PostgreSQL se inicializó sin sumas de comprobación de bloques de datos . pg_probackup no tiene forma de detectar la corrupción del bloque de datos sin ellos. Reinicialice PGDATA con la opción '--data-checksums'.INFO: Copia de seguridad principal: QLOIL1INFO: Tamaño de PGDATA: 161GBINFO: Comience a transferir archivos de datosINFO: Los archivos de datos se transfieren, tiempo transcurrido: 31m: 29s2020-12-21 17: 32: 00.310 CST [30184] REGISTRO: punto de restauración "pg_probackup, backup_id QLOMCV" creado en 26 / C10001782020-12-21 17: 32: 00.310 CST [30184] DECLARACIÓN:
Hora: 2020/12/21 17:00 ~ 2020/12/21 17:35
Copia de seguridad completa (PAGE)
Modificar postgresql.conf
vi postgresql.confarchive_command = 'pg_probackup-12 archive-push -B / postgresql / backup --instance pgbak --wal-file-name =% f'
Eliminar la biblioteca incremental pgbench_inc
postgres = # eliminar la base de datos pgbench_inc;
pg_probackup-12 copia de seguridad -B / postgresql / copia de seguridad / --instancia pgbak -j 4 -U probackup -b completo
[postgres @ ecos75r018-meijia-31-150 ~] $ pg_probackup-12 backup -B / postgresql / backup / --instance pgbak -j 4 -U probackup -b fullINFO: Inicio de la copia de seguridad, pg_probackup versión: 2.4.8, instancia: pgbak, ID de copia de seguridad: QLILZE, modo de copia de seguridad: FULL, modo wal: ARCHIVE, remoto: falso, algoritmo de compresión: ninguno, nivel de compresión: 1 ADVERTENCIA: Esta instancia de PostgreSQL se inicializó sin sumas de comprobación de bloques de datos. pg_probackup no tiene forma de detectar la corrupción del bloque de datos sin ellos. Reinicialice PGDATA con la opción '--data-checksums'.INFO: Espere a que se archive el segmento WAL / postgresql / backup / wal / pgbak / 0000000100000020000000AEINFO: Tamaño de PGDATA: 146GBINFO: Comience a transferir archivos de datosINFO: Los archivos de datos se transfieren, tiempo transcurrido: 38m: 52sINFO: espere pg_stop_backup () INFO: pg_stop backup () ejecutado correctamente vINFO: Sincronizando archivos de copia de seguridad con diskINFO:
Hora: 2020/12/22 08:57 ~ 2020/12/22 09:54
Preparación de datos incrementales:
Inserte 100 millones de datos incrementales (aproximadamente 15G de datos)
pgbench -i -s 1000 -U probackup -h 127.0.0.1 pgbench_inc
Uso del disco:
[postgres @ ecos75r018-meijia-31-150 ~] $ df -h Tamaño del sistema de archivos utilizado Uso disponible% Montado ondevtmpfs 7.5G 0 7.5G 0% / devtmpfs 7.5G 12K 7.5G 1% / dev / shmtmpfs 7.5G 18M 7.5G 1% / runtmpfs 7.5G 0 7.5G 0% / sys / fs / cgroup / dev / mapper / vg00-lv_root 20G 9.9G 8.8G 53% // dev / sda1 501M 335M 130M 73% / boot / dev / sda2 524M 12K 524M 1 % / boot / efi / dev / sdb1 296G 162G 119G 58% / postgresql / data / dev / sdc1 296G 159G 122G 57% / postgresql / backuptmpfs 1.5G 0 1.5G 0% / run / user / 0 / dev / sdd1 296G 122G 159G 44% / postgresql / archivo
Copia de seguridad incremental (PAGE)
pg_probackup-12 backup -B / postgresql / backup / --instance pgbak -b PAGE -U probackup
[postgres @ ecos75r018-meijia-31-150 ~] $ pg_probackup-12 backup -B / postgresql / backup / --instance pgbak -b page -j 4 -U probackupINFO: Inicio de la copia de seguridad, pg_probackup versión: 2.4.8, instancia: pgbak, ID de copia de seguridad: QLPZ42, modo de copia de seguridad: PAGE, modo wal: ARCHIVE, remoto: falso, algoritmo de compresión: ninguno, nivel de compresión: 1 ADVERTENCIA: Esta instancia de PostgreSQL se inicializó sin sumas de comprobación de bloques de datos. pg_probackup no tiene forma de detectar la corrupción del bloque de datos sin ellos. Reinicialice PGDATA con la opción '--data-checksums'.INFO: Espere a que se archive el segmento WAL / postgresql / backup / wal / pgbak / 0000000100000029000000C8 INF: Copia de seguridad principal: QLPUN6INFO: Tamaño de PGDATA: 161GBINFO: Extrayendo el mapa de páginas de los bloques modificados extraído, tiempo transcurrido: 142 segINFO: Iniciar la transferencia de archivos de datosINFO: Los archivos de datos se transfieren, tiempo transcurrido: 5m: 16sINFO:
Hora: 2020/12/22 10:33 ~ 2020/12/22 10:44
Resultados de la prueba:
Esta vez, solo se proporcionan el proceso de prueba y uno de los resultados de la prueba:
modo |
DELTA |
PÁGINA |
Copia de seguridad completa |
Volumen de datos: 146G / 10 mil millones Tiempo total: 52min Transmisión de datos: 34min Verificación de datos: 18min |
Volumen de datos: 146G / 10 mil millones Tiempo total: 57min Transmisión de datos: 39min Verificación de datos: 18min |
Respaldo incremental |
Volumen de datos: 15G / 100 millones Tiempo total: 35min Transmisión de datos: 31min Verificación de datos: 4min |
Volumen de datos: 15G / 100 millones Tiempo total: 11min mapa + transmisión de datos: 8min Verificación de datos: 3min |
A través de esta prueba, se encontró que el modo delta y la copia de seguridad completa en modo página son significativamente diferentes. En términos de copia de seguridad incremental, el modo página es tres veces más eficiente que la copia de seguridad en modo delta (en este nivel de datos, mayor es la cantidad de datos, mayor puede ser la diferencia)