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

Barman 2.11:barman-cloud-restoreおよびbarman-cloud-wal-restore

    新しいユーティリティのおかげでbarman-cloud-restore およびbarman-cloud-wal-restore Barman 2.11で導入されました 、以前にbarman-cloud-wal-archiveを使用して実行された完全バックアップを使用して、PostgreSQLインスタンスのリカバリを実行できるようになりました。 およびbarman-cloud-backup コマンド。次の記事で、これを実装する方法を一緒に見つけましょう。


    Barman 2.11では、Barmanのすべてのクラウドユーティリティがbarman-cli-cloudという別のパッケージに含まれていることに注意してください。 。

    要件

    1. barman-cli-cloud パッケージ
    2。 PostgreSQLインスタンス
    3。 AWSS3バケット
    4。復元を実行する2番目の仮想マシン

    この記事では、barman-cli-cloudをテストします DebianBusterとPostgreSQL12を使用した仮想マシンの機能。この記事に含まれている手順に正しく従うために、次のことも前提としています。

    • barman-cloud-wal-archiveを使用してWALファイルを既存のS3バケットにアーカイブするようにPostgresを設定しました
    • バックアップを実行し、barman-cloud-backupを介して同じS3バケットに送信します

    これらの以前のブログ記事に含まれている指示に従うことで、これを簡単に達成できます。

    • Barman Cloud –パート1:WALアーカイブ
    • バーマンクラウド–パート2:クラウドバックアップ

    リカバリサーバーをセットアップする

    その結果、AWSにはbarman-s3-testという名前のS3バケットがあります。 これには、barman-cloud-wal-archiveを介してアーカイブされたWALファイルとバックアップがすでに含まれています。 およびbarman-cloud-backup ツールを使用する場合は、PostgreSQLインスタンスのリカバリのホストとなるサーバーを適切に構成する必要があります。

    1.公式PGDGリポジトリからPostgreSQL12をインストールします

    2.2ndQuadrantパブリックリポジトリをインストールします

    3. barman-cli-cloudをインストールします パッケージ:

    [email protected]:~# apt update
    [email protected]:~# apt install barman-cli-cloud
    

    4. awscliをインストールします パッケージ:

    [email protected]:~# apt install awscli
    

    5.postgresユーザーとしてawscliツールを使用してAWSクレデンシャルを設定します。

    [email protected]:~$ aws configure --profile barman-cloud
    AWS Access Key ID [None]: AKI*****************
    AWS Secret Access Key [None]: ****************************************
    Default region name [None]: eu-west-1
    Default output format [None]: json
    

    復元手順を実行します

    リカバリサーバーが正しく構成されたので、復元手順を開始する準備が整いました。

    Barman 2.11では、barman-cloud-backup-listが導入されています barman-cloud-backupで作成されたバックアップに関する情報を取得できるコマンド :

    [email protected]:~$ barman-cloud-backup-list \
      --profile barman-cloud \
      s3://barman-s3-test pg12
    Backup ID           End Time                 Begin Wal
    20200713T120856     2020-07-13 12:09:05      00000001000000000000000C
    

    これで、barman-cloud-restoreを使用して復元を実行する準備が整いました。 コマンド:

    [email protected]:~$ barman-cloud-restore \
      --profile barman-cloud \
      s3://barman-s3-test \
      pg12 20200713T120856 \
      /var/lib/postgresql/12/main/
    

    復元が正常に終了したら、PGDATAディレクトリの内容を確認できます。

    [email protected]:~$ ls /var/lib/postgresql/12/main/
    PG_VERSION    global        pg_hba.conf    pg_multixact  pg_serial     pg_stat_tmp  pg_twophase  postgresql.auto.conf
    backup_label  pg_commit_ts  pg_ident.conf  pg_notify     pg_snapshots  pg_subtrans  pg_wal       postgresql.conf
    base          pg_dynshmem   pg_logical     pg_replslot   pg_stat       pg_tblspc    pg_xact
    

    ここで、復元プロセスが正しく機能したことを確認するために、復元されたPostgreSQLインスタンスを起動し、すべてが期待どおりに機能することを確認する必要があります。このプロセスには、いくつかの追加手順が必要です。

    まず、Debianシステムを使用しているため、PostgreSQL構成を含むファイルを/etc/postgresql/12/main/にコピーする必要があります。 ディレクトリ:

    [email protected]:~$ cp /var/lib/postgresql/12/main/postgresql.conf /etc/postgresql/12/main/
    
    [email protected]:~$ cp /var/lib/postgresql/12/main/pg_hba.conf /etc/postgresql/12/main/
    
    [email protected]:~$ cp /var/lib/postgresql/12/main/pg_ident.conf /etc/postgresql/12/main/
    

    次に、recovery.signalを作成します ファイル:

    [email protected]:~$ touch /var/lib/postgresql/12/main/recovery.signal
    

    次に、archive_commandを無効にします 復元されたインスタンスが元のインスタンスと同じバケットに書き込まれないようにするには:

    [email protected]:~$ echo \"archive_command = 'cd .'\" >> /etc/postgresql/12/main/postgresql.conf
    

    その後、barman-cloud-wal-restoreを使用して、S3バケットから利用可能な最新のタイムラインのWALファイルを取得するようにPostgreSQLを設定する必要があります。 restore_commandで :

    [email protected]:~$ echo \"restore_command = 'barman-cloud-wal-restore --profile barman-cloud s3://barman-s3-test pg12 %f %p'\" >> /etc/postgresql/12/main/postgresql.conf
    [email protected]:~$ echo \"recovery_target_timeline = 'latest'\" >> /etc/postgresql/12/main/postgresql.conf
    

    重要 :続行する前に、PostgreSQLインスタンスが実行されていないこと、および宛先ディレクトリ(デフォルトのPostgreSQLデータディレクトリ)が空であることを確認してください。

    最後に、新しくリカバリされたインスタンスを開始する準備が整いました:

    [email protected]:~# systemctl restart [email protected]
    

    素晴らしい! PostgreSQLログからわかるように、WALファイルはS3バケットから回復され、インスタンスは正しく開始されました:

    [email protected]:~$ less /var/log/postgresql/postgresql-12-main.log
    ...
    2020-07-13 12:43:25.093 UTC [9458] LOG:  starting PostgreSQL 12.3 (Debian 12.3-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
    2020-07-13 12:43:25.093 UTC [9458] LOG:  listening on IPv4 address "127.0.0.1", port 5432
    2020-07-13 12:43:25.095 UTC [9458] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
    2020-07-13 12:43:25.111 UTC [9459] LOG:  database system was interrupted; last known up at 2020-07-13 12:08:56 UTC
    2020-07-13 12:43:25.508 UTC [9459] LOG:  starting archive recovery
    2020-07-13 12:43:26.010 UTC [9459] LOG:  restored log file "00000001000000000000000C" from archive
    2020-07-13 12:43:26.052 UTC [9459] LOG:  redo starts at 0/C000028
    2020-07-13 12:43:26.054 UTC [9459] LOG:  consistent recovery state reached at 0/C000138
    2020-07-13 12:43:26.054 UTC [9458] LOG:  database system is ready to accept read only connections
    2020-07-13 12:43:26.469 UTC [9459] LOG:  restored log file "00000001000000000000000D" from archive
    2020-07-13 12:43:26.823 UTC [9459] LOG:  redo done at 0/D0001B0
    2020-07-13 12:43:27.242 UTC [9459] LOG:  restored log file "00000001000000000000000D" from archive
    2020-07-13 12:43:27.592 UTC [9459] LOG:  selected new timeline ID: 2
    2020-07-13 12:43:27.644 UTC [9459] LOG:  archive recovery complete
    2020-07-13 12:43:27.979 UTC [9458] LOG:  database system is ready to accept connections
    

    結論

    Barmanの新しいリリースではいつものように、システムを最新バージョンに更新することをお勧めします。変更点とバグ修正の完全なリストは、こちらから入手できます。

    すでにbarman-cloud-wal-archiveを使用している場合は注意してください またはbarman-cloud-backup RPM / Aptパッケージを介してインストールされ、システムをアップグレードする場合は、barman-cli-cloudをインストールする必要があります パッケージ。これは、Barman 2.11リリースでは、すべてのクラウド関連ツールがbarman-cli-cloudの一部であるという事実によるものです。 記事の冒頭で説明したパッケージ。

    Barmanの次のバージョンでは、たとえばrecovery.confを準備することにより、recoverコマンドの使いやすさと自動化機能が向上する可能性があります。 またはrecovery.signal 実際のバーマンのようにファイルします。


    1. SQLコマンドの概要

    2. ODBCレイヤーのテスト

    3. 北欧PGDayの準備はできていますか?

    4. SQL Server:NVARCHARのダークサイド