TR-5000: SnapCenterを使用したONTAPでの PostgreSQL データベースのバックアップ、リカバリ、クローン
アレン・カオ、ニヤズ・モハメド、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 データベースを立ち上げたいアプリケーション所有者。
ソリューションのテストおよび検証環境
このソリューションのテストと検証は、最終的な展開環境と一致しない可能性のあるラボ設定で実行されました。セクションを参照導入検討の重要な要素詳細についてはこちらをご覧ください。
アーキテクチャ
ハードウェアおよびソフトウェアコンポーネント
ハードウェア |
||
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
-
導入には、 ONTAPストレージ上で実行される既存の PostgreSQL データベースが 2 つ必要です。1 つはプライマリ DB サーバーとして、もう 1 つはクローン DB サーバーとして必要です。 ONTAPでの PostgreSQL データベースの導入については、TR-4956 を参照してください。"AWS FSx/EC2 における PostgreSQL の高可用性の自動化と災害復旧" 、プライマリインスタンス上の PostgreSQL 自動デプロイメント プレイブックを検索します。
-
最新バージョンのNetApp SnapCenter UI ツールを実行するために Windows サーバーをプロビジョニングします。詳細については、次のリンクを参照してください。"SnapCenter Serverのインストール" 。
SnapCenterのインストールとセットアップ
Details
オンラインでのご利用をお勧めします"SnapCenterソフトウェアのドキュメント"SnapCenter のインストールと構成に進む前に: .以下は、 ONTAP上の PostgreSQL 用SnapCenter softwareのインストールとセットアップの手順の概要です。
-
SnapCenter Windowsサーバーから、最新のJava JDKをダウンロードしてインストールします。"デスクトップアプリケーション用のJavaを入手する" 。 Windows ファイアウォールをオフにします。
-
SnapCenter Windows サーバーから、 SnapCenter 6.0 Windows の前提条件 (PowerShell - PowerShell-7.4.3-win-x64.msi および .Net ホスティング パッケージ - dotnet-hosting-8.0.6-win) をダウンロードしてインストールまたは更新します。
-
SnapCenter Windows サーバーで、 NetAppサポート サイトから最新バージョン (現在は 6.0) のSnapCenterインストール実行ファイルをダウンロードしてインストールします。"NetApp | サポート" 。
-
データベースDB VMから、管理者ユーザーに対してSSHパスワードレス認証を有効にする `admin`パスワードなしで sudo 権限も使用できます。
-
データベース DB VM から、Linux ファイアウォール デーモンを停止して無効にします。 java-11-openjdk をインストールします。
-
SnapCenter Windows サーバーからブラウザを起動し、ポート 8146 経由で Windows ローカル管理者ユーザーまたはドメイン ユーザーの資格情報を使用してSnapCenterにログインします。
-
レビュー `Get Started`オンラインメニュー。
-
で
Settings-Global Settings
、 チェックHypervisor Settings
「更新」をクリックします。 -
必要に応じて調整 `Session Timeout`SnapCenter UI を希望の間隔に設定します。
-
必要に応じて、 SnapCenterにユーザーを追加します。
-
その `Roles`タブには、さまざまなSnapCenterユーザーに割り当てることができる組み込みロールが一覧表示されます。必要な権限を持つ管理者ユーザーがカスタム ロールを作成することもできます。
-
から
Settings-Credential
、 SnapCenter管理ターゲットの資格情報を作成します。このデモの使用例では、DB サーバー VM にログインするための Linux ユーザー admin と、PostgreSQL アクセス用の postgres 資格情報です。資格情報を作成する前に、PostgreSQL ユーザーの postgres パスワードをリセットします。 -
から `Storage Systems`タブ、追加 `ONTAP cluster`ONTAPクラスタ管理者の認証情報を使用します。 Azure NetApp Filesの場合、容量プールへのアクセス用に特定の資格情報を作成する必要があります。
-
から `Hosts`タブで、PostgreSQL DB VM を追加します。これにより、Linux 上に PostgreSQL 用のSnapCenterプラグインがインストールされます。
-
ホストプラグインがDBサーバーVMにインストールされると、ホスト上のデータベースは自動的に検出され、 `Resources`タブ。
データベース バックアップ
Details
最初に自動検出された PostgreSQL クラスターでは、クラスター名の横に赤いロックが表示されます。前のセクションのSnapCenterセットアップ中に作成された PostgreSQL データベース資格情報を使用してロックを解除する必要があります。次に、データベースを保護するためのバックアップ ポリシーを作成して適用する必要があります。最後に、手動またはスケジューラでバックアップを実行し、スナップショット バックアップを作成します。次のセクションでは、手順を段階的に説明します。
-
PostgreSQL クラスターのロックを解除します。
-
ナビゲート
Resources`タブには、 SnapCenterプラグインがデータベース VM にインストールされた後に検出された PostgreSQL クラスターが一覧表示されます。最初はロックされており、 `Overall Status`データベースクラスタは次のように表示されます `Not protected
。 -
クラスター名をクリックし、 `Configure Credentials`資格情報構成ページを開きます。
-
選ぶ `postgres`以前のSnapCenterセットアップ中に作成された資格情報。
-
資格情報を適用すると、クラスターのロックが解除されます。
-
-
PostgreSQL バックアップ ポリシーを作成します。
-
移動先
Setting
- `Polices`クリックして `New`バックアップ ポリシーを作成します。 -
バックアップ ポリシーに名前を付けます。
-
ストレージタイプを選択します。ほとんどのシナリオでは、デフォルトのバックアップ設定で問題ありません。
-
バックアップの頻度とスナップショットの保持を定義します。
-
データベース ボリュームがセカンダリ ロケーションに複製される場合にセカンダリ レプリケーションを選択するオプション。
-
要約を確認し、 `Finish`バックアップ ポリシーを作成します。
-
-
PostgreSQL データベースを保護するためにバックアップ ポリシーを適用します。
-
戻る `Resource`タブで、クラスター名をクリックして PostgreSQL クラスター保護ワークフローを起動します。
-
デフォルトを受け入れる
Application Settings
。このページのオプションの多くは、自動検出されたターゲットには適用されません。 -
作成したバックアップ ポリシーを適用します。必要に応じてバックアップ スケジュールを追加します。
-
バックアップ通知が必要な場合は電子メール設定を提供します。
-
レビューの概要と `Finish`バックアップポリシーを実装します。これで PostgreSQL クラスターが保護されました。
-
バックアップはバックアップスケジュールに従って実行されるか、クラスタバックアップトポロジから実行されます。 `Backup Now`手動のオンデマンド バックアップをトリガーします。
-
バックアップジョブを監視する `Monitor`タブ。通常、大規模なデータベースのバックアップには数分かかりますが、私たちのテストケースでは、1TB 近くのデータベース ボリュームをバックアップするのに約 4 分かかりました。
-
データベースの復旧
Details
このデータベース復旧のデモンストレーションでは、PostgreSQL データベース クラスターのポイントインタイム復旧を紹介します。まず、 SnapCenterを使用してONTAPストレージ上のデータベース ボリュームの SnapShot バックアップを作成します。次に、データベースにログインし、テスト テーブルを作成し、タイムスタンプを書き留めて、テスト テーブルを削除します。次に、テスト テーブルが作成された時点のタイムスタンプまでのバックアップからリカバリを開始し、削除されたテーブルをリカバリします。以下は、 SnapCenter UI を使用した PostgreSQL データベースのポイントインタイムリカバリのワークフローと検証の詳細を示しています。
-
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
-
から `Resources`タブで、データベース バックアップ ページを開きます。復元するスナップショット バックアップを選択します。次に、 `Restore`データベース回復ワークフローを起動するボタン。ポイントインタイムリカバリを実行するときは、バックアップのタイムスタンプをメモしてください。
-
選択
Restore scope
。現時点では、完全なリソースが唯一の選択肢です。 -
のために
Recovery Scope
、 選ぶ `Recover to point in time`リカバリがロールフォワードされるタイムスタンプを入力します。 -
その `PreOps`復元/回復操作の前にデータベースに対してスクリプトを実行するか、そのままにしておくことができます。
-
その `PostOps`復元/回復操作後にデータベースに対してスクリプトを実行するか、そのままにしておくことができます。
-
必要に応じて電子メールで通知します。
-
仕事の概要を確認し、 `Finish`復元ジョブを開始します。
-
実行中のジョブをクリックして開きます `Job Details`ウィンドウ。ジョブステータスは、 `Monitor`タブ。
-
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 データベース クローンのワークフローについて説明します。
-
クローンプロセスを検証します。再度、テスト テーブルに行を挿入します。次に、バックアップを実行してテスト データをキャプチャします。
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)
-
から `Resources`タブで、データベース クラスターのバックアップ ページを開きます。テスト データが含まれているデータベース バックアップのスナップショットを選択します。次に、 `clone`データベースクローンワークフローを起動するボタン。
-
ソース DB サーバー以外の別の DB サーバー ホストを選択します。ターゲット ホスト上の未使用の TCP ポート 543x を選択します。
-
クローン操作の前または後に実行するスクリプトを入力します。
-
必要に応じて電子メールで通知します。
-
レビューの概要と `Finish`クローンプロセスを起動します。
-
実行中のジョブをクリックして開きます `Job Details`ウィンドウ。ジョブステータスは、 `Monitor`タブ。
-
クローンされたデータベースはすぐにSnapCenterに登録されます。
-
ターゲット 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 サイトを参照してください。
-
SnapCenterソフトウェアのドキュメント
-
TR-4956: AWS FSx/EC2 における PostgreSQL 高可用性の自動化と災害復旧