sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLのトップバックアップツール

    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は、データベース管理セットアップの一部として使用できる一連のバックアップおよび復元機能を提供します。


    1. byteaとして取得されたPostgreSQLJDBCNull文字列

    2. SQL Server 2016:SQLスクリプトからテーブルを作成する

    3. CodeIgniterでプリペアドステートメントを使用するにはどうすればよいですか

    4. クエリプランは何を伝えることができますか?