pg_probackupパフォーマンステスト

g_proabckupツールは、postgresqlデータベースのバックアップおよびリカバリ管理ツールです。

pg_probackup紹介記事

テストの目的:

このテストでのpg_probackupツールのデルタモードとページモードのバックアップパフォーマンスの違い

テストの準備:

10億個のデータを準備します(データサイズ146G):

pgbench -i -s 10000 -U backup -h 127.0.0.1 pgbenchpgbench=# \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倍効率的です(このデータレベルでは、量が多くなります)データの違いが大きくなる可能性があります)


おすすめ

転載: blog.51cto.com/15080020/2654733