PostgreSQLは当初から堅実であるという評判があり、長年にわたって一連の印象的な機能を蓄積してきました。ただし、ディスク上のデータがACIDに準拠しているという安心感は、同等のよく考えられたバックアップ戦略によって補完されない場合でも、簡単に破壊される可能性があります。
バックアップの種類
利用可能なツールに飛び込む前に、利用可能なPostgreSQLバックアップタイプとその特徴を見てみましょう。
SQLダンプ(または論理)
- リーダーやライターをブロックしません。
- システムの負荷に悪影響を及ぼし、バックアップと復元の両方の操作に長い時間がかかるため、少量のデータセットを対象としています。 –no-syncフラグを使用するとパフォーマンスが向上する可能性がありますが、書き込みの待機を無効にすることに関連するリスクについては、マニュアルページを参照してください。
- 統計を最適化するには、復元後のANALYZEが必要です。
- ロールやテーブルスペースなどのグローバルオブジェクトは、pg_dumpallユーティリティを使用してのみバックアップできます。表領域ディレクトリは、復元を開始する前に手動で作成する必要があることに注意してください。
- システム負荷の増加を犠牲にして並列処理をサポートします。警告と特別な要件については、manpg_dumpをお読みください。同期されたスナップショット。
- ダンプは、新しいバージョンのPostgreSQL、または別のマシンアーキテクチャにロードできますが、メジャーバージョン間の下位互換性が保証されていないため、ダンプファイルを手動で編集する必要があります。
ファイルシステム(または物理)
- データベースをシャットダウンする必要があります。
- 論理バックアップよりも高速です。
- クラスターデータを含みます。
- 同じメジャーバージョンのPostgreSQLでのみ復元できます。
継続的なアーカイブ(またはポイントインタイムリカバリまたはPITR)
- 論理バックアップまたは物理バックアップに時間がかかりすぎる非常に大規模なデータベースに適しています。
- データディレクトリ内の一部のディレクトリは、プロセスを高速化するために除外できます。
スナップショット
- オペレーティングシステムのサポートが必要です。たとえば、LVMは非常にうまく機能しますが、NetBackup forPostgreSQLAgentでも確認されています。
- データディレクトリとデータベースの両方を同期させる必要があるアプリケーションに適しています。 2つのスナップショットが同期されている場合のLAMPアプリケーション。
- データベースファイルが複数のファイルシステムに保存されている場合はお勧めしません(すべてのファイルシステムを同時にスナップショットする必要があります)。
クラウド
すべてのクラウドプロバイダーは、PostgreSQLオファリングにバックアップを実装しています。論理バックアップは通常どおり実行できますが、物理バックアップとPITRは、データストアにアクセスできないため、クラウドサービスオファリングを通じて利用できます(たとえば、Amazon Aurora for PostgreSQLを参照)。したがって、クラウドでPostgreSQLをバックアップすることは、別のブログのトピックである必要があります。
エージェントベース
- ターゲットにエージェントをインストールする必要があります。
- ブロックレベルのバックアップを実行できます。 COMMVAULT(インストールはWindowsでのみサポートされます)。
機能
PostgreSQLは、論理、物理、およびPITRバックアップを実行するために必要なツールをすぐに提供しますが、特殊なバックアップアプリケーションは、ネイティブPostgreSQLおよびオペレーティングシステムツールに依存して、次の点に対処するバックアップ戦略を実装する必要性を満たします。
>- 自動化
- 頻度
- 保持期間
- 整合性
- 使いやすさ
さらに、PostgreSQLバックアップツールは、次のような一般的なバックアップツールに共通の機能を提供しようとします。
- ストレージスペースを節約するための増分バックアップ
- バックアップカタログ
- オンプレミスまたはクラウドにバックアップを保存する機能
- アラートと通知
- 包括的なレポート
- アクセス制御
- 暗号化
- グラフィカルインターフェイスとダッシュボード
- リモートホストのバックアップ
- ターゲットへの負荷を最小限に抑えるための適応スループット
- 複数のホストを並行して処理する
- バックアップオーケストレーション(例:ジョブチェーン
- REST API
ラボのセットアップ
この演習では、バックアップツールをインストールするコマンドアンドコントロールホストをセットアップしました。このホストは、PGDGリポジトリからインストールされた2つのPostgreSQLインスタンス(9.6と10)も実行します。
[[email protected] ~]# ps -o user,pid,ppid,args --forest -U postgres
USER PID PPID COMMAND
postgres 4535 1 /usr/pgsql-10/bin/postmaster -D /var/lib/pgsql/10/data/
postgres 4538 4535 \_ postgres: logger process
postgres 4540 4535 \_ postgres: checkpointer process
postgres 4541 4535 \_ postgres: writer process
postgres 4542 4535 \_ postgres: wal writer process
postgres 4543 4535 \_ postgres: autovacuum launcher process
postgres 4544 4535 \_ postgres: stats collector process
postgres 4545 4535 \_ postgres: bgworker: logical replication launcher
postgres 4481 1 /usr/pgsql-9.6/bin/postmaster -D /var/lib/pgsql/9.6/data/
postgres 4483 4481 \_ postgres: logger process
postgres 4485 4481 \_ postgres: checkpointer process
postgres 4486 4481 \_ postgres: writer process
postgres 4487 4481 \_ postgres: wal writer process
postgres 4488 4481 \_ postgres: autovacuum launcher process
postgres 4489 4481 \_ postgres: stats collector process
[[email protected] ~]# netstat -npeelt | grep :543
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 26 79972 4481/postmaster
tcp 0 0 127.0.0.1:5433 0.0.0.0:* LISTEN 26 81801 4535/postmaster
tcp6 0 0 ::1:5432 :::* LISTEN 26 79971 4481/postmaster
tcp6 0 0 ::1:5433 :::* LISTEN 26 81800 4535/postmaster
また、同じバージョン9.6とそれぞれ10を実行する2つのリモートPostgreSQLインスタンスをセットアップしました:
[[email protected] ~]# ps -o user,pid,ppid,args --forest -U postgres
USER PID PPID COMMAND
postgres 10972 1 /usr/pgsql-9.6/bin/postmaster -D /var/lib/pgsql/9.6/data/
postgres 10975 10972 \_ postgres: logger process
postgres 10977 10972 \_ postgres: checkpointer process
postgres 10978 10972 \_ postgres: writer process
postgres 10979 10972 \_ postgres: wal writer process
postgres 10980 10972 \_ postgres: autovacuum launcher process
postgres 10981 10972 \_ postgres: stats collector process
[[email protected] ~]# netstat -npeelt | grep :5432
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 26 34864 10972/postmaster
tcp6 0 0 :::5432 :::* LISTEN 26 34865 10972/postmaster
[[email protected] ~]# ps -o user,pid,ppid,args --forest -U postgres
USER PID PPID COMMAND
postgres 10829 1 /usr/pgsql-10/bin/postmaster -D /var/lib/pgsql/10/data/
postgres 10831 10829 \_ postgres: logger process
postgres 10833 10829 \_ postgres: checkpointer process
postgres 10834 10829 \_ postgres: writer process
postgres 10835 10829 \_ postgres: wal writer process
postgres 10836 10829 \_ postgres: autovacuum launcher process
postgres 10837 10829 \_ postgres: stats collector process
postgres 10838 10829 \_ postgres: bgworker: logical replication launcher
[[email protected] ~]# netstat -npeelt | grep :5432
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 26 34242 10829/postmaster
tcp6 0 0 :::5432 :::* LISTEN 26 34243 10829/postmaster
次に、pgbenchを使用してデータセットを作成します。
pgbench=# \dt+
List of relations
Schema | Name | Type | Owner | Size | Description
--------+------------------+-------+----------+---------+-------------
public | pgbench_accounts | table | postgres | 128 MB |
public | pgbench_branches | table | postgres | 40 kB |
public | pgbench_history | table | postgres | 0 bytes |
public | pgbench_tellers | table | postgres | 40 kB |
(4 rows)
ツール
一般的なバックアップツールのリストは、PostgreSQL Wiki —バックアップセクションにあります。何年にもわたって出会った製品や最近のインターネット検索からリストを増やしました。
アマンダ
Amandaはエージェントベースのオープンソースであり、ampgsqlAPIを介してそのままPostgreSQLをサポートします。この記事の執筆時点では、バージョン3.5.1はテーブルスペースをサポートしていません(manampgsqlを参照)。
Zmandaは、オープンソースでもあるエンタープライズバージョンを提供していますが、試用版として直接ダウンロードすることはできません。
サーバーパッケージとクライアントパッケージが相互に除外するため、Amandaには専用のバックアップホストが必要です。
[[email protected] ~]# rpm -qp --conflicts ./amanda-backup_client-3.5.1-1.rhel7.x86_64.rpm
amanda-backup_server
[[email protected] ~]# rpm -qp --conflicts ./amanda-backup_server-3.5.1-1.rhel7.x86_64.rpm
amanda-backup_client
基本構成ガイドに従ってサーバーとクライアントをセットアップしてから、PostgreSQLAPIを構成します。
これが私のラボからのgitdiffです:
-
サーバー:
-
サーバーのバックアップスペースを増やす:
--- a/etc/amanda/omiday/amanda.conf +++ b/etc/amanda/omiday/amanda.conf @@ -13,7 +13,7 @@ amrecover_changer "changer" tapetype "TEST-TAPE" define tapetype TEST-TAPE { 1. length 100 mbytes 2. length 500 mbytes filemark 4 kbytes }
-
PostgreSQLターゲットを定義します(そしてサンプルバックアップを無効にします):
--- a/etc/amanda/omiday/disklist +++ b/etc/amanda/omiday/disklist @@ -1,3 +1,2 @@ -localhost /etc simple-gnutar-local +#localhost /etc simple-gnutar-local +10.1.9.243 /var/lib/pgsql/9.6/data dt_ampgsql
-
-
-
クライアント:
-
構成:
--- /dev/null +++ b/etc/amanda/omiday/amanda-client.conf @@ -0,0 +1,5 @@ +property "PG-DATADIR" "/var/lib/pgsql/9.6/data" +property "PG-ARCHIVEDIR" "/var/lib/pgsql/9.6/archive" +property "PG-HOST" "/tmp" +property "PG-USER" "amandabackup" +property "PG-PASSFILE" "/etc/amanda/pg_passfile"
-
認証ファイル:
--- /dev/null +++ b/etc/amanda/pg_passfile @@ -0,0 +1 @@ +/tmp:*:*:amandabackup:pass
-
-
サーバーを承認します:
--- a/var/lib/amanda/.amandahosts +++ b/var/lib/amanda/.amandahosts @@ -1,2 +1,3 @@ localhost amandabackup amdump localhost.localdomain amandabackup amdump +10.1.9.231 amandabackup amdump
-
PostgreSQL認証:
--- a/var/lib/pgsql/9.6/data/pg_hba.conf +++ b/var/lib/pgsql/9.6/data/pg_hba.conf @@ -79,7 +79,8 @@ # "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: -host all all 127.0.0.1/32 ident +host all all 127.0.0.1/32 trust +host all amandabackup 10.1.9.243/32 trust # IPv6 local connections: host all all ::1/128 ident # Allow replication connections from localhost, by a user with the
-
PostgreSQL構成:
--- a/var/lib/pgsql/9.6/data/postgresql.conf +++ b/var/lib/pgsql/9.6/data/postgresql.conf @@ -178,6 +178,7 @@ dynamic_shared_memory_type = posix # the default is the first option #wal_level = minimal # minimal, replica, or logical # (change requires restart) +wal_level = replica #fsync = on # flush data to disk for crash safety # (turning this off can cause # unrecoverable data corruption) @@ -215,10 +216,12 @@ dynamic_shared_memory_type = posix # the default is the first option #archive_mode = off # enables archiving; off, on, or always # (change requires restart) +archive_mode = on #archive_command = '' # command to use to archive a logfile segment # placeholders: %p = path of file to archive # %f = file name only # e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f' +archive_command = 'test ! -f /var/lib/pgsql/9.6/archive/%f && cp %p /var/lib/pgsql/9.6/archive/%f' #archive_timeout = 0 # force a logfile segment switch after this # number of seconds; 0 disables
-
上記の構成が完了したら、バックアップを実行します。
[[email protected] ~]$ amdump omiday
そして確認します:
[[email protected] ~]$ amreport omiday
Hostname: cc
Org : omiday
Config : omiday
Date : April 14, 2018
These dumps were to tape MyData01.
The next tape Amanda expects to use is: MyData02.
STATISTICS:
Total Full Incr. Level:#
-------- -------- -------- --------
Estimate Time (hrs:min) 0:00
Run Time (hrs:min) 0:00
Dump Time (hrs:min) 0:00 0:00 0:00
Output Size (meg) 0.1 0.0 0.1
Original Size (meg) 16.0 0.0 16.0
Avg Compressed Size (%) 0.5 -- 0.5
DLEs Dumped 1 0 1 1:1
Avg Dump Rate (k/s) 33.7 -- 33.7
Tape Time (hrs:min) 0:00 0:00 0:00
Tape Size (meg) 0.1 0.0 0.1
Tape Used (%) 0.0 0.0 0.0
DLEs Taped 1 0 1 1:1
Parts Taped 1 0 1 1:1
Avg Tp Write Rate (k/s) 830.0 -- 830.0
USAGE BY TAPE:
Label Time Size % DLEs Parts
MyData01 0:00 83K 0.0 1 1
NOTES:
planner: tapecycle (3) <= runspercycle (3)
planner: Last full dump of 10.1.9.243:/var/lib/pgsql/9.6/data on tape MyData04 overwritten in 3 runs.
taper: tape MyData01 kb 83 fm 1 [OK]
DUMP SUMMARY:
DUMPER STATS TAPER STATS
HOSTNAME DISK L ORIG-KB OUT-KB COMP% MMM:SS KB/s MMM:SS KB/s
-------------------------------------- ---------------------- -------------- -------------
10.1.9.243 /var/lib/pgsql/9.6/data 1 16416 83 0.5 0:02 33.7 0:00 830.0
(brought to you by Amanda version 3.5.1)
バックアップからの復元には、復元のセクションで説明されているように、より手動の手順が含まれます。
Amanda Enterprise FAQによると、次の拡張機能がPostgreSQLの例に適用されます。
- バックアップ、保持ポリシー、およびスケジュールを自動化するための管理コンソール
- AmazonS3クラウドストレージへのバックアップ
バーマン
Barmanは、2ndQuadrantによって管理されているPostgreSQLのディザスタリカバリソリューションです。複数のデータベースのバックアップを管理するように設計されており、PostgreSQLのPITR機能を使用して以前の時点に復元する機能があります。
バーマンの機能の概要:
- 複数のターゲットを処理します
- さまざまなPostgreSQLバージョンのサポート
- データ損失ゼロ
- WALのストリーミングおよび/または標準アーカイブ
- ローカルまたはリモートリカバリ
- ポイントインタイムリカバリの簡素化
バーマンマニュアルに記載されているように、増分バックアップ、並列ジョブ、データ重複排除、およびネットワーク圧縮のサポートは、rsyncオプションを使用している場合にのみ利用できます。また、archive_commandを使用したスタンバイからのWALのストリーミングは現在サポートされていません。
環境を設定するためのマニュアルの指示に従った後、確認できます:
-bash-4.2$ barman list-server
db1 - master
db2 - replica
-bash-4.2$ barman check db1
Server db1:
PostgreSQL: OK
is_superuser: OK
PostgreSQL streaming: OK
wal_level: OK
replication slot: OK
directories: OK
retention policy settings: OK
backup maximum age: OK (no last_backup_maximum_age provided)
compression settings: OK
failed backups: OK (there are 0 failed backups)
minimum redundancy requirements: OK (have 0 backups, expected at least 0)
pg_basebackup: OK
pg_basebackup compatible: OK
pg_basebackup supports tablespaces mapping: OK
archive_mode: OK
archive_command: OK
continuous archiving: OK
pg_receivexlog: OK
pg_receivexlog compatible: OK
receive-wal running: OK
archiver errors: OK
-bash-4.2$ barman check db2
Server db2:
PostgreSQL: OK
is_superuser: OK
PostgreSQL streaming: OK
wal_level: OK
replication slot: OK
directories: OK
retention policy settings: OK
backup maximum age: OK (no last_backup_maximum_age provided)
compression settings: OK
failed backups: OK (there are 0 failed backups)
minimum redundancy requirements: OK (have 0 backups, expected at least 0)
pg_basebackup: OK
pg_basebackup compatible: OK
pg_basebackup supports tablespaces mapping: OK
archive_mode: OK
archive_command: OK
continuous archiving: OK
pg_receivexlog: OK
pg_receivexlog compatible: OK
receive-wal running: OK
archiver errors: OK
すべてOKであるため、2つのホストをバックアップしてテストできます。
-bash-4.2$ barman backup db1
Starting backup using postgres method for server db1 in /var/lib/barman/db1/base/20180414T091155
Backup start at LSN: 0/240001B0 (000000010000000000000024, 000001B0)
Starting backup copy via pg_basebackup for 20180414T091155
Copy done (time: 2 seconds)
Finalising the backup.
This is the first backup for server db1
WAL segments preceding the current backup have been found:
000000010000000000000023 from server db1 has been removed
Backup size: 201.9 MiB
Backup end at LSN: 0/26000000 (000000010000000000000025, 00000000)
Backup completed (start time: 2018-04-14 09:11:55.783708, elapsed time: 2 seconds)
Processing xlog segments from file archival for db1
000000010000000000000023
000000010000000000000024
000000010000000000000025.00000028.backup
Processing xlog segments from streaming for db1
000000010000000000000024
-bash-4.2$ barman backup db2
Starting backup using postgres method for server db2 in /var/lib/barman/db2/base/20180414T091225
Backup start at LSN: 0/B0000D0 (00000001000000000000000B, 000000D0)
Starting backup copy via pg_basebackup for 20180414T091225
Copy done (time: 3 seconds)
Finalising the backup.
This is the first backup for server db2
WAL segments preceding the current backup have been found:
000000010000000000000009 from server db2 has been removed
00000001000000000000000A from server db2 has been removed
Backup size: 196.8 MiB
Backup end at LSN: 0/D000000 (00000001000000000000000C, 00000000)
Backup completed (start time: 2018-04-14 09:12:25.619005, elapsed time: 3 seconds)
Processing xlog segments from file archival for db2
00000001000000000000000B
00000001000000000000000C.00000028.backup
Processing xlog segments from streaming for db2
00000001000000000000000B
バックアップカタログを一覧表示します:
-bash-4.2$ barman list-backup all
db1 20180414T091155 - Sat Apr 14 09:11:58 2018 - Size: 217.9 MiB - WAL Size: 0 B
db2 20180414T091225 - Sat Apr 14 09:12:28 2018 - Size: 212.8 MiB - WAL Size: 0 B
特定のバックアップの内容を表示する:
-bash-4.2$ barman list-files db1 20180414T091155 | head
/var/lib/barman/db1/base/20180414T091155/backup.info
/var/lib/barman/db1/base/20180414T091155/data/backup_label
/var/lib/barman/db1/base/20180414T091155/data/PG_VERSION
/var/lib/barman/db1/base/20180414T091155/data/postgresql.auto.conf
/var/lib/barman/db1/base/20180414T091155/data/pg_ident.conf
/var/lib/barman/db1/base/20180414T091155/data/postgresql.conf
/var/lib/barman/db1/base/20180414T091155/data/pg_hba.conf
Barmanが同期WALストリーミング用に構成されている場合、レプリケーションステータスを確認できます。
-bash-4.2$ barman replication-status db1
Status of streaming clients for server 'db1':
Current LSN on master: 0/26000528
Number of streaming clients: 1
1. Async WAL streamer
Application name: barman_receive_wal
Sync stage : 3/3 Remote write
Communication : TCP/IP
IP Address : 10.1.9.231 / Port: 37278 / Host: -
User name : streaming_barman
Current state : streaming (async)
Replication slot: barman
WAL sender PID : 2046
Started at : 2018-04-14 09:04:03.019323+00:00
Sent LSN : 0/26000528 (diff: 0 B)
Write LSN : 0/26000528 (diff: 0 B)
Flush LSN : 0/26000000 (diff: -1.3 KiB)
提供されているフックスクリプトを使用して、さらに拡張機能を追加できます。
最後に、コマンドライン愛好家のために、Barmanには完全なTAB補完が付属しています。
EDBバックアップおよびリカバリツール(BART)
EDB BARTは、EnterpriseDBが提供するクローズドソースのプロプライエタリアプリケーションです。 PostgreSQLのネイティブファイルシステムレベルのバックアップとPITRを組み合わせて、次の機能を提供する使いやすいツールにします。
- 保持ポリシー
- 増分バックアップ
- 複数のPostgresPlusAdvancedServerおよびPostgreSQLデータベースサーバーの完全でホットな物理バックアップ
- ローカルホストまたはリモートホスト上のデータベースサーバーのバックアップとリカバリの管理
- バックアップデータの集中カタログ
- バックアップデータを圧縮形式で保存する
- チェックサム検証
最新バージョンv2.1の試用版は、yum repoリクエストを介してのみ入手できますが、Data Backup Made Easyの記事と製品ドキュメントガイドには、詳細を知りたい方のための情報が記載されています。
今日のホワイトペーパーをダウンロードするClusterControlを使用したPostgreSQLの管理と自動化PostgreSQLの導入、監視、管理、スケーリングを行うために知っておくべきことについて学ぶホワイトペーパーをダウンロードするpgBackRest
pgBackRestは、一般的なツールtarおよびrsyncに依存しない完全なシステムバックアップを実装します。現在、MITライセンスの下でCrunchyDataによってホストされ、利用可能になっています。その起源の詳細については、認識を参照してください。
PostgreSQL中心のツールに期待されるすべての機能を提供します:
- 高いバックアップ/復元スループット
- 完全バックアップ、増分バックアップ、および差分バックアップ
- 保持ポリシー
- ファイルチェックサムとPostgreSQLページチェックサムとの統合によるバックアップと復元の整合性検証。
- バックアップを再開する機能
- ストリーミング圧縮とチェックサム
- AmazonS3クラウドストレージのサポート
- 暗号化
..そしてもっとたくさん。詳細については、プロジェクトページを参照してください。
インストールには64ビットのLinux/Unixシステムが必要であり、ユーザーガイドに概説されています。このガイドでは、PostgreSQLやストレージテクノロジーを初めて使用する人にとって非常に役立つ主要な概念についても読者に紹介しています。
このガイドではDebian/Ubuntuのコマンド例を使用していますが、pgBackRestはPGDG yumリポジトリで利用可能であり、インストーラーはすべての依存関係をプルします:
インストール:
pgbackrest x86_64 2.01-1.rhel7 pgdg10 36k
Installing for dependencies:
perl-DBD-Pg x86_64 2.19.3-4.el7 base 195k
perl-DBI x86_64 1.627-4.el7 base 802k
perl-Digest-SHA x86_64 1:5.85-4.el7 base 58k
perl-JSON-PP noarch 2.27202-2.el7 base 55k
perl-Net-Daemon noarch 0.48-5.el7 base 51k
perl-PlRPC noarch 0.2020-14.el7 base 36k
perl-XML-LibXML x86_64 1:2.0018-5.el7 base 373k
perl-version x86_64 3:0.99.07-2.el7 base 84k
それぞれが1つのノードを持つ2つのクラスター、pg96とpg10をセットアップしましょう:
-
コントロールノード(ガイドの「リポジトリ」):
[[email protected] ~]# cat /etc/pgbackrest.conf [global] repo1-path=/var/lib/pgbackrest repo1-retention-full=2 start-fast=y [pg96] pg1-path=/var/lib/pgsql/9.6/data pg1-host=db1 pg1-host-user=postgres [pg10] pg1-path=/var/lib/pgsql/10/data pg1-host=db2 pg1-host-user=postgres
-
クラスター#1:
[[email protected] ~]# cat /etc/pgbackrest.conf [global] log-level-file=detail repo1-host=repository [pg96] pg1-path=/var/lib/pgsql/9.6/data
-
クラスター#2:
[[email protected] ~]# cat /etc/pgbackrest.conf [global] log-level-file=detail repo1-host=repository [pg10] pg1-path=/var/lib/pgsql/10/data
次に、バックアップを実行し、バックアップカタログを表示します。
-bash-4.2$ pgbackrest --stanza=pg96 info
stanza: pg96
status: ok
db (current)
wal archive min/max (9.6-1): 00000001000000000000003D / 00000001000000000000003D
full backup: 20180414-120727F
timestamp start/stop: 2018-04-14 12:07:27 / 2018-04-14 12:08:01
wal start/stop: 00000001000000000000003D / 00000001000000000000003D
database size: 185.6MB, backup size: 185.6MB
repository size: 12.1MB, repository backup size: 12.1MB
-bash-4.2$ pgbackrest --stanza=pg10 info
stanza: pg10
status: ok
db (current)
wal archive min/max (10-1): 000000010000000000000012 / 000000010000000000000012
full backup: 20180414-120810F
timestamp start/stop: 2018-04-14 12:08:10 / 2018-04-14 12:08:38
wal start/stop: 000000010000000000000012 / 000000010000000000000012
database size: 180.5MB, backup size: 180.5MB
repository size: 11.6MB, repository backup size: 11.6MB
pgBackRestは、バックアップと復元の並列化をサポートします—ガイドの例に従って、1つのCPUでバックアップし、2つのCPUを使用するように構成を更新します。
--- a/etc/pgbackrest.conf
+++ b/etc/pgbackrest.conf
@@ -2,6 +2,7 @@
repo1-path=/var/lib/pgbackrest
repo1-retention-full=2
start-fast=y
+process-max=2
[pg96]
pg1-host=db1
結果:
-bash-4.2$ pgbackrest --stanza=pg96 info
stanza: pg96
status: ok
db (current)
wal archive min/max (9.6-1): 00000001000000000000003D / 000000010000000000000041
full backup: 20180414-120727F
timestamp start/stop: 2018-04-14 12:07:27 / 2018-04-14 12:08:01
wal start/stop: 00000001000000000000003D / 00000001000000000000003D
database size: 185.6MB, backup size: 185.6MB
repository size: 12.1MB, repository backup size: 12.1MB
incr backup: 20180414-120727F_20180414-121434I
timestamp start/stop: 2018-04-14 12:14:34 / 2018-04-14 12:14:52
wal start/stop: 00000001000000000000003F / 00000001000000000000003F
database size: 185.6MB, backup size: 8.2KB
repository size: 12.1MB, repository backup size: 431B
backup reference list: 20180414-120727F
incr backup: 20180414-120727F_20180414-121853I
timestamp start/stop: 2018-04-14 12:18:53 / 2018-04-14 12:19:08
wal start/stop: 000000010000000000000041 / 000000010000000000000041
database size: 185.6MB, backup size: 8.2KB
repository size: 12.1MB, repository backup size: 429B
backup reference list: 20180414-120727F
2つのCPUを使用すると、バックアップの実行速度がほぼ20%速くなり、大規模なデータセットに対して実行する場合に大きな違いが生じる可能性があります。
結論
PostgreSQL中心のバックアップツールは、予想通り、汎用ツールよりも多くのオプションを提供します。ほとんどのPostgreSQLバックアップツールは同じコア機能を提供しますが、それらの実装には制限があり、ドキュメントを注意深くフォローして製品をテストドライブすることによってのみ発見できます。
さらに、ClusterControlは、データベース管理セットアップの一部として使用できる一連のバックアップおよび復元機能を提供します。