Skip to main content
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

TR-5000:『PostgreSQL Database Backup、Recovery、and Clone on ONTAP with SnapCenter』

共同作成者

ネットアップ、Niyaz Mohamed、Allen Cao氏

このソリューションでは、パブリッククラウドまたはオンプレミスのONTAPストレージで、NetApp SnapCenterデータベース管理UIツールを使用してPostgreSQLデータベースのバックアップ、リカバリ、クローニングの概要と詳細を確認できます。

目的

NetApp SnapCenter ソフトウェアは、使いやすいエンタープライズプラットフォームで、アプリケーション、データベース、ファイルシステム全体でデータ保護をセキュアに調整、管理できます。ストレージシステムでのアクティビティの監視と規制の機能を犠牲にすることなく、これらのタスクをアプリケーション所有者にオフロードすることで、バックアップ、リストア、クローンのライフサイクル管理を簡易化します。ストレージベースのデータ管理を活用することで、パフォーマンスと可用性が向上し、テストと開発の時間が短縮されます。

このドキュメントでは、非常に使いやすいSnapCenter UIツールを使用して、パブリッククラウドまたはオンプレミスのNetApp ONTAPストレージでPostgreSQLデータベースの保護と管理を行う方法を紹介します。

この解決策 は、次のユースケースに対応します。

  • パブリッククラウドまたはオンプレミスのNetApp ONTAPストレージに導入されたPostgreSQLデータベースのバックアップとリカバリ

  • PostgreSQLデータベースのSnapshotやクローンコピーを管理して、アプリケーション開発期間を短縮し、データのライフサイクル管理を強化します。

対象者

この解決策 は、次のユーザーを対象としています。

  • NetApp ONTAPストレージにPostgreSQLデータベースを導入するデータベース管理者。

  • データベースソリューションアーキテクト。NetApp ONTAPストレージでPostgreSQLワークロードのテストを実施したいと考えています。

  • NetApp ONTAPストレージにPostgreSQLデータベースを導入して管理したいストレージ管理者。

  • NetApp ONTAPストレージ上にPostgreSQLデータベースを構築したいアプリケーション所有者。

解決策 のテストおよび検証環境

この解決策のテストと検証は、最終的な導入環境とは一致しない可能性があるラボ環境で実行しました。を参照してください 導入にあたって考慮すべき主な要因 を参照してください。

アーキテクチャ

このイメージは、SnapCenterを使用したPostgreSQLのバックアップ、リカバリ、およびクローンの詳細を示しています。

ハードウェアおよびソフトウェアコンポーネント

* ハードウェア *

NetApp AFF A220

バージョン9.12.1P2

ディスクシェルフDS224-12、IOM12Eモジュール、24ディスク/ 12TiB

VMware vSphereクラスタ

バージョン6.7

NetApp HCI H410CコンピューティングESXiノード×4

ソフトウェア

Red Hat Linux

RHEL Linux 8.6(LVM)- x64 Gen2

テスト用にRedHatサブスクリプションを導入

Windows Serverの場合

2022データセンター、AE Hotpatch-x64 Gen2

SnapCenterサアハノホスト

PostgreSQL データベース

バージョン14.13

HammerDB TPCCスキーマが格納されたPostgreSQL DBクラスタ

SnapCenter サーバ

バージョン6.0

ワークグループの導入

JDKを開く

バージョンjava-11-openjdk

DB VMでのSnapCenterプラグインの要件

NFS

バージョン 3.0 以降

データとログを別 々 のマウントポイントに分離

Ansible

コア2.16.2

Python 3.6.8

ラボ環境でのPostgreSQLデータベースの設定

* サーバ *

* データベース *

* DBストレージ*

psql01

プライマリデータベースサーバ

/pgdata、/pglogs ONTAPストレージへのNFSボリュームマウント

psql02

クローンデータベースサーバ

/pgdata_clone、/pglogs_clone ONTAPストレージへのNFSシンクローンボリュームマウント

