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

TR-5000: SnapCenterを使用したONTAPでの PostgreSQL データベースのバックアップ、リカバリ、クローン

共同作成者 netapp-revathid kevin-hoke

アレン・カオ、ニヤズ・モハメド、NetApp

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

目的

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

このドキュメントでは、非常にユーザーフレンドリーなSnapCenter UI ツールを使用して、パブリック クラウドまたはオンプレミスのNetApp ONTAPストレージ上の PostgreSQL データベースの保護と管理について説明します。

このソリューションは、次のユースケースに対応します。

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

  • PostgreSQL データベースのスナップショットとクローンコピーを管理して、アプリケーション開発を加速し、データ ライフサイクル管理を改善します。

観客

このソリューションは次の人々を対象としています。

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

  • NetApp ONTAPストレージ上で PostgreSQL ワークロードをテストしたいデータベース ソリューション アーキテクト。

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

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

ソリューションのテストおよび検証環境

このソリューションのテストと検証は、最終的な展開環境と一致しない可能性のあるラボ設定で実行されました。セクションを参照導入検討の重要な要素詳細についてはこちらをご覧ください。

アーキテクチャ

この画像は、 SnapCenterを使用した PostgreSQL のバックアップ、リカバリ、クローンの詳細な図を示しています。

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

ハードウェア

NetApp AFF A220

バージョン9.12.1P2

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

VMware vSphere クラスタ

バージョン6.7

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

ソフトウェア

レッドハットリナックス

RHEL Linux 8.6 (LVM) - x64 Gen2

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

Windows Server

2022 データセンター; AE ホットパッチ - x64 Gen2

SnapCenterサーバーのホスティング

PostgreSQLデータベース

バージョン14.13

HammerDB tpcc スキーマで作成された PostgreSQL DB クラスター

SnapCenter Server

バージョン6.0

ワークグループ展開

Open JDK

バージョン java-11-openjdk

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

NFS

バージョン3.0

データとログを異なるマウントポイントに分離する

Ansible

コア 2.16.2

Python 3.6.8

ラボ環境でのPostgreSQLデータベース構成

サーバ

データベース

DBストレージ

psql01

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

/pgdata、/pglogs NFSボリュームはONTAPストレージにマウントされます

psql02

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

/pgdata_clone、/pglogs_clone NFSシンクローンボリュームはONTAPストレージにマウントされます

導入検討の重要な要素

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

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

  • リソース グループの構成。 SnapCenterのリソース グループは、一緒にバックアップできる類似のリソースの論理的なグループです。したがって、大規模なデータベース環境でのバックアップ ジョブが簡素化され、その数も削減されます。

  • *完全なデータベースとアーカイブ ログのバックアップを個別に実行します。*完全なデータベース バックアップには、データ ボリュームとログ ボリュームの一貫性のあるグループ スナップショットが含まれます。完全なデータベース スナップショットを頻繁に実行すると、ストレージの消費量は増加しますが、RTO は向上します。代替案としては、完全なデータベース スナップショットの頻度を減らし、アーカイブ ログのバックアップの頻度を増やすという方法があります。これにより、消費するストレージが少なくなり、RPO が向上しますが、RTO が延長される可能性があります。バックアップ スキームを設定するときは、RTO と RPO の目標を考慮してください。ボリューム上のスナップショット バックアップの数にも制限 (1023) があります。

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

ソリューションの展開

次のセクションでは、パブリック クラウドまたはオンプレミスのNetApp ONTAPストレージでのSnapCenter の導入、構成、および PostgreSQL データベースのバックアップ、リカバリ、クローン作成の手順を段階的に説明します。

展開の前提条件

Details
  1. 導入には、 ONTAPストレージ上で実行される既存の PostgreSQL データベースが 2 つ必要です。1 つはプライマリ DB サーバーとして、もう 1 つはクローン DB サーバーとして必要です。 ONTAPでの PostgreSQL データベースの導入については、TR-4956 を参照してください。"AWS FSx/EC2 における PostgreSQL の高可用性の自動化と災害復旧" 、プライマリインスタンス上の PostgreSQL 自動デプロイメント プレイブックを検索します。

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

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

Details

