クイックスタート#
barmanを使用したアーキテクチャバックアップデザイン で述べられているように、専用ホストでBarmanをセットアップすることをお勧めします。ただし、このチュートリアルの例では、次のホストを前提としています。
pghostPostgresが実行されているホスト。barmanhostBarmanがセットアップされるホスト。
barmanhost に従って、 Barmanが barmanhost に既にインストールされていると仮定すると、次の手順に進むことができます。
最初のサーバーの構成#
Barmanは、さまざまなバックアップおよびWALアーカイブ戦略をサポートしています。ここでは、最も一般的に使用される2つのアーキテクチャをセットアップするための簡単なレシピを見つけます。ニーズに最も適したものを選択し、次のセクションに進みます。
WALストリーミングを使用したストリーミングバックアップ#
この戦略では、バックアップとWALアーカイブの両方にPostgresストリーミングレプリケーションプロトコルを使用するため、実装するには pghost と barmanhost 間のネイティブPostgres接続のみが必要です。このアプローチの主な利点は、SSH接続が必要ないため、他の戦略と比較してセットアップが簡単なオプションになることです。
バックアップは pg_basebackup ユーティリティに、WALファイルの転送は pg_receivewal に依存します。したがって、事前に両方のツールを barmanhost にインストールしておく必要があります。これらのツールのインストール方法の詳細が必要な場合は、 pg_basebackup セクションを確認してください。
1.最初のステップとして、Postgresサーバーで必要なユーザーを作成しましょう。 pghost で、次のコマンドを実行します。
createuser -s -P barman
このコマンドは、 barman と呼ばれる新しいPostgresスーパーユーザーを作成します。これは、PostgresサーバーのメンテナンスタスクにBarmanが使用します。または、スーパーユーザー権限は持たないが、 barman のレシピに従って、必要な操作を実行するために必要な権限を持つユーザーを作成できます。
createuser -P --replication streaming_barman
このコマンドは、レプリケーション特権を持つ streaming_barman という新しいPostgresユーザーを作成します。これは、 Barmanサーバーにファイルを転送するために pg_receivewal および pg_basebackup を呼び出すときにBarmanが使用します。
どちらの createuser コマンドも、パスワードの入力を求めます。パスワードは、 barmanhost のBarmanホームディレクトリの下の .pgpass という名前の createuser に追加することをお勧めします。ストリーミング接続の構成方法の詳細が必要な場合は、 createuser セクションを確認してください。
これ以降、このセクションでは、PostgresユーザーとバックアップするPostgresサーバーの両方が既に作成されていることを前提としています。また、 postgres という名前のデータベースが利用できることを想定しているため、 Barmanはそのデータベースを介してPostgresサーバーに接続できます。
2.次に、以前に作成したユーザーへのアクセスを許可してください barmanhost 。 pghost で、次のHBAルールを pg_hba.conf ファイルに追加します。
# allows access to the barman user from barmanhost
host all barman barmanhost/32 md5
# allows access to the streaming_barman user from barmanhost
host replication streaming_barman barmanhost/32 md5
次に、 Postgres構成をリロードして、新しいHBAルールを有効にします。 pghost で、次を実行します。
psql -c "SELECT pg_reload_conf();"
3. Still on pghost, make sure your Postgres server is properly configured for
WAL streaming. On its postgresql.conf file, assert that
wal_level
is set to replica or logical:
wal_level = replica
wal_level 構成値が変更された場合は、Postgresサーバーを再起動して変更を有効にします。
4.次に、 Barmanで最初のバックアップサーバーを構成します。 barmanhost で、次の内容を使用してファイルを /etc/barman.d/streaming-backup-server.conf に作成します。
[streaming-backup-server]
description = "Postgres server using streaming replication"
streaming_archiver = on
backup_method = postgres
streaming_conninfo = host=pghost user=streaming_barman dbname=postgres
slot_name = barman
create_slot = auto
conninfo = host=pghost user=barman dbname=postgres
そこで
[streaming-backup-server]は、 Barman上のバックアップサーバーに選択した名前です。descriptionは、バックアップサーバーの説明テキストです。streaming_archiver = onは、このバックアップサーバーのWALファイルがストリーミングレプリケーションを使用してPostgresからBarmanに転送されることをBarmanに指示します。backup_method = postgresは、このサーバーがバックアップ方法としてpostgresを使用することをBarmanに伝えます。これは、本質的にpg_basebackupを使用してバックアップを取ることを意味します。streaming_conninfoは、Postgresサーバーへの:term:libpq`接続の接続文字列です。これは、 ``pg_receivewal` およびpg_basebackupがBarmanサーバーにファイルを転送するために使用する接続です。slot_nameは、このバックアップサーバーがpg_receivewalを介してWALをストリーミングするために使用されるPostgresの物理レプリケーションスロットの名前です。create_slot = autoは、Postgresでレプリケーションスロットを自動的に作成する必要があることをBarmanに指示し、事前の手動作成は必要ありません。conninfoは、 Barmanがメンテナンスの目的で使用するPostgresサーバーへの:term:`libpq`接続の接続文字列です。
barmanhost で、次を実行します。
barman list-servers
Barmanに構成されたすべてのバックアップサーバーを含む出力が表示され、新しいサーバーを認識したことを確認します。
streaming-backup-server - Postgres server using streaming replication
5. Once finished with the configuration of both Barman and Postgres servers, you
should be ready to go! Execute the following command on barmanhost to check
that everything is OK with your server:
barman check streaming-backup-server
WALアーカイブに関連する失敗したチェックが表示された場合でも、心配する必要はありません。これは、 Barmanがまだ完全なWALファイルを受け取っていないことを意味します。おそらく、サーバーが最初に作成されてからPostgresサーバーでWALセグメントがスイッチされていないためです。次のコマンドを使用して、 barmanhost からWALスイッチを強制できます。
barman switch-wal --force streaming-backup-server
また、レプリケーションスロットと pg_receivewal に関連するチェックが失敗した場合は、次のコマンドを実行します。
barman cron
このコマンドは、 Barmanサーバーでメンテナンスタスクを実行するバックグラウンドプロセスを開始します。これらのタスクには、 Postgresのレプリケーションスロットの作成、 create_slot = auto の場合、および pg_receivewal プロセスの起動が含まれます。
checkコマンドを再度実行し、失敗したチェックが表示されないことを確認します。
barman check streaming-backup-server
このサーバーは、バックアップを取得し、PostgresサーバーからWALファイルを受信する準備が整いました。 taking your first backup セクションに移動します。
WALアーカイブを使用したRsyncバックアップ#
この戦略は、RsyncおよびSSH接続に依存して、バックアップファイルとWALファイルをBarmanサーバーに転送します。
SSH接続に依存するため、 pghost と barmanhost の間で双方向のパスワードなしのSSH接続が必要です。これを設定する方法の詳細については、 pghost セクションを参照してください。
1.最初のステップとして、Postgresサーバーで必要なユーザーを作成しましょう。 pghost で、次のコマンドを実行します。
createuser -s -P barman
このコマンドは、 barman と呼ばれる新しいPostgresスーパーユーザーを作成します。これは、 Barmanがメンテナンスタスクと、Postgres低レベルAPIを使用してバックアップコマンドを発行するために使用されます。または、スーパーユーザー権限は持たないが、 barman のレシピに従って、必要な操作を実行するために必要な権限を持つユーザーを作成できます。
createuser コマンドは、パスワードの入力を求めます。パスワードは、 barmanhost のBarmanホームディレクトリの下の .pgpass という名前の createuser に追加することをお勧めします。
これ以降、このセクションでは、このPostgresユーザーとバックアップするPostgresサーバーが既に作成されていることを前提としています。また、 postgres という名前のデータベースが利用できることを想定しているため、 Barmanはそのデータベースを介してPostgresサーバーに接続できます。
2.次に、以前に作成したユーザーへのアクセスを許可してください barmanhost 。 pghost で、次のHBAルールを pg_hba.conf ファイルに追加します。
# allows access to the barman user from barmanhost
host all barman barmanhost/32 md5
次に、 Postgres構成をリロードして、新しいHBAルールが有効になります。 pghost で、次を実行します。
psql -c "SELECT pg_reload_conf();"
3. Still on pghost, make sure your Postgres server is properly configured for WAL
archiving. On its postgresql.conf file, assert the following parameters are
properly set:
wal_level = replica
archive_mode = on
archive_command = 'barman-wal-archive barmanhost rsync-backup-server %p'
注釈
Barman 2.6以降、 archive_command を介してWALファイルをアーカイブする推奨される方法は、上記の例のように、 barman-wal-archive ユーティリティを使用することです。このユーティリティを使用するには、 pghost に barman-cli パッケージもインストールしていることを確認します。詳細および代替コマンドオプションについては、 archive_command セクションを確認してください。
4.次に、 Barmanで最初のバックアップサーバーを構成します。 barmanhost で、次の内容を使用して構成ファイルを /etc/barman.d/rsync-backup-server.conf に作成します。
[rsync-backup-server]
description = "Postgres server using Rsync and WAL archiving"
archiver = on
backup_method = rsync
reuse_backup = link
backup_options = concurrent_backup
ssh_command = ssh postgres@pghost
conninfo = host=pghost user=barman dbname=postgres
そこで
[rsync-backup-server]は、 Barman上のバックアップサーバーに選択した名前です。descriptionは、バックアップサーバーの説明テキストです。archiver = onは、このバックアップサーバーのWALファイルが、Postgresで構成されたarchive_commandを使用してPostgresからBarmanに転送されることをBarmanに指示します。backup_method = rsyncは、このバックアップサーバーがバックアップ方法としてrsyncを使用することをBarmanに伝えます。これは本質的に、Rsyncでクラスターファイルをコピーすることを意味します。reuse_backup = linkは、以前のバックアップのファイルを再利用し、このサーバーの新しいバックアップを取るたびにストレージとネットワークリソースを節約することにより、データ重複排除を行うことをBarmanに指示します。詳細については、reuse_backup = linkセクションを確認してください。backup_options = concurrent_backupは、 Barmanがバックアップを行うときにPostgresサーバーで非排他的なバックアップコマンドを発行することを示します。ssh_commandは、barmanhostからpghostに接続するために使用されるSSHコマンドです。この構成値をそれに応じて置き換えます。conninfoは、 Barmanがメンテナンスの目的で使用するPostgresサーバーへの:term:`libpq`接続の接続文字列です。
barmanhost で、次を実行します。
barman list-servers
Barmanに構成されたすべてのバックアップサーバーを含む出力が表示され、新しいサーバーを認識したことを確認します。
rsync-backup-server - Postgres server using Rsync and WAL archiving
5. Once finished with the configuration of both Barman and Postgres servers, you
should be ready to go! Execute the following command on barmanhost to check
that everything is OK with your server:
barman check rsync-backup-server
WALアーカイブに関連する失敗したチェックが表示された場合でも、心配する必要はありません。これは、 BarmanがまだWALファイルを受信していないことを意味します。おそらく、サーバーが最初に作成されてからPostgresサーバーでWALセグメントがスイッチされていないためです。次のコマンドを使用して、 barmanhost からWALスイッチを強制できます。
barman switch-wal --force rsync-backup-server
次に、次のコマンドを実行します。これにより、 Barmanサーバーでメンテナンスタスクを実行するバックグラウンドプロセスが開始されます。
barman cron
checkコマンドを再度実行し、失敗したチェックが表示されないことを確認します。
barman check rsync-backup-server
このサーバーは、バックアップを取得し、PostgresサーバーからWALファイルを受信する準備が整いました。 taking your first backup セクションに移動します。
最初のバックアップの取得#
バックアップサーバーにどの戦略を選択するかに関係なく、前の手順を完了すると、準備が整います。次のコマンドを実行して、バックアップを取得できます。
barman backup --name first-backup <server_name>
コマンドが完了したら、次のコマンドを使用してバックアップサーバーのすべてのバックアップをリストできます。
barman list-backups <server_name>
そして、次のコマンドで特定のバックアップの詳細を表示します。
barman show-backup <server_name> first-backup
バックアップの復元#
バックアップを復元する必要がある場合は、次のコマンドで行うことができます。
barman restore <server_name> first-backup /path/to/restore
リモートサーバーに復元する場合、 Barmanホストから宛先ホストへのパスワードなしのSSH接続が必要で、そのSSHコマンドは --remote-ssh-command オプションを使用して指定する必要があります。
barman restore --remote-ssh-command="ssh user@host" <server_name> first-backup /path/to/restore