ApsaraDB RDS for PostgreSQLの災害復旧能力構築のベストプラクティス

> 本記事は[こちらのブログ](https://www.alibabacloud.com/blog/best-practices-for-disaster-recovery-capability-construction-of-apsaradb-rds-for-postgresql_601932?spm=a2c65.11461433.0.0.4ee35355EPbctP)を参考にしています。
> 翻訳にはアリババクラウドの[ModelStudio](https://www.alibabacloud.com/en/product/modelstudio)([Qwen](https://www.alibabacloud.com/en/solutions/generative-ai/qwen))を使用しております。

# データベースのディザスタリカバリ展開

著者: Guangguo

## はじめに
デジタル時代において、データは企業にとって最も重要な資産の一つとされています。しかし、データ量の爆発的な増加とビジネスの複雑化により、データのセキュリティと可用性がますます重要となっています。したがって、データベースのディザスタリカバリ展開は現代の企業にとって不可欠な部分となっています。ディザスタリカバリ展開は、自然災害、人為的ミス、システム障害などの予期せぬイベントによるデータロスを効果的に防ぐだけでなく、緊急時にサービスを迅速に復旧し、全体的な運営の回復力と安定性を向上させることができます。効果的なディザスタリカバリ戦略を実装することで、企業は重要なビジネスの継続性を確保し、顧客の信頼を維持し、競争市場で競争力を得ることができます。ますます複雑化するデータ環境と不確実性に対応するため、企業はシステム的なデータベースディザスタリカバリソリューションを採用し、信頼性のあるディザスタリカバリメカニズムを構築しなければなりません。

## ディザスタリカバリソリューションの概要
異なる企業や同じ企業内の異なる事業では、データディザスタリカバリに対する要件が異なります。次に、いくつかの一般的なディザスタリカバリソリューションとその主な違いについて説明します。

| 特徴 | 説明 | レベル |
| --- | --- | --- |
| 同一データセンター内でのディザスタリカバリ | データベースのプライマリノードとセカンダリノードが同一データセンタ内の異なる物理マシン上に配置されます。データベースノードはマシン単位で分散されます。 | 低（マシンレベルのディザスタリカバリ、単一マシン障害のみ対応） |
| ゾーン間ディザスタリカバリ | データベースのプライマリノードとセカンダリノードが同じ地域内の異なるデータセンタに配置されます。たとえば、プライマリノードが北京のデータセンタAに、セカンダリノードが北京のデータセンタBに配置されます。データベースノードはデータセンタ単位で分散されます。 | 中（データセンタレベルのディザスタリカバリ、データセンタレベルの障害に対応） |
| 地域間ディザスタリカバリ | データベースのプライマリノードとセカンダリノードが異なる地域に配置されます（たとえば、プライマリノードが北京に、セカンダリノードが上海に配置される）。または、複数のデータベースインスタンスがディザスタリカバリクラスターを形成します。異なるデータベースインスタンスは異なる地域に配置されます。データベースノードまたはインスタンスは地域単位で分散されます。 | 高（地域レベルのディザスタリカバリ、地域レベルの障害に対応） |

<a href=https://www.alibabacloud.com/product/apsaradb-for-rds-postgresql?spm=a3c0i.29596822.7495012640.4.69ffd0b27UAltH target=_blank>ApsaraDB RDS for PostgreSQL</a>は、ソフトウェアとハードウェアの両方で最適化され、オープンソースのPostgreSQLと完全互換性を持つクラウドネイティブアーキテクチャに基づくデータベース製品であり、前述のすべてのディザスタリカバリソリューションをサポートしています。以下に、ApsaraDB RDS for PostgreSQL上でこれらのソリューションをどのように実装するかを見てみましょう。

## ディザスタリカバリソリューションの実装

### 同一データセンター内でのディザスタリカバリ
<a href=https://www.alibabacloud.com/product/apsaradb-for-rds-postgresql?spm=a3c0i.29596822.7495012640.4.69ffd0b27UAltH target=_blank>ApsaraDB RDS for PostgreSQL</a>は、同一データセンター内でのディザスタリカバリをネイティブでサポートしています。High-availabilityまたはCluster EditionのApsaraDB RDS for PostgreSQLインスタンスを作成すると、追加の設定なしで異なる物理マシン上に異なるノードが配置されます。

### ゾーン間ディザスタリカバリ
#### ApsaraDB RDS for PostgreSQLインスタンスの作成
ゾーン間ディザスタリカバリ用のApsaraDB RDS for PostgreSQLインスタンスの作成プロセスは簡単です。インスタンスを作成する際に、異なるノードに対して異なるゾーンを選択するだけです。

#### 自己構築のPostgreSQLインスタンスとApsaraDB RDS for PostgreSQLインスタンスを使用してゾーン間ディザスタリカバリクラスターを構築
ECSインスタンスを使用してPostgreSQLインスタンスを管理しているユーザーは、ApsaraDB RDS for PostgreSQLのクラウド移行機能を利用して、自己構築のPostgreSQLインスタンスとは異なるゾーンにあるApsaraDB RDS for PostgreSQLインスタンスを構築し、自己構築のPostgreSQLインスタンスのセカンダリインスタンスとして使用することができます。このようにして、自己構築のPostgreSQLインスタンスとApsaraDB RDS for PostgreSQLインスタンスがゾーン間ディザスタリカバリクラスターを形成します。データセンタの障害により自己構築のインスタンスが利用不能になった場合、ApsaraDB RDS for PostgreSQLインスタンスをプライマリノードに昇格させてサービスを提供することができます。これにより、データセンタ間でのゾーン間ディザスタリカバリが実現できます。以下の図はディザスタリカバリクラスタートポロジーを示しています。

![1](https://yqintl.alicdn.com/6717bb9e170c9600a27101269ff4f09de38a6bdf.png)

<a href=https://www.alibabacloud.com/product/apsaradb-for-rds-postgresql?spm=a3c0i.29596822.7495012640.4.69ffd0b27UAltH target=_blank>ApsaraDB RDS for PostgreSQL</a>のクラウド移行機能を使用して、自己構築のPostgreSQLインスタンスとは異なるゾーンにあるApsaraDB RDS for PostgreSQLインスタンスのセカンダリインスタンスを構築するには、以下の手順を実行します：

1. ApsaraDB RDSコンソールにログインし、自己構築のPostgreSQLインスタンスと同じリージョン、データベースバージョン、VPCにあるApsaraDB RDS for PostgreSQLインスタンスを作成します。
2. 自己構築のPostgreSQLインスタンスに接続し、ディザスタリカバリ同期用のデータベースアカウントを作成します（データベースアカウントはレプリケーション権限とpg_monitorロール権限を持っている必要があります）。必要に応じて、ApsaraDB RDS for PostgreSQLインスタンスが使用するvSwitchのCIDRブロックを自己構築のPostgreSQLインスタンスのpg_hba.confファイルで許可します。
3. ApsaraDB RDSコンソールにログインし、ApsaraDB RDS for PostgreSQLインスタンスの「インスタンス詳細」ページに移動し、クラウド移行を選択します。
4. 表示されるページで、「ディザスタリカバリ構築」をシナリオとして設定し、自己構築のインスタンスまたは他のインスタンスをディザスタリカバリソースとして選択します。
5. 可能性評価タスクを作成して、ディザスタリカバリリンクを確立する前に評価を行います。
6. 評価タスクが完了したら、「ディザスタリカバリ構築」ページに移動し、成功した可能性評価レポートを選択してディザスタリカバリ関係を構築します。
7. ディザスタリカバリ関係が構築された後、ターゲットのApsaraDB RDS for PostgreSQLインスタンスは自己構築のPostgreSQLインスタンスからリアルタイム
![4](https://yqintl.alicdn.com/376bbe355a87a0a18b35f658d53809aa474ab509.png)

アリババクラウドの2つの異なるリージョン間で、Cloud Enterprise Network (CEN) プロダクトを使用して2つのリージョンのネットワークを接続し、自己構築したPostgreSQLインスタンスとApsaraDB RDS for PostgreSQLインスタンス間、または異なるリージョンのApsaraDB RDS for PostgreSQLインスタンス間でデータを同期することができます。また、アプリケーションとApsaraDB RDS for PostgreSQLインスタンス間のクロスリージョンアクセスも実装できます。異なるリージョンの2つのネットワークを接続する方法の詳細については、[Manage inter-region connections](https://www.alibabacloud.com/help/en/cen/user-guide/manage-inter-region-connections) を参照してください。

ApsaraDB RDS for PostgreSQLインスタンスを使用して地理的災害復旧クラスターを構築する
ApsaraDB RDS for PostgreSQLのクラウド移行機能を使用して、異なるリージョンのApsaraDB RDS for PostgreSQLインスタンスで構成される地理的災害復旧クラスターを構築するには、以下の手順を実行します。

1. ソースリージョンで、ApsaraDB RDS for PostgreSQLインスタンスコンソールのアカウント管理ページに移動し、災害復旧同期用のデータベースアカウントを作成します（特権アカウントを作成する必要があります）。
2. RDSコンソールの購入ページにログインし、ソースリージョンのインスタンスと同じデータベースバージョンのApsaraDB RDS for PostgreSQLインスタンスを作成します。
3. ApsaraDB RDSコンソールにログインし、ApsaraDB RDS for PostgreSQLインスタンスのインスタンス詳細ページに移動し、クラウド移行を選択します。
4. 表示されたページで、シナリオとして災害復旧構築を設定し、災害復旧ソースとしてApsaraDB RDSインスタンスを選択します。
5. 災害復旧リンクが確立される前に評価を行うために、実現可能性評価タスクを作成します。
6. 評価タスクが完了したら、災害復旧構築ページに移動し、成功した実現可能性評価レポートを選択して災害復旧関係を構築します。
7. 災害復旧関係が構築されると、ターゲットApsaraDB RDS for PostgreSQLインスタンスはソースリージョンのApsaraDB RDS for PostgreSQLインスタンスからリアルタイムでデータを同期します。
8. ソースリージョンのApsaraDB RDS for PostgreSQLインスタンスに障害が発生した場合、またはビジネスをターゲットApsaraDB RDS for PostgreSQLインスタンスに切り替える必要がある場合は、災害復旧ページに移動し、「Promote Disaster Recovery Instance」をクリックしてインスタンスを読み書き可能なプライマリインスタンスに昇格します。（「Promote Disaster Recovery Instance」をクリックすると、ターゲットApsaraDB RDS for PostgreSQLインスタンスとソースリージョンのApsaraDB RDS for PostgreSQLインスタンス間のデータ同期が切断されます。ソースリージョンのインスタンスの新しいデータは、ターゲットApsaraDB RDS for PostgreSQLインスタンスに同期されなくなります。）
9. アプリケーションの接続文字列をターゲットApsaraDB RDS for PostgreSQLインスタンスのものに変更します。

自己構築したPostgreSQLインスタンスとApsaraDB RDS for PostgreSQLインスタンスを使用して地理的災害復旧クラスターを構築する
ApsaraDB RDS for PostgreSQLのクラウド移行機能を使用して、自己構築したPostgreSQLインスタンスと異なるリージョンのApsaraDB RDS for PostgreSQLインスタンスで構成される地理的災害復旧クラスターを構築するには、以下の手順を実行します。

1. ApsaraDB RDSコンソールの購入ページにログインし、ソースリージョンの自己構築したPostgreSQLインスタンスと同じデータベースバージョンのApsaraDB RDS for PostgreSQLインスタンスを作成します。
2. このシナリオでは、ステップ2から5まで、自己構築したPostgreSQLインスタンスとApsaraDB RDS for PostgreSQLインスタンスを使用してゾーン災害復旧クラスターを構築する場合と同じです。

災害復旧クラスターのアプリケーションシナリオ拡張
リモート読み取り専用: 地理的災害復旧クラスターを構築している場合、宛先リージョンのApsaraDB RDS for PostgreSQLインスタンスは、ソースリージョンのApsaraDB RDS for PostgreSQLインスタンスまたは自己構築したPostgreSQLインスタンスからのデータをリアルタイムで同期します。さらに、ApsaraDB RDS for PostgreSQLインスタンスは読み取り専用サービスを提供できるため、地理的災害復旧クラスターをグローバル展開要件を持つビジネスシナリオ向けにリージョン間で配置されたグローバルデータベースクラスターとして使用できます。次の図は、宛先リージョンのインスタンスの読み取り専用機能を使用して読み取り専用トラフィックを処理するApsaraDB RDS for PostgreSQLインスタンスのトポロジを示しています。
![5](https://yqintl.alicdn.com/c6f6d8d7a61214d459e1989fc88558d52cb0af51.png)

クロスクラウド災害復旧
特定のシナリオでは、企業は単一のクラウドベンダーの障害やその他の理由によるデータ損失やビジネス中断のリスクを減らすために、複数のクラウドにビジネスを展開する必要がある場合があります。これにより、データの可用性とセキュリティが向上し、ビジネス継続性が確保されます。ApsaraDB RDS for PostgreSQLのクラウド移行機能を使用して、他のクラウドベンダーの災害復旧インスタンスとして機能するApsaraDB RDS for PostgreSQLインスタンスを作成できます。障害やその他の理由によりデータベースサービスが中断した場合、迅速にApsaraDB RDS for PostgreSQLインスタンスをプライマリインスタンスに昇格して読み書き可能なサービスを提供できるため、低コストでビジネスを迅速に復旧させたり、クロスクラウドでのビジネス移行を実行したりできます。次の図は、クロスクラウド災害復旧インスタンスのトポロジを示しています。
![6](https://yqintl.alicdn.com/42fc4c43864df180258399f692eed326da983a54.png)

ソースインスタンスの異なるクラウドサービスプロバイダーにより、サードパーティのクラウドとアリババクラウド間のネットワーク接続ソリューションも異なります。一般的なネットワーク接続ソリューションには、VPN、専用線、またはパブリックインターネットがあります。インターネット経由でサードパーティのクラウドソースインスタンス向けのApsaraDB RDS for PostgreSQLインスタンスを構築する必要がある場合は、以下の一覧を参照して構成できます：[Use an ApsaraDB RDS for PostgreSQL instance to access an external database over the Internet](https://www.alibabacloud.com/help/en/rds/apsaradb-rds-for-postgresql/use-an-apsaradb-rds-for-postgresql-instance-to-access-an-external-database-over-the-internet)。

サードパーティのクラウドPostgreSQLインスタンスとApsaraDB RDS for PostgreSQLインスタンスを使用してクロスクラウド災害復旧クラスターを構築する
サードパーティのクラウドPostgreSQLインスタンスとApsaraDB RDS for PostgreSQLインスタンスで構成されるクロスクラウド災害復旧クラスターを構築するには、以下の手順を実行します。

1. ApsaraDB RDSコンソールの購入ページにログインし、サードパーティのクラウドApsaraDB RDS for PostgreSQLインスタンスと同じデータベース
![7](https://yqintl.alicdn.com/0622c2d1511807479e24d7a9eda34553b6df6cce.png)

## 要約
<a href="https://www.alibabacloud.com/product/apsaradb-for-rds-postgresql?spm=a3c0i.29596822.7495012640.4.69ffd0b27UAltH" target="_blank">ApsaraDB RDS for PostgreSQL</a>のクラウド移行機能を使用すると、自前で構築したPostgreSQLインスタンスからApsaraDB RDS for PostgreSQLインスタンスへ、ApsaraDB for RDS PostgreSQLインスタンス間、またはサードパーティのクラウドPostgreSQLインスタンスからApsaraDB RDS for PostgreSQLインスタンスへ簡単にディザスタリカバリクラスターを構築できます。これにより、ゾーンディザスタリカバリ、地理的ディザスタリカバリ、クロスクラウドディザスタリカバリなどの複雑なディザスタリカバリシナリオでのビジネス要件を満たし、自然災害、ネットワーク攻撃、システム障害に直面してもビジネス運営を迅速に再開できるようになります。これにより、顧客の信頼と市場競争力を維持することができます。

さらに、このクラウド移行機能は、自前で構築したPostgreSQLインスタンスからApsaraDB RDS for PostgreSQLインスタンスへのデータ移行や、サードパーティのクラウドPostgreSQLインスタンスからApsaraDB RDS for PostgreSQLインスタンスへのデータ移行などのデータ移行情景でも使用でき、データベース移行のしきい値を大幅に低減し、変動する市場環境においてデータの安全性とビジネスの安定性をより良い形で保証します。最後に、この機能は、クラウドでの読み取り能力の拡張やリモート読み取り専用など、様々な柔軟なインスタンス展開シナリオでも使用でき、ますます複雑化するビジネスシナリオにおけるデータベースインスタンスの柔軟な展開要求を容易に満たすことができます。

ApsaraDB RDS for PostgreSQLのクラウド移行機能について詳しくは、<a href="https://www.alibabacloud.com/help/en/rds/apsaradb-rds-for-postgresql/cloud-migration" target="_blank">クラウドへの移行</a>をご覧ください。