導入にあたって考慮すべき主な要因

  • * SnapCenterの導入。* SnapCenterは、Windowsドメインまたはワークグループ環境に導入できます。ドメインベースの展開の場合、ドメインユーザーアカウントはドメイン管理者アカウントであるか、ドメインユーザーがSnapCenterホスティングサーバー上のローカル管理者のグループに属している必要があります。

  • 名前解決。 SnapCenterサーバーは、管理対象の各ターゲットデータベースサーバーホストのIPアドレスに名前を解決する必要があります。各ターゲット・データベース・サーバ・ホストは、SnapCenterサーバ名をIPアドレスに解決する必要があります。DNSサーバを使用できない場合は、ローカルホストファイルに名前を追加して解決します。

  • リソースグループの設定。 SnapCenterのリソースグループは、一緒にバックアップできる同様のリソースを論理的にグループ化したものです。これにより、大規模なデータベース環境でのバックアップジョブの数が削減され、簡易化されます。

  • *フルデータベースバックアップとアーカイブログバックアップを別 々 に実行します。*フルデータベースバックアップには、データボリュームとログボリュームの整合グループSnapshotが含まれます。フルデータベースSnapshotを頻繁に作成すると、ストレージ消費量は増加しますが、RTOは向上します。もう1つの方法は、フルデータベーススナップショットの頻度を減らし、アーカイブログのバックアップを頻繁に行うことです。これにより、ストレージ消費量が削減され、RPOが向上しますが、RTOが延長される可能性があります。バックアップスキームを設定する際には、RTOとRPOの目標を考慮してください。ボリューム上のSnapshotバックアップの数には制限(1023)もあります。

  • *権限委譲。*必要に応じて、SnapCenter UIに組み込まれているロールベースのアクセス制御を利用して、アプリケーションチームやデータベースチームに権限を委譲できます。

解決策 の導入

以降のセクションでは、パブリッククラウドまたはオンプレミスのNetApp ONTAPストレージでのSnapCenterの導入、設定、およびPostgreSQLデータベースのバックアップ、リカバリ、クローニングの手順を詳しく説明します。

導入の前提条件

Details
  1. 導入環境では、ONTAPストレージ上で2つの既存のPostgreSQLデータベースが実行されている必要があります。1つはプライマリDBサーバとして、もう1つはクローンDBサーバとして実行されます。ONTAPへのPostgreSQLデータベースの導入については、TR-4956:『"AWS FSX/EC2におけるPostgreSQL高可用性導入とディザスタリカバリの自動化"looking for the PostgreSQL automated deployment playbook on primary instance』を参照してください。

  2. NetApp SnapCenter UIツールを最新バージョンで実行するようにWindowsサーバをプロビジョニングします。詳細については、次のリンクを参照してください。"SnapCenter サーバをインストールします"

SnapCenterのインストールとセットアップ

Details

SnapCenterのインストールと設定に進む前に、オンラインを使用することをお勧めし"SnapCenter ソフトウェアのドキュメント"ます。ONTAPでPostgreSQL用SnapCenterソフトウェアをインストールしてセットアップする手順の概要を以下に示します。

  1. SnapCenter Windowsサーバから'から最新のJava JDKをダウンロードしてインストールし"デスクトップアプリケーション用Javaの取得"ますWindowsファイアウォールをオフにします。

  2. SnapCenter Windowsサーバから、SnapCenter 6.0 Windowsの前提条件をダウンロードしてインストールまたは更新します。PowerShell-PowerShell-7.4.3-win-x64.msiおよび.Net hosting package-dotnet-hosting-8.0.6-win

  3. SnapCenter Windowsサーバから、最新バージョン(現在は6.0)のSnapCenterインストール実行ファイルをNetAppサポートサイトからダウンロードしてインストールします"NetApp |サポート"

  4. データベースDB VMから、管理者ユーザとそのsudo Privileges(パスワードなし)に対してsshパスワードレス認証を有効にします admin

  5. データベースDB VMから、Linuxファイアウォールデーモンを停止および無効にします。java-11-openjdkをインストールします。

  6. SnapCenter Windowsサーバからブラウザを起動し、ポート8146を使用してWindowsローカル管理者ユーザまたはドメインユーザのクレデンシャルを使用してSnapCenterにログインします。

    このイメージは、SnapCenterサーバのログイン画面を示しています。

  7. レビュー Get Started オンラインメニュー。

    この画像は、SnapCenterサーバのオンラインメニューを提供します。

  8. インチ Settings-Global Settings、チェック Hypervisor Settings [更新]をクリックします。

    このイメージは、SnapCenterサーバのハイパーバイザー設定を提供します。

  9. 必要に応じて、 Session Timeout SnapCenter UIの場合は、希望する間隔に移動します。

    このイメージは、SnapCenterサーバのセッションタイムアウトを提供します。

  10. 必要に応じて、SnapCenterにユーザを追加します。

    このイメージは、SnapCenterサーバの設定-ユーザとアクセスを提供します

  11. Roles タブには、さまざまなSnapCenterユーザに割り当てることができる組み込みロールが表示されます。カスタムロールは、必要な権限を持つ管理者ユーザが作成することもできます。

    この画像は、SnapCenterサーバの役割を示しています。

  12. Settings-Credential、SnapCenter管理ターゲットのクレデンシャルを作成します。このデモのユースケースでは、DBサーバVMへのログイン用のLinuxユーザadminと、PostgreSQLアクセス用のpostgresクレデンシャルを使用します。

    このイメージは、SnapCenterサーバのクレデンシャルを提供します

    メモ クレデンシャルを作成する前にPostgreSQLユーザpostgresパスワードをリセットしてください。
  13. `Storage Systems`タブで、ONTAPクラスタ管理者のクレデンシャルを指定してを追加し `ONTAP cluster`ます。Azure NetApp Filesの場合は、容量プールアクセス用のクレデンシャルを作成する必要があります。

    このイメージは、Azure NetApp Files for SnapCenterサーバを提供します。 このイメージは、Azure NetApp Files for SnapCenterサーバを提供します。

  14. タブから Hosts、PostgreSQL DB VMを追加します。これにより、Linux上でPostgreSQL用のSnapCenterプラグインがインストールされます。

    このイメージは、SnapCenterサーバ用のホストを提供します。 このイメージは、SnapCenterサーバ用のホストを提供します。 このイメージは、SnapCenterサーバ用のホストを提供します。

  15. DBサーバVMにホストプラグインをインストールすると、ホスト上のデータベースが自動検出され、タブに表示されます Resources

    この画像は、SnapCenterサーバの設定-ポリシーを提供しています

