Das Tool g_proabckup ist ein Backup- und Recovery-Management-Tool für die Postgresql-Datenbank
Einführungsartikel zu pg_probackup
Testzwecke:
Der Unterschied in der Sicherungsleistung zwischen dem Delta-Modus und dem Seitenmodus des Tools pg_probackup in diesem Test
Test-Vorbereitungen:
Bereiten Sie 1 Milliarde Daten vor (Datengröße 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)
Festplattennutzung:
[postgres @ ecos75r018-meijia-31-150 ~] $ df -hDateisystemgröße Verwendete Verfügbarkeit Verwenden Sie% Mounted ondevtmpfs 7,5 G 0 7,5 G 0% / devtmpfs 7,5 G 12 K 7,5 G 1% / dev / shmtmpfs 7,5 G 9,2 M 7,5 G 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 / archive
Vollständige Sicherung (DELTA)
pg_probackup-12 backup -B / postgresql / backup / --instance pgbak -j 4 -U probackup --stream -b voll
[postgres @ ecos75r018-meijia-31-150 postgresql] $ pg_probackup-12 backup -B / postgresql / backup / --instance pgbak -j 4 -U probackup --stream -b full --temp-slotINFO: Sicherungsstart, pg_probackup Version: 2.4.8, Instanz: pgbak, Sicherungs-ID: QLOIL1, Sicherungsmodus: FULL, Wal-Modus: STREAM, Remote: false, Komprimierungsalgorithmus: keine, Komprimierungsstufe: 1WARNUNG: Diese PostgreSQL-Instanz wurde ohne Prüfsummen für Datenblöcke initialisiert . pg_probackup kann ohne sie keine Beschädigung von Datenblöcken erkennen. PGDATA mit Option '--data-Prüfsummen' neu initialisieren.INFO: PGDATA Größe: 146GBINFO: Übertragung von Datendateien startenINFO: Datendateien werden übertragen, verstrichene Zeit: 33m: 19s2020-12-21 16: 12: 20.388 CST [24069] LOG: Wiederherstellungspunkt "pg_probackup, backup_id QLOIL1" erstellt am 23 / C00001782020-12-21 16: 12: 20.388 CST [24069] STATEMENT: SELECT pg_catalog.
Zeit: 2020/12/21 15:39 ~ 2020/12/18 16:31
ps: Die folgenden Fehler treten auf und die Umgebungsvariablen der pg lib-Bibliothek müssen konfiguriert werden:
exportiere LD_LIBRARY_PATH = / usr / local / postgresql-12.4 / lib
FEHLER: Es konnte keine Verbindung zur Datenbank hergestellt werden. Postgres: Es konnte keine Verbindung zum Server hergestellt werden. Keine solche Datei oder kein solches Verzeichnis. Wird der Server lokal ausgeführt und akzeptiert Verbindungen auf dem Unix-Domain-Socket "/var/run/postgresql/.s.PGSQL.5432"?
Inkrementelle Datenaufbereitung:
Fügen Sie 100 Millionen inkrementelle Daten ein (ca. 15 G-Daten).
pgbench -i -s 1000 -U probackup -h 127.0.0.1 pgbench_inc
Festplattennutzung:
[postgres @ ecos75r018-meijia-31-150 postgresql] $ df -hDateisystemgröße Verwendete Verfügbarkeit Verwenden Sie% Mounted ondevtmpfs 7,5 G 0 7,5 G 0% / devtmpfs 7,5 G 12 K 7,5 G 1% / dev / shmtmpfs 7,5 G 9,1 M 7,5 G 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 / archive
Inkrementelle Sicherung (DELTA)
pg_probackup-12 backup -B / postgresql / backup / --instance 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: Sicherungsstart, pg_probackup Version: 2.4.8, Instanz: pgbak, Sicherungs-ID: QLOMCV, Sicherungsmodus: DELTA, Wal-Modus: STREAM, Remote: false, Komprimierungsalgorithmus: keine, Komprimierungsstufe: 1WARNUNG: Diese PostgreSQL-Instanz wurde ohne Prüfsummen für Datenblöcke initialisiert . pg_probackup kann ohne sie keine Beschädigung von Datenblöcken erkennen. PGDATA mit der Option '--data-Prüfsummen' neu initialisieren.INFO: Übergeordnete Sicherung: QLOIL1INFO: PGDATA Größe: 161GBINFO: Übertragung von Datendateien startenINFO: Datendateien werden übertragen, verstrichene Zeit: 31m: 29s2020-12-21 17: 32: 00.310 CST [30184] LOG: Wiederherstellungspunkt "pg_probackup, backup_id QLOMCV" erstellt am 26 / C10001782020-12-21 17: 32: 00.310 CST [30184] STATEMENT:
Zeit: 2020/12/21 17:00 ~ 2020/12/21 17:35
Vollständige Sicherung (SEITE)
Ändern Sie die Datei postgresql.conf
vi postgresql.confarchive_command = 'pg_probackup-12 Archiv-Push -B / postgresql / backup --instance pgbak --wal-Dateiname =% f'
Löschen Sie die inkrementelle Bibliothek pgbench_inc
postgres = # drop database pgbench_inc;
pg_probackup-12 backup -B / postgresql / backup / --instance pgbak -j 4 -U probackup -b voll
[postgres @ ecos75r018-meijia-31-150 ~] $ pg_probackup-12 backup -B / postgresql / backup / --instance pgbak -j 4 -U probackup -b fullINFO: Sicherungsstart, pg_probackup Version: 2.4.8, Instanz: pgbak, Sicherungs-ID: QLILZE, Sicherungsmodus: FULL, Wal-Modus: ARCHIVE, Remote: false, Komprimierungsalgorithmus: keine, Komprimierungsstufe: 1WARNUNG: Diese PostgreSQL-Instanz wurde ohne Prüfsummen für Datenblöcke initialisiert. pg_probackup kann ohne sie keine Beschädigung von Datenblöcken erkennen. PGDATA mit der Option '--data-Prüfsummen' neu initialisieren. INFO: Warten Sie, bis das WAL-Segment / postgresql / backup / wal / pgbak / 0000000100000020000000AE archiviert ist. 38m: 52sINFO: Warten auf pg_stop_backup () INFO: pg_stop backup () erfolgreich ausgeführtvINFO: Synchronisieren von Sicherungsdateien mit diskINFO:
Zeit: 2020/12/22 08:57 ~ 2020/12/22 09:54
Inkrementelle Datenaufbereitung:
Fügen Sie 100 Millionen inkrementelle Daten ein (ca. 15 G-Daten).
pgbench -i -s 1000 -U probackup -h 127.0.0.1 pgbench_inc
Festplattennutzung:
[postgres @ ecos75r018-meijia-31-150 ~] $ df -hDateisystemgröße Verwendete Verfügbarkeit Verwenden Sie% Mounted ondevtmpfs 7,5 G 0 7,5 G 0% / devtmpfs 7,5 G 12 K 7,5 G 1% / dev / shmtmpfs 7,5 G 18 M 7,5 G 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 / archive
Inkrementelle Sicherung (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 Seite -j 4 -U probackupINFO: Sicherungsstart, pg_probackup Version: 2.4.8, Instanz: pgbak, Sicherungs-ID: QLPZ42, Sicherungsmodus: PAGE, Wal-Modus: ARCHIVE, Remote: false, Komprimierungsalgorithmus: keine, Komprimierungsstufe: 1WARNUNG: Diese PostgreSQL-Instanz wurde ohne Prüfsummen für Datenblöcke initialisiert. pg_probackup kann ohne sie keine Beschädigung von Datenblöcken erkennen. PGDATA mit der Option '--data-Prüfsummen' neu initialisieren. INFO: Warten Sie, bis das WAL-Segment / postgresql / backup / wal / pgbak / 0000000100000029000000C8 archiviert ist extrahiert, verstrichene Zeit: 142 secINFO: Startet die Übertragung von DatendateienINFO: Datendateien werden übertragen, verstrichene Zeit: 5m: 16sINFO:
Zeit: 2020/12/22 10:33 ~ 2020/12/22 10:44
Testergebnisse:
Diesmal werden nur der Testprozess und eines der Testergebnisse bereitgestellt:
Modus |
DELTA |
SEITE |
Vollständige Sicherung |
Datenvolumen: 146 G / 10 Milliarden Gesamtzeit: 52min Datenübertragung: 34min Datenüberprüfung: 18min |
Datenvolumen: 146 G / 10 Milliarden Gesamtzeit: 57min Datenübertragung: 39min Datenüberprüfung: 18min |
Inkrementelles Backup |
Datenvolumen: 15G / 100 Millionen Gesamtzeit: 35min Datenübertragung: 31min Datenüberprüfung: 4min |
Datenvolumen: 15G / 100 Millionen Gesamtzeit: 11min Karte + Datenübertragung: 8min Datenüberprüfung: 3min |
Durch diesen Test wird festgestellt, dass sich der Delta-Modus und die vollständige Seitenmodus-Sicherung erheblich unterscheiden. In Bezug auf die inkrementelle Sicherung ist der Seitenmodus dreimal effizienter als die Delta-Modus-Sicherung (unter dieser Datenebene ist die Menge umso größer von Daten, je größer der Unterschied sein kann)