新しいユーティリティのおかげで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
実際のバーマンのようにファイルします。