データベースバックアップ

Details

最初に自動検出されたPostgreSQLクラスタでは、クラスタ名の横に赤いロックが表示されます。前のセクションでSnapCenterのセットアップ中に作成されたPostgreSQLデータベースクレデンシャルを使用してロックを解除する必要があります。次に、バックアップポリシーを作成して適用し、データベースを保護する必要があります。最後に、手動またはスケジューラによるバックアップを実行して、Snapshotバックアップを作成します。次のセクションでは、ステップバイステップの手順を示します。

  • PostgreSQLクラスタのロックを解除します。

    1. タブに移動し Resources`ます。このタブには、データベースVMにSnapCenterプラグインがインストールされた後に検出されたPostgreSQLクラスタが表示されます。最初はロックされ、データベースクラスタのが `Overall Status`と表示されます `Not protected

      このイメージは、SnapCenterサーバのデータベースバックアップを提供します。

    2. クラスタ名をクリックし、 `Configure Credentials`クレデンシャル設定ページを開きます。

      このイメージは、SnapCenterサーバのデータベースバックアップを提供します。

    3. 以前のSnapCenterセットアップで作成したクレデンシャルを選択します postgres

      このイメージは、SnapCenterサーバのデータベースバックアップを提供します。

    4. クレデンシャルを適用すると、クラスタのロックが解除されます。

      このイメージは、SnapCenterサーバのデータベースバックアップを提供します。

  • PostgreSQLバックアップポリシーを作成します。

    1. に移動し Setting Polices、をクリックして `New`バックアップポリシーを作成します。

      このイメージは、SnapCenterサーバのデータベースバックアップを提供します。

    2. バックアップポリシーの名前を指定します。

      このイメージは、SnapCenterサーバのデータベースバックアップを提供します。

    3. ストレージタイプを選択します。ほとんどのシナリオでは、デフォルトのバックアップ設定で問題ありません。

      このイメージは、SnapCenterサーバのデータベースバックアップを提供します。

    4. バックアップ頻度とSnapshotの保持期間を定義

      このイメージは、SnapCenterサーバのデータベースバックアップを提供します。

    5. データベースボリュームをセカンダリサイトにレプリケートする場合に、セカンダリレプリケーションを選択するオプション。

      このイメージは、SnapCenterサーバのデータベースバックアップを提供します。

    6. 概要を確認し、 `Finish`バックアップポリシーを作成します。

      このイメージは、SnapCenterサーバのデータベースバックアップを提供します。 このイメージは、SnapCenterサーバのデータベースバックアップを提供します。

  • バックアップポリシーを適用してPostgreSQLデータベースを保護します。

    1. タブに戻り Resource、クラスタ名をクリックしてPostgreSQLクラスタ保護ワークフローを起動します。

      このイメージは、SnapCenterサーバのデータベースバックアップを提供します。

    2. デフォルトを使用し `Application Settings`ます。このページのオプションの多くは、自動検出されたターゲットには適用されません。

      このイメージは、SnapCenterサーバのデータベースバックアップを提供します。

    3. 作成したバックアップポリシーを適用します。必要に応じてバックアップスケジュールを追加します。

      このイメージは、SnapCenterサーバのデータベースバックアップを提供します。

    4. バックアップの通知が必要な場合は、Eメール設定を指定します。

      このイメージは、SnapCenterサーバのデータベースバックアップを提供します。

    5. 概要を確認し、 `Finish`バックアップポリシーを実装します。これで、PostgreSQLクラスタが保護されました。

      このイメージは、SnapCenterサーバのデータベースバックアップを提供します。

    6. バックアップは、バックアップスケジュールに従って実行されるか、クラスタバックアップトポロジから実行されます。をクリックすると、 `Backup Now`手動のオンデマンドバックアップがトリガーされます。

      このイメージは、SnapCenterサーバのデータベースバックアップを提供します。 このイメージは、SnapCenterサーバのデータベースバックアップを提供します。

    7. タブからバックアップジョブを監視し `Monitor`ます。通常、大規模なデータベースのバックアップには数分かかります。このテストケースでは、1TBに近いデータベースボリュームのバックアップに約4分かかりました。

      このイメージは、SnapCenterサーバのデータベースバックアップを提供します。

