g_proabckupツールは、postgresqlデータベースのバックアップおよびリカバリ管理ツールです。
テストの目的:
このテストでのpg_probackupツールのデルタモードとページモードのバックアップパフォーマンスの違い
テストの準備:
10億個のデータを準備します(データサイズ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)
ディスクの使用状況:
[postgres @ ecos75r018-meijia-31-150〜] $ df -hFilesystem使用済みアベイルズ使用率%マウント済み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 / archive
フルバックアップ(デルタ)
pg_probackup-12 backup -B / postgresql / backup / --instance pgbak -j 4 -U probackup --stream -b full
[postgres @ ecos75r018-meijia-31-150 postgresql] $ pg_probackup-12 backup -B / postgresql / backup / --instance pgbak -j 4 -U probackup --stream -b full --temp-slotINFO:バックアップ開始、pg_probackupバージョン:2.4.8、インスタンス:pgbak、バックアップID:QLOIL1、バックアップモード:FULL、walモード:STREAM、リモート:false、圧縮アルゴリズム:なし、圧縮レベル:1警告:このPostgreSQLインスタンスはデータブロックチェックサムなしで初期化されました。pg_probackupには、それらがないとデータブロックの破損を検出する方法がありません。オプション '--data-checksums'を使用してPGDATAを再初期化します。INFO:PGDATAサイズ:146GBINFO:データファイルの転送を開始しますINFO:データファイルが転送され、経過時間:33m:19s2020-12-21 16:12:20.388 CST [24069]ログ: 23 / C00001782020-12-21 16:12:20.388 CST [24069]で作成された復元ポイント "pg_probackup、backup_id QLOIL1"ステートメント:pg_catalogを選択します。
時間:2020/12/21 15:39〜2020 / 12/18 16:31
ps:次のエラーが発生し、pglibライブラリの環境変数を構成する必要があります。
LD_LIBRARY_PATH = / usr / local / postgresql-12.4 / libをエクスポートします
エラー:データベースpostgresに接続できませんでした:サーバーに接続できませんでした:そのようなファイルまたはディレクトリはありませんサーバーはローカルで実行されており、Unixドメインソケット "/var/run/postgresql/.s.PGSQL.5432"で接続を受け入れていますか?
インクリメンタルデータの準備:
1億個のインクリメンタルデータ(約15Gデータ)を挿入
pgbench -i -s 1000 -U probackup -h 127.0.0.1 pgbench_inc
ディスクの使用状況:
[postgres @ ecos75r018-meijia-31-150 postgresql] $ df -hFilesystem使用済みアベイルズ使用率%マウント済み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 / archive
増分バックアップ(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:バックアップ開始、pg_probackupバージョン:2.4.8、インスタンス:pgbak、バックアップID:QLOMCV、バックアップモード:DELTA、walモード:STREAM、リモート:false、圧縮アルゴリズム:なし、圧縮レベル:1警告:このPostgreSQLインスタンスはデータブロックチェックサムなしで初期化されました。pg_probackupには、それらがないとデータブロックの破損を検出する方法がありません。オプション '--data-checksums'を使用してPGDATAを再初期化します。INFO:親バックアップ:QLOIL1INFO:PGDATAサイズ:161GBINFO:データファイルの転送を開始しますINFO:データファイルが転送され、経過時間:31m:29s2020-12-21 17:32:00.310 CST [30184]ログ:26 / C10001782020-12-21 17:32:00.310 CSTで作成された復元ポイント「pg_probackup、backup_idQLOMCV」[30184]ステートメント:
時間:2020/12/21 17:00〜2020 / 12/21 17:35
フルバックアップ(PAGE)
postgresql.confを変更します
vi postgresql.confarchive_command = 'pg_probackup-12 archive-push -B / postgresql / backup --instance pgbak --wal-file-name =%f'
インクリメンタルライブラリpgbench_incを削除します
postgres =#データベースを削除pgbench_inc;
pg_probackup-12バックアップ-B / postgresql / backup / --instance pgbak -j 4 -U probackup -b full
[postgres @ ecos75r018-meijia-31-150〜] $ pg_probackup-12 backup -B / postgresql / backup / --instance pgbak -j 4 -U probackup -b fullINFO:バックアップ開始、pg_probackupバージョン:2.4.8、インスタンス: pgbak、バックアップID:QLILZE、バックアップモード:FULL、walモード:ARCHIVE、リモート:false、compress-algorithm:none、compress-level:1警告:このPostgreSQLインスタンスは、データブロックチェックサムなしで初期化されました。pg_probackupには、それらがないとデータブロックの破損を検出する方法がありません。オプション '--data-checksums'を使用してPGDATAを再初期化します。INFO:WALセグメント/ postgresql / backup / wal / pgbak / 0000000100000020000000AEがアーカイブされるのを待ちますINFO:PGDATAサイズ:146GBINFO:データファイルの転送を開始しますINFO:データファイルが転送され、経過時間: 38m:52sINFO:pg_stop_backup()INFOを待機します:pg_stop backup()が正常に実行されましたvINFO:バックアップファイルをdiskINFOに同期しています:
時間:2020/12/22 08:57〜2020 / 12/22 09:54
インクリメンタルデータの準備:
1億個のインクリメンタルデータ(約15Gデータ)を挿入
pgbench -i -s 1000 -U probackup -h 127.0.0.1 pgbench_inc
ディスクの使用状況:
[postgres @ ecos75r018-meijia-31-150〜] $ df -hFilesystem使用済みアベイルズ使用率%マウント済み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 / archive
増分バックアップ(PAGE)
pg_probackup-12バックアップ-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:バックアップ開始、pg_probackupバージョン:2.4.8、インスタンス: pgbak、バックアップID:QLPZ42、バックアップモード:PAGE、walモード:ARCHIVE、リモート:false、圧縮アルゴリズム:なし、圧縮レベル:1警告:このPostgreSQLインスタンスは、データブロックチェックサムなしで初期化されました。pg_probackupには、それらがないとデータブロックの破損を検出する方法がありません。オプション '--data-checksums'を使用してPGDATAを再初期化します。INFO:WALセグメント/ postgresql / backup / wal / pgbak / 0000000100000029000000C8がアーカイブされるのを待ちますINFO:親バックアップ:QLPUN6INFO:PGDATAサイズ:161GBINFO:変更されたブロックのページマップを抽出していますINFO:ページマップは正常に抽出、経過時間:142秒INFO:データファイルの転送を開始INFO:データファイルが転送され、経過時間:5m:16sINFO:
時間:2020/12/22 10:33〜2020 / 12/22 10:44
試験結果:
今回は、テストプロセスとテスト結果の1つのみが提供されます。
モード |
デルタ |
ページ |
フルバックアップ |
データ量:146G / 100億 合計時間:52分 データ送信:34分 データ検証:18分 |
データ量:146G / 100億 合計時間:57分 データ送信:39分 データ検証:18分 |
増分バックアップ |
データ量:15G / 1億 合計時間:35分 データ送信:31分 データ検証:4分 |
データ量:15G / 1億 合計時間:11分 地図+データ送信:8分 データ検証:3分 |
このテストを通じて、デルタモードとページモードの完全バックアップは大幅に異なることがわかりました。増分バックアップに関しては、ページモードはデルタモードバックアップよりも3倍効率的です(このデータレベルでは、量が多くなります)データの違いが大きくなる可能性があります)