オンラインでのご利用をお勧めします"SnapCenterソフトウェアのドキュメント"SnapCenter のインストールと構成に進む前に: .以下は、 ONTAP上の PostgreSQL 用SnapCenter softwareのインストールとセットアップの手順の概要です。

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

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

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

  4. データベースDB VMから、管理者ユーザーに対してSSHパスワードレス認証を有効にする `admin`パスワードなしで sudo 権限も使用できます。

  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 cluster`ONTAPクラスタ管理者の認証情報を使用します。 Azure NetApp Filesの場合、容量プールへのアクセス用に特定の資格情報を作成する必要があります。

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

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

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

  15. ホストプラグインがDBサーバーVMにインストールされると、ホスト上のデータベースは自動的に検出され、 `Resources`タブ。

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

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

Details

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

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

    1. ナビゲート Resources`タブには、 SnapCenterプラグインがデータベース VM にインストールされた後に検出された PostgreSQL クラスターが一覧表示されます。最初はロックされており、 `Overall Status`データベースクラスタは次のように表示されます `Not protected

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

    2. クラスター名をクリックし、 `Configure Credentials`資格情報構成ページを開きます。

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

    3. 選ぶ `postgres`以前のSnapCenterセットアップ中に作成された資格情報。

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

    4. 資格情報を適用すると、クラスターのロックが解除されます。

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

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

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

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

    2. バックアップ ポリシーに名前を付けます。

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

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

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

    4. バックアップの頻度とスナップショットの保持を定義します。

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

    5. データベース ボリュームがセカンダリ ロケーションに複製される場合にセカンダリ レプリケーションを選択するオプション。

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

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

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

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

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

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

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

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

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

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

    4. バックアップ通知が必要な場合は電子メール設定を提供します。

      このイメージは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`タブで、データベース バックアップ ページを開きます。復元するスナップショット バックアップを選択します。次に、 `Restore`データベース回復ワークフローを起動するボタン。ポイントインタイムリカバリを実行するときは、バックアップのタイムスタンプをメモしてください。

    このイメージは、 SnapCenterサーバーのデータベース復元を提供します

  3. 選択 Restore scope。現時点では、完全なリソースが唯一の選択肢です。

    このイメージは、 SnapCenterサーバーのデータベース復元を提供します

  4. のために Recovery Scope、 選ぶ `Recover to point in time`リカバリがロールフォワードされるタイムスタンプを入力します。

    このイメージは、 SnapCenterサーバーのデータベース復元を提供します

  5. その `PreOps`復元/回復操作の前にデータベースに対してスクリプトを実行するか、そのままにしておくことができます。

    このイメージは、 SnapCenterサーバーのデータベース復元を提供します

  6. その `PostOps`復元/回復操作後にデータベースに対してスクリプトを実行するか、そのままにしておくことができます。

    このイメージは、 SnapCenterサーバーのデータベース復元を提供します

  7. 必要に応じて電子メールで通知します。

    このイメージは、 SnapCenterサーバーのデータベース復元を提供します

  8. 仕事の概要を確認し、 `Finish`復元ジョブを開始します。

    このイメージは、 SnapCenterサーバーのデータベース復元を提供します

  9. 実行中のジョブをクリックして開きます `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 データベース クラスター クローンでは、ソース データベース データ ボリュームのスナップショット バックアップから新しいシン クローン ボリュームが作成されます。さらに重要なのは、開発やテストをサポートするために運用データベースのクローンコピーを作成するのに、他の方法に比べて迅速 (数分) かつ効率的であることです。したがって、ストレージ コストが大幅に削減され、データベース アプリケーションのライフサイクル管理が向上します。次のセクションでは、 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`タブで、データベース クラスターのバックアップ ページを開きます。テスト データが含まれているデータベース バックアップのスナップショットを選択します。次に、 `clone`データベースクローンワークフローを起動するボタン。

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

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

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

  4. クローン操作の前または後に実行するスクリプトを入力します。

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

  5. 必要に応じて電子メールで通知します。

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

  6. レビューの概要と `Finish`クローンプロセスを起動します。

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

  7. 実行中のジョブをクリックして開きます `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 サイトを参照してください。