データベースリカバリ

Details

このデータベースリカバリのデモでは、PostgreSQLデータベースクラスタのポイントインタイムリカバリを紹介します。まず、SnapCenterを使用して、ONTAPストレージ上にデータベースボリュームのSnapshotバックアップを作成します。次に、データベースにログインし、テストテーブルを作成し、タイムスタンプを書き留めて、テストテーブルをドロップします。次に、削除されたテーブルをリカバリするためにテストテーブルが作成されたときのタイムスタンプまで、バックアップからリカバリを開始します。次に、SnapCenter UIを使用したPostgreSQLデータベースのポイントインタイムリカバリのワークフローと検証の詳細を示します。

  1. ユーザとしてPostgreSQLにログインし `postgres`ます。テストテーブルを作成してドロップします。

    postgres=# \dt
    Did not find any relations.
    
    
    postgres=# create table test (id integer, dt timestamp, event varchar(100));
    CREATE TABLE
    postgres=# \dt
            List of relations
     Schema | Name | Type  |  Owner
    --------+------+-------+----------
     public | test | table | postgres
    (1 row)
    
    postgres=# insert into test values (1, now(), 'test PostgreSQL point in time recovery with SnapCenter');
    INSERT 0 1
    
    postgres=# select * from test;
     id |             dt             |                         event
    ----+----------------------------+--------------------------------------------------------
      1 | 2024-10-08 17:55:41.657728 | test PostgreSQL point in time recovery with SnapCenter
    (1 row)
    
    postgres=# drop table test;
    DROP TABLE
    postgres=# \dt
    Did not find any relations.
    
    postgres=# select current_time;
        current_time
    --------------------
     17:59:20.984144+00
  2. `Resources`タブで、データベースバックアップのページを開きます。リストアするSnapshotバックアップを選択します。次に、ボタンをクリックし `Restore`てデータベースリカバリワークフローを起動します。ポイントインタイムリカバリを実行するときのバックアップのタイムスタンプをメモします。

    このイメージは、SnapCenterサーバのデータベースリストアを提供します。

  3. を選択します Restore scope。現時点では、完全なリソースは唯一のオプションです。

    このイメージは、SnapCenterサーバのデータベースリストアを提供します。

  4. Recovery Scope、リカバリがロールアップされるタイムスタンプを選択し `Recover to point in time`て入力します。

    このイメージは、SnapCenterサーバのデータベースリストアを提供します。

  5. では PreOps、リストア/リカバリ処理の前にデータベースに対してスクリプトを実行するか、そのまま黒くすることができます。

    このイメージは、SnapCenterサーバのデータベースリストアを提供します。

  6. では PostOps、リストア/リカバリ処理後にデータベースに対してスクリプトを実行するか、そのまま黒くすることができます。

    このイメージは、SnapCenterサーバのデータベースリストアを提供します。

  7. 必要に応じてEメールで通知

    このイメージは、SnapCenterサーバのデータベースリストアを提供します。

  8. ジョブの概要を確認し、 `Finish`リストアジョブを開始します。

    このイメージは、SnapCenterサーバのデータベースリストアを提供します。

  9. [Running job]をクリックして開きます。 Job Details ウィンドウ。ジョブステータスは、 Monitor タブ。

    このイメージは、SnapCenterサーバのデータベースリストアを提供します。

  10. ユーザとしてPostgreSQLにログインし postgres、テストテーブルがリカバリされたことを確認します。

    [postgres@psql01 ~]$ psql
    psql (14.13)
    Type "help" for help.
    
    postgres=# \dt
            List of relations
     Schema | Name | Type  |  Owner
    --------+------+-------+----------
     public | test | table | postgres
    (1 row)
    
    postgres=# select * from test;
     id |             dt             |                         event
    ----+----------------------------+--------------------------------------------------------
      1 | 2024-10-08 17:55:41.657728 | test PostgreSQL point in time recovery with SnapCenter
    (1 row)
    
    postgres=# select now();
                  now
    -------------------------------
     2024-10-08 18:22:33.767208+00
    (1 row)

