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

Barmanを使用したPostgreSQLのバックアップ-概要

    データベースのバックアップは、本番データベースの効果的なディザスタリカバリ戦略を設計する上で不可欠な役割を果たします。データベース管理者とアーキテクトは、リアルタイムのミッションクリティカルなデータベースの最適で効果的なバックアップ戦略の設計に継続的に取り組み、ディザスタリカバリSLAが確実に満たされるようにする必要があります。私の経験によると、これは簡単ではなく、非の打ちどころのないバックアップ戦略を達成するのに数日から数週間かかる場合があります。データベースをバックアップし、それが機能することを確認するための優れたスクリプトを記述しているだけではありません。考慮すべきいくつかの要因があります。それらを見てみましょう:

    • データベースサイズ: データベースのサイズは、バックアップ戦略を設計する際に重要な役割を果たします。実際、これは
        を定義するコアファクターの1つです。
      • バックアップにかかった時間
      • ディスク、ネットワーク、CPUなどのインフラストラクチャコンポーネントの負荷
      • 必要なバックアップストレージの量と関連するコスト
      • データベースがクラウドでホストされている場合、バックアップストレージのコストは必要なストレージの量によって異なります
      • また、データベースのサイズはRTOに影響します
    • インフラストラクチャ: バックアップ戦略は、データベースのインフラストラクチャに大きく依存しています。バックアップ手順は、オンプレミスのデータセンター内の物理サーバーでホストされているデータベースと、クラウドでホストされているデータベースでは異なります。
    • バックアップ場所: バックアップはどこに行きますか?通常、バックアップはリモートの場所に配置されます。たとえば、テープやAWSS3などのクラウド固有のストレージに配置されます。
    • バックアップツール: 一貫性のあるバックアップが確実に行われるようにする、オンラインデータベースバックアップを実行するための最適なツールを特定します。

    優れたデータベースバックアップ戦略では、RTO(目標復旧時間)とRPO(目標復旧時点)が満たされていることを確認する必要があります。これらは、災害復旧目標の達成に役立ちます。ファイルシステムレベルのバックアップは、いくつかの方法でPostgreSQLデータベースで実行できます。このブログでは、PostgreSQLデータベースのバックアップを実行するために一般的に使用されているBarmanと呼ばれるツールに焦点を当てます。

    Barman(バックアップおよびリカバリマネージャー)は、第2象限の開発者によって開発されたPythonベースのオープンソースツールです。このツールは、ミッションクリティカルなPostgreSQL本番データベースのエンタープライズグレードのデータベースバックアップ戦略を実現するために開発されました。その機能と特性は、OracleのRMANに似ています。私の意見では、barmanはPostgreSQLデータベースに最適なオプションの1つであり、運用の観点からDBAとインフラストラクチャエンジニアにいくつかのメリットをもたらすことができます。

    バーマンのいくつかの機能を見てみましょう:

    構成の概要から始めて、実行できるバックアップの種類をリストします

    技術的には、barman-cliはPythonベースのツールであり、処理する2つの異なる構成ファイルがあります。バックアップされるデータベースの実際の構成である1つのファイルは、「/ etc /barman.d」名に.confとして存在し、もう1つのファイルにはbarman関連のパラメーター(構成されたbarmanバックアップの場所、barmanサーバー、ログファイルなど)は、「/ etc」(/ etc / barman.conf)にあります。 barman構成ファイルにはMySQLタイプのパラメーター構成があります。

    /etc/barman.confファイルの内容の例を以下に示します

    [barman]
    barman_user = barman            ---------> barman user who performs backup/recovery of database
    configuration_files_directory = /etc/barman.d    -----> location for DB configuration files
    barman_home = /dbbackups/barman    ---> barman home directory
    log_file = /dbbackups/barman/logs/barman.log ---> barman log file location
    log_level = INFO  -----> level of logging for barman operations
    compression = gzip  ----->  backups must be compressed

    バーマンのインストール

    バーマンのインストール手順を見てみましょう-

    ソースからのインストール

    https://www.pgbarman.org/

    からバーマンをダウンロードします

    インストーラーを解凍/解凍し、rootユーザーとして次のコマンドを実行します-

    [[email protected] barman-2.4]# ./setup.py install
    /usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'setup_requires'
      warnings.warn(msg)
    /usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'install_requires'
      warnings.warn(msg)
    /usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'tests_require'
      warnings.warn(msg)
    running install
    running build
    running build_py
    creating build
    creating build/lib
    creating build/lib/barman
    copying barman/utils.py -> build/lib/barman
    copying barman/fs.py -> build/lib/barman
    copying barman/retention_policies.py -> build/lib/barman
    copying barman/diagnose.py -> build/lib/barman
    copying barman/backup.py -> build/lib/barman
    copying barman/recovery_executor.py -> build/lib/barman
    copying barman/backup_executor.py -> build/lib/barman
    copying barman/config.py -> build/lib/barman
    copying barman/process.py -> build/lib/barman
    copying barman/output.py -> build/lib/barman
    copying barman/__init__.py -> build/lib/barman
    copying barman/remote_status.py -> build/lib/barman
    copying barman/xlog.py -> build/lib/barman
    copying barman/lockfile.py -> build/lib/barman
    copying barman/postgres.py -> build/lib/barman
    copying barman/server.py -> build/lib/barman
    copying barman/cli.py -> build/lib/barman
    copying barman/version.py -> build/lib/barman
    copying barman/compression.py -> build/lib/barman
    copying barman/wal_archiver.py -> build/lib/barman
    copying barman/infofile.py -> build/lib/barman
    copying barman/exceptions.py -> build/lib/barman
    copying barman/hooks.py -> build/lib/barman
    copying barman/copy_controller.py -> build/lib/barman
    copying barman/command_wrappers.py -> build/lib/barman
    running build_scripts
    creating build/scripts-2.7
    copying and adjusting bin/barman -> build/scripts-2.7
    changing mode of build/scripts-2.7/barman from 644 to 755
    running install_lib
    creating /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/utils.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/fs.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/retention_policies.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/diagnose.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/backup.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/recovery_executor.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/backup_executor.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/config.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/process.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/output.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/__init__.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/remote_status.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/xlog.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/lockfile.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/postgres.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/server.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/cli.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/version.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/compression.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/wal_archiver.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/infofile.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/exceptions.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/hooks.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/copy_controller.py -> /usr/lib/python2.7/site-packages/barman
    copying build/lib/barman/command_wrappers.py -> /usr/lib/python2.7/site-packages/barman
    byte-compiling /usr/lib/python2.7/site-packages/barman/utils.py to utils.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/fs.py to fs.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/retention_policies.py to retention_policies.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/diagnose.py to diagnose.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/backup.py to backup.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/recovery_executor.py to recovery_executor.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/backup_executor.py to backup_executor.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/config.py to config.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/process.py to process.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/output.py to output.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/__init__.py to __init__.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/remote_status.py to remote_status.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/xlog.py to xlog.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/lockfile.py to lockfile.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/postgres.py to postgres.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/server.py to server.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/cli.py to cli.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/version.py to version.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/compression.py to compression.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/wal_archiver.py to wal_archiver.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/infofile.py to infofile.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/exceptions.py to exceptions.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/hooks.py to hooks.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/copy_controller.py to copy_controller.pyc
    byte-compiling /usr/lib/python2.7/site-packages/barman/command_wrappers.py to command_wrappers.pyc
    running install_scripts
    copying build/scripts-2.7/barman -> /usr/bin
    changing mode of /usr/bin/barman to 755
    running install_data
    copying doc/barman.1 -> /usr/share/man/man1
    copying doc/barman.5 -> /usr/share/man/man5
    running install_egg_info
    Writing /usr/lib/python2.7/site-packages/barman-2.4-py2.7.egg-info

    リポジトリからのインストール

    インストールは、次のようにyumを介して行うこともできます

    [[email protected]~]$ yum install barman

    バーマンがサポートするさまざまな種類のバックアップを見てみましょう

    物理的なホットバックアップ

    Barmanは、物理ホットバックアップをサポートしています。つまり、圧縮形式のrsync手法を使用して、データベースの物理データファイルとトランザクションログファイルをオンラインでバックアップします。

    barmanを使用してRSYNCバックアップを実行するための手順とコマンドを見てみましょう

    #1barman用のPostgreSQLデータベース構成ファイル

    [pgdb]
    description="Main PostgreSQL server"
    conninfo=host=pgserver user=postgres dbname=postgres
    ssh_command=ssh [email protected]
    archiver=on
    backup_method = rsync

    「pgdb」はbarmanのPostgresデータベースの識別子であり、構成ファイル名は/etc/barman.d/にある.confである必要があります。 barman backupコマンドが実行されると、barmanはpgdb.confファイルでセクション[pgdb]を探します。

    パラメータbackup_methodは、実行するバックアップのタイプを定義します。この場合、backup_methodはrsyncです。

    注:barman backupコマンドを成功させるには、barmanサーバーとpostgresサーバーの間でパスワードなしのssh認証を構成する必要があります。

    #2postgresql.confファイルパラメータ

    wal_level=replica
    archive_mode=on
    archive_command=’rsync to <ARCHIVE LOCATION>’

    バーマンのバックアップコマンド

    #3バーマンがバックアップを実行する準備ができているかどうかを確認します

    [[email protected] pgdb]$ barman check pgdb
    Server pgdb:
            PostgreSQL: OK
            is_superuser: OK
            wal_level: 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 4 backups, expected at least 0)
            ssh: OK (PostgreSQL server)
            not in recovery: OK
            archive_mode: OK
            archive_command: OK
            continuous archiving: OK
            archiver errors: OK

    上記の出力は、バックアップを続行するためにすべてが「OK」であることを示しています。つまり、バックアップを取るのは良いことです。

    たとえば、以下の出力は、barmanによるとSSHが機能していないため、バックアップを取ることができないことを示しています-

    [[email protected]  ~]$ barman check pgdb
    Server pgdb:
            PostgreSQL: OK
            is_superuser: OK
            wal_level: 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)
            ssh: FAILED (Connection failed using '[email protected] -o BatchMode=yes -o StrictHostKeyChecking=no' return code 127)
            not in recovery: OK
            archive_mode: OK
            archive_command: OK
            continuous archiving: OK
            archiver errors: OK

    #4データベースのバックアップを実行する

    [[email protected] ~]$ barman backup pgdb
    Starting backup using rsync-exclusive method for server pgdb in /dbbackup/barman_backups/pgdb/base/20180816T153846
    Backup start at LSN: 0/1C000028 (00000001000000000000001C, 00000028)
    This is the first backup for server pgdb
    WAL segments preceding the current backup have been found:
            00000001000000000000000B from server pgdb has been removed
            00000001000000000000000C from server pgdb has been removed
            00000001000000000000000D from server pgdb has been removed
            00000001000000000000000E from server pgdb has been removed
            00000001000000000000000F from server pgdb has been removed
            000000010000000000000010 from server pgdb has been removed
            000000010000000000000011 from server pgdb has been removed
            000000010000000000000012 from server pgdb has been removed
            000000010000000000000013 from server pgdb has been removed
            000000010000000000000014 from server pgdb has been removed
            000000010000000000000015 from server pgdb has been removed
            000000010000000000000016 from server pgdb has been removed
    Starting backup copy via rsync/SSH for 20180816T153846
    Copy done (time: 1 second)
    This is the first backup for server pgdb
    Asking PostgreSQL server to finalize the backup.
    Backup size: 21.8 MiB
    Backup end at LSN: 0/1C0000F8 (00000001000000000000001C, 000000F8)
    Backup completed (start time: 2018-08-16 15:38:46.668492, elapsed time: 1 second)
    Processing xlog segments from file archival for pgdb
            000000010000000000000016
            000000010000000000000017
            000000010000000000000018
            000000010000000000000019
            00000001000000000000001A
            00000001000000000000001B
            00000001000000000000001C
            00000001000000000000001C.00000028.backup

    barman backupコマンドが成功するかどうかを理解するには、以下のコマンドが役立ちます-

    増分バックアップ

    Barmanのもう1つの優れた機能は、増分バックアップを取る機能です。つまり、最後のデータベースの完全バックアップ以降に変更されたブロックのみをバックアップできます。データの変更が少ないデータベースの場合、データベースを段階的にバックアップすることで、リソースの使用量を減らすことができます。

    それはrsyncとハードリンクに大きく依存しています。増分バックアップのメリットは次のとおりです–

    • 毎日のバックアップ時間を大幅に短縮します
    • 変更されたデータブロックのみがバックアップされるため、バックアップされるデータの量が減少し、ネットワーク帯域幅、ディスクスペース、I/Oなどのインフラストラクチャリソースの使用量が減少します。
    • 非常に優れたRTOを達成した後は、これが探している機能です

    増分バックアップのコマンドはほとんど同じです。オプションbackup_method=rsyncで取得された最初のバックアップ後の後続のバックアップ 増分バックアップになり、barmanはpg_recievexlogユーティリティを使用してWALをプルします。

    リモートデータベースのバックアップとリカバリ

    私の意見では、Barmanのこの機能はDBAにとって非常に有益です。 DBAが最初に探すのは、バックアップ中に本番データベースサーバーのリソースにできるだけ負荷をかけないようにすることであり、リモートで実行するのが最善のオプションです。 Barmanはpg_basebackupを活用しているため、スクリプト作成と自動化がはるかに簡単になります。

    一般に、自動バックアップで従来から利用可能なオプションは-

    1. pg_basebackup
    2. tarコピー

    上記の2つのオプションには、SLAの要求を満たすための効果的なバックアップ戦略が実施されていることを確認するための多くの開発とテストが含まれ、複数のテーブルスペースを持つ大規模なデータベースに課題をもたらす可能性があります。

    バーマンを使えば、それはとても簡単です。バーマンのもう1つの優れた機能は、継続的なWALストリーミングです。それをもう少し詳しく見てみましょう。

    今日のホワイトペーパーをダウンロードするClusterControlを使用したPostgreSQLの管理と自動化PostgreSQLの導入、監視、管理、スケーリングを行うために知っておくべきことについて学ぶホワイトペーパーをダウンロードする

    継続的なWALストリーミングによるストリーミングバックアップ

    これにより、市場に出回っている他のツールと比較して、バーマンが際立っています。ライブWALファイルは、Barmanを使用してリモートバックアップ場所に継続的にストリーミングできます。これは、DBAが知って興奮する機能です。私はこれについて知って興奮しました。手動で作成したスクリプト、またはpg_basebackupやpg_receivewalなどのツールの組み合わせを使用してこれを実現することは、非常に困難またはほぼ不可能です。継続的なWALストリーミングにより、より優れたRPOを実現できます。バックアップ戦略が細心の注意を払って設計されている場合、ほぼ0のRPOを達成できると言っても過言ではありません。

    ストリーミングバーマンバックアップを実行するための手順、コマンドを見てみましょう

    #1postgresql.confパラメーターの変更

    postgresql.confで実行する次の構成

    wal_level=replica
    max_wal_senders = 2
    max_replication_slots = 2
    synchronous_standby_names = 'barman_receive_wal'
    archive_mode=on
    archive_command = 'rsync -a %p [email protected]:INCOMING_WAL_DIRECTORY/%f'
    archive_timeout=3600 (should not be 0 or disabled)

    #2barmanを使用してレプリケーションスロットを作成する

    レプリケーションスロットは、バックアップのストリーミングにとって重要です。何らかの理由でWALの継続的なストリーミングが失敗した場合、ストリーミングされていないすべてのWALは、削除せずにpostgresデータベースに保持できます。

    [[email protected] ~]$ barman receive-wal --create-slot pgdb
    Creating physical replication slot 'barman' on server 'pgdb'
    Replication slot 'barman' created

    #3barmanのデータベースサーバー構成ファイルを構成する

    barmanのデータベース識別子は「pgdb」です。 pgdb.confという構成ファイルは、/ etc /barman.d/の場所に次の内容で作成する必要があります

    [pgdb]
    description="Main PostgreSQL server"
    conninfo=host=pgserver user=postgres dbname=postgres
    streaming_conninfo=host=pgserver user=barman
    backup_method=postgres
    archiver=on
    incoming_wals_directory=/dbbackups/barman_backups/pgdb/incoming
    streaming_archiver=on
    slot_name=barman

    streaming_conninfo barmanがストリーミングバックアップを実行するように設定するパラメータです
    backup_method ストリーミングバックアップを実行する場合は、「postgres」に設定する必要があります
    streaming_archiver 「オン」に設定する必要があります
    slot_name =barman レプリケーションスロットを使用するためにbarmanが必要な場合は、このパラメータを設定する必要があります。この場合、レプリケーションスロット名は barman

    構成が完了したら、バーマンチェックを実行して、ストリーミングバックアップが正常に実行されることを確認します。

    #4barmanreceive-walが正常に実行されているかどうかを確認します

    一般に、最初のbarman receive-walは構成変更直後は機能せず、エラーが発生し、barmancheckコマンドで次のように表示される場合があります-

    [[email protected]  archive_status]$ barman check pgdb
    Server pgdb:
            PostgreSQL: OK
            is_superuser: OK
            PostgreSQL streaming: OK
            wal_level: 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: FAILED (See the Barman log file for more details)
            archiver errors: OK

    barman receive-walを実行すると、ハングする場合があります。 receive-walを初めて正しく機能させるには、以下のコマンドを実行する必要があります。

    [[email protected]  arch_logs]$ barman cron
    Starting WAL archiving for server pgdb
    Starting streaming archiver for server pgdb

    さて、もう一度バーマンチェックをしてください。今は良いはずです。

    [[email protected]  arch_logs]$ barman check pgdb
    Server pgdb:
            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 2 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

    表示されている場合、receivexlogステータスはokを示しています。これは私が直面した問題の1つです。

    #5バーマンがバックアップを実行する準備ができているかどうかを確認します

    [[email protected] ~]$ barman check pgdb
    Server pgdb:
            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 4 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

    #6barmanを使用してストリーミングステータスを確認する

    [[email protected] pgdb]$ barman replication-status pgdb
    Status of streaming clients for server 'pgdb':
      Current LSN on master: 0/250008A8
      Number of streaming clients: 1
    
      1. #1 Sync WAL streamer
         Application name: barman_receive_wal
         Sync stage      : 3/3 Remote write
         Communication   : TCP/IP
         IP Address      : 192.168.1.10 / Port: 52602 / Host: -
         User name       : barman
         Current state   : streaming (sync)
         Replication slot: barman
         WAL sender PID  : 26592
         Started at      : 2018-08-16 16:03:21.422430+10:00
         Sent LSN   : 0/250008A8 (diff: 0 B)
         Write LSN  : 0/250008A8 (diff: 0 B)
         Flush LSN  : 0/250008A8 (diff: 0 B)

    上記のステータスは、barmanがストリーミングバックアップを実行する準備ができていることを意味します。以下に示すようにバックアップを実行します-

    [[email protected] arch_logs]$ barman backup pgdb
    Starting backup using postgres method for server pgdb in /dbbackup/barman_backups/pgdb/base/20180816T160710
    Backup start at LSN: 0/1F000528 (00000001000000000000001F, 00000528)
    Starting backup copy via pg_basebackup for 20180816T160710
    Copy done (time: 1 second)
    Finalising the backup.
    Backup size: 21.9 MiB
    Backup end at LSN: 0/21000000 (000000010000000000000020, 00000000)
    Backup completed (start time: 2018-08-16 16:07:10.401526, elapsed time: 1 second)
    Processing xlog segments from file archival for pgdb
            00000001000000000000001F
            000000010000000000000020
            000000010000000000000020.00000028.backup
            000000010000000000000021
    Processing xlog segments from streaming for pgdb
            00000001000000000000001F
            000000010000000000000020

    一元化されカタログ化されたバックアップ

    ネットワーク環境の複数のサーバーで複数のデータベースを実行している環境に非常に役立ちます。これは、バーマンの優れた機能の1つです。私はリアルタイム環境で働いてきました-何百ものデータベースを管理、管理する必要があり、常に一元化されたデータベースバックアップの必要性を感じていました。そのため、Oracle RMANはOracleデータベースバックアップ戦略で人気を博し、現在Barmanはそれを満たしています。 PostgreSQL用のスペース。 Barmanを使用すると、DBA、およびDevOpsのエンジニアは、すべてのデータベースのデータベースバックアップが維持、検証される一元化されたバックアップサーバーの構築に取り組むことができます。

    カタログ化されたバックアップとは、barmanが一元化されたリポジトリを維持し、すべてのバックアップのステータスが維持されることを意味します。以下に示すように、特定のデータベースで使用可能なバックアップを確認できます-

    [[email protected] ~]$  barman list-backup pgdb
    pgdb 20180816T160924 - Thu Aug 16 16:09:25 2018 - Size: 22.0 MiB - WAL Size: 135.7 KiB
    pgdb 20180816T160710 - Thu Aug 16 16:07:11 2018 - Size: 21.9 MiB - WAL Size: 105.8 KiB
    pgdb 20180816T153913 - Thu Aug 16 15:39:15 2018 - Size: 21.9 MiB - WAL Size: 54.2 KiB
    pgdb 20180816T153846 - Thu Aug 16 15:38:48 2018 - Size: 21.9 MiB - WAL Size: 53.0 KiB

    バックアップ保持ポリシー

    保持ポリシー データベースのバックアップ用に定義できます。バックアップは一定期間後に廃止される可能性があり、廃止されたバックアップは随時削除される可能性があります。

    構成ファイルには、保持期間が-

    を超えたときにバックアップが保持され、廃止されるようにするオプションがあります。

    構成する最初のパラメーターはminimum_redundancyです 。バックアップが誤って削除されないように、minimum_redundancyを常に>0に設定してください。

    例:minimum_redundancy =1

    • 保持ポリシー パラメータは、ディザスタリカバリSLAが確実に満たされるようにするためにベースバックアップを保持する必要がある期間を決定します。
    • wal_retention_policy パラメータは、walバックアップを保持する必要がある期間を決定します。これにより、期待されるRPOが確実に満たされます。

    データベースサーバーの既存の保持および冗長性ポリシーは、次のようにbarmancheckコマンドを使用して確認できます

    [[email protected] ~]$ barman check pgdb
    Server pgdb:
            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 4 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

    並列バックアップとリカバリ 複数のCPUを利用することで実行できるため、バックアップとリカバリがより高速に完了します。この機能は、最大サイズがテラバイトの非常に大規模なデータベースに役立ちます。

    バックアップを並行して実行するには、データベースサーバー構成ファイル(/etc/barman.d/pgdb.confファイル)に次のオプションを追加します-

    parallel_jobs = 1

    バーマンは、DBAが効果的なディザスタリカバリ戦略を設計するのに役立つ可能性のあるエンタープライズグレードのツールであると結論付けることができます。

    関連リソースClusterControlforPostgreSQL詳細pg_dumpとpg_dumpallを使用したPostgreSQLのバックアップブログを読むPostgreSQLのトップバックアップツールブログを読むPostgreSQLDBAになる-論理的および物理的なPostgreSQLバックアップブログを読む
    1. アイテムxにアクセスできるように文字列を分割するにはどうすればよいですか?

    2. Cotd()がPostgreSQLでどのように機能するか

    3. TDSサーバー-Transact-SQL(T-SQL)ステートメントを使用してSQLServerでSalesforceデータを操作する

    4. MySQLダイナミックピボット