

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# pglogic を使用して Amazon EC2 上の PostgreSQL から Amazon RDS for PostgreSQL に移行する
<a name="migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical"></a>

*Amazon Web Services、Rajesh Madiwale*

## 概要
<a name="migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical-summary"></a>

このパターンは、PostgreSQLの **pglogical ** 拡張機能を使用して、PostgreSQL データベース (バージョン 9.5 以降) を Amazon Elastic Compute Cloud (Amazon EC2) から PostgreSQL 用 Amazon Relational Database Service (Amazon RDS) に移行する手順を概説しています。pglogical 拡張は、Amazon RDS の PostgreSQL バージョン 10 でサポートされています。

## 前提条件と制限事項
<a name="migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical-prereqs"></a>

**前提条件**
+ 適切なタイプの Amazon RDS インスタンスを選択します。詳細については、「[Amazon RDS のインスタンスタイプ](https://aws.amazon.com/rds/instance-types/)」を参照してください。
+ PostgreSQL のソースバージョンとターゲットバージョンが同じであることを確認します。  
+ Amazon EC2 で[**pglogical** extension with PostgreSQL](https://github.com/2ndQuadrant/pglogical)をインストールして統合します。

**製品バージョン**
+ Amazon RDS でサポートされている機能を備えた PostgreSQL バージョン 10 以降 (AWS ドキュメントの「[Amazon RDS 上の PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts)」を参照)。このパターンは、Amazon RDS 上の PostgreSQL 9.5 から PostgreSQL バージョン 10 への移行でテストされましたが、Amazon RDS 上のそれ以降のバージョンの PostgreSQL にも適用されます。

## アーキテクチャ
<a name="migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical-architecture"></a>

**データ移行アーキテクチャ**

![\[Amazon RDS 上の PostgreSQL 用データ移行アーキテクチャ\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/29af3931-48de-499f-9c4b-e10a98e4bba5/images/5f5b906f-dc1a-49a5-ae3f-3e10ae854784.png)


## ツール
<a name="migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical-tools"></a>
+ [https://github.com/2ndQuadrant/pglogical](https://github.com/2ndQuadrant/pglogical) 拡張機能
+ PostgreSQL ネイティブユーティリティ: [https://www.postgresql.org/docs/9.5/app-pgdump.html](https://www.postgresql.org/docs/9.5/app-pgdump.html) と [https://www.postgresql.org/docs/9.6/app-pgrestore.html](https://www.postgresql.org/docs/9.6/app-pgrestore.html)

## エピック
<a name="migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical-epics"></a>

### pglogic 拡張機能を使用してデータを移行する。
<a name="migrate-data-by-using-the-pglogical-extension"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon RDS PostgreSQL DB インスタンスを作成する。 | Amazon RDS で PostgreSQL DB インスタンスを設定します。手順については、[Amazon RDS for PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.PostgreSQL.html) ドキュメントを参照してください。 | DBA | 
| ソース PostgreSQL データベースからスキーマダンプを取得し、ターゲット PostgreSQL データベースで復元する。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical.html) | DBA | 
| 論理デコードを有効にする。 | Amazon RDS DB パラメータグループで、`rds.logical_replication` 静的パラメータを 1 に設定します。手順については、[Amazon RDS ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.FeatureSupport.LogicalDecoding)を参照してください。 | DBA | 
| pglogical 拡張機能をソースデータベースとターゲットデータベースで作成する。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical.html) | DBA | 
| ソース PostgreSQL データベースにパブリッシャーを作成する。 | パブリッシャーを作成するには、以下を実行します。<pre>psql -d dbname -p 5432 <<EOF<br />SELECT pglogical.create_node( node_name := 'provider1', dsn := 'host=<ec2-endpoint> port=5432 dbname=source-dbname user=source-dbuser' );<br />EOF</pre> | DBA | 
| リプリケーションセットを作成し、テーブルとシーケンスを追加する。 | ソース PostgreSQL データベースにリプリケーションセットを作成し、そのリプリケーションセットにテーブルとシーケンスを追加するには、以下を実行します。<pre>psql -d dbname -p 5432 <<EOF<br />SELECT pglogical.replication_set_add_all_tables('default', '{public}'::text[],synchronize_data := true);<br />EOF</pre> | DBA | 
| サブスクライバーを作成します。 | ターゲット PostgreSQL データベースにサブスクライバーを作成するには、以下を実行します。<pre>psql -h <rds-endpoint> -d target-dbname -U target-dbuser  <<EOF<br />SELECT pglogical.create_node(<br />    node_name := 'subscriber1',<br />    dsn := 'host=<rds-endpoint> port=5432 dbname=target-dbname password=postgres user=target-dbuser'<br />);<br />EOF</pre> | DBA | 
| サブスクリプションを作成する。 | ターゲット PostgreSQL データベースにサブスクリプションを作成するには、以下を実行します。<pre>psql -h <rds-endpoint> -d target -U postgres  <<EOF<br />SELECT pglogical.create_subscription(<br /> subscription_name := 'subscription1',<br /> replication_sets := array['default'],<br />    provider_dsn := 'host=<ec2-endpoint> port=5432 dbname=<source-dbname> password=<password> user=source-dbuser'<br />);</pre> | DBA | 

### データを検証する
<a name="validate-your-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースデータベースとターゲットデータベースを確認します。 | ソースデータベースとターゲットデータベースをチェックして、データが正常に複製されていることを確認します。ソーステーブルとターゲットテーブルの `select count(1)` を使用して基本的な検証を実行できます。 | DBA | 

## 関連リソース
<a name="migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical-resources"></a>
+ 「[Amazon RDS](https://aws.amazon.com/rds/)」 
+ [Amazon RDS 上の PostgreSQL の論理レプリケーション](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.FeatureSupport.LogicalReplication) (Amazon RDS ドキュメント)
+ [pglogical](https://github.com/2ndQuadrant/pglogical) (GitHub リポジトリ)
+ 「[pglogicalの制限事項](https://github.com/2ndQuadrant/pglogical#limitations-and-restrictions) 」(GitHub リポジトリの README ファイル) 
+ [ロジカルレプリケーションを使用して PostgreSQL をオンプレミスまたは Amazon EC2 から Amazon RDS に移行する](https://aws.amazon.com/blogs/database/migrating-postgresql-from-on-premises-or-amazon-ec2-to-amazon-rds-using-logical-replication/) (AWS データベースブログ)