データベースクローン

Details

SnapCenterを使用したPostgreSQLデータベースクラスタクローンでは、ソースデータベースデータボリュームのSnapshotバックアップから新しいシンクローンボリュームを作成します。さらに重要なのは、他の方法と比べて短時間(数分)で本番環境のデータベースのクローンコピーを作成して開発やテストに役立てることです。これにより、ストレージコストが大幅に削減され、データベースアプリケーションのライフサイクル管理が向上します。次のセクションでは、SnapCenter UIを使用したPostgreSQLデータベースクローンのワークフローについて説明します。

  1. をクリックしてクローンプロセスを検証します。もう一度、テストテーブルに行を挿入します。次に、バックアップを実行してテストデータをキャプチャします。

    postgres=# insert into test values (2, now(), 'test PostgreSQL clone to a different DB server host');
    INSERT 0 1
    postgres=# select * from test;
     id |             dt             |                        event
    ----+----------------------------+-----------------------------------------------------
      2 | 2024-10-11 20:15:04.252868 | test PostgreSQL clone to a different DB server host
    (1 row)
  2. `Resources`タブで、データベースクラスタバックアップページを開きます。テストデータを含むデータベースバックアップのSnapshotを選択します。次に、ボタンをクリックし `clone`てデータベースクローンワークフローを起動します。

    このイメージは、SnapCenterサーバのデータベースクローンを提供します。

  3. ソースDBサーバ以外の別のDBサーバホストを選択してください。ターゲットホストで未使用のTCPポート543xを選択します。

    このイメージは、SnapCenterサーバのデータベースクローンを提供します。

  4. クローニング処理の前後に実行するスクリプトを入力します。

    このイメージは、SnapCenterサーバのデータベースクローンを提供します。

  5. 必要に応じてEメールで通知

    このイメージは、SnapCenterサーバのデータベースクローンを提供します。

  6. 概要を確認し、 `Finish`クローニングプロセスを開始します。

    このイメージは、SnapCenterサーバのデータベースクローンを提供します。

  7. [Running job]をクリックして開きます。 Job Details ウィンドウ。ジョブステータスは、 Monitor タブ。

    このイメージは、SnapCenterサーバのデータベースリストアを提供します。

  8. クローンデータベースはすぐにSnapCenterに登録されます。

    このイメージは、SnapCenterサーバのデータベースリストアを提供します。

  9. ターゲットDBサーバホスト上のクローンデータベースクラスタを検証します。

    [postgres@psql01 ~]$ psql -d postgres -h 10.61.186.7 -U postgres -p 5433
    Password for user postgres:
    psql (14.13)
    Type "help" for help.
    
    postgres=# select * from test;
     id |             dt             |                        event
    ----+----------------------------+-----------------------------------------------------
      2 | 2024-10-11 20:15:04.252868 | test PostgreSQL clone to a different DB server host
    (1 row)
    
    postgres=# select pg_read_file('/etc/hostname') as hostname;
     hostname
    ----------
     psql02  +
    
    (1 row)

追加情報の参照先

このドキュメントに記載されている情報の詳細については、以下のドキュメントや Web サイトを参照してください。