

# Aurora PostgreSQL Limitless Database データロードユーティリティの使用
<a name="limitless-load.utility"></a>

Aurora は、Aurora PostgreSQL DB クラスターまたは RDS for PostgreSQL DB インスタンスから Limitless Database に直接データをロードするためのユーティリティを提供します。

データロードユーティリティを使用するには、次のステップを実行します。

1. [前提条件](#limitless-load.prereqs)

1. [ソースデータベースの準備](#limitless-load.source)

1. [送信先データベースの準備](#limitless-load.destination)

1. [データベース認証情報の作成](#limitless-load.users)

1. 次のいずれかです:
   + [スクリプトを使用したデータベース認証とリソースアクセスの設定](limitless-load.script.md) (推奨)
   + [データベース認証とリソースアクセスの手動設定](limitless-load.manual.md)

1. [Aurora PostgreSQL DB クラスターまたは RDS for PostgreSQL DB インスタンスからデータをロードする](limitless-load.data.md)

## 制限事項
<a name="limitless-load.limitations"></a>

データロードユーティリティには次の制限があります。
+ 次のデータ型はサポートされていません: `enum`、`ARRAY`、`BOX`、`CIRCLE`、`LINE`、`LSEG`、`PATH`、`PG_LSN`、`PG_SNAPSHOT`、`POLYGON`、`TSQUERY`、`TSVECTOR`、`TXID_SNAPSHOT`。
+ 先頭のゼロ (`0`) は、ロード中に `VARBIT` データ型から削除されます。
+ 送信先テーブルに外部キーがある場合、データ移行は失敗します。
+ Limitless Data Utility は、Amazon RDS for PostgreSQL マルチ AZ DB クラスターの次のソース設定をサポートしています。
  + プライマリインスタンス
    + サポートされているモード: snapshot、snapshot\$1then\$1cdc
  + レプリカインスタンス
    + サポートされているモード: snapshot のみ
      + 要件: hot\$1standby\$1feedback を有効にする必要があります
    + サポート対象外: snapshot\$1then\$1cdc

## 前提条件
<a name="limitless-load.prereqs"></a>

データロードユーティリティには、次の前提条件があります。
+ ソースデータベースで、Aurora PostgreSQL または RDS for PostgreSQL バージョン 11.x 以降を使用している。
+ ソースデータベースが、送信先 DB シャードグループと同じ AWS アカウントおよび AWS リージョンにある。
+ ソース DB クラスターまたは DB インスタンスが `available` 状態にある。
+ ソースデータベースと無制限のデータベースのテーブルが、同じテーブル名、列名、列データ型を持っている。
+ ソーステーブルと送信先テーブルに、同じ列と列の順序を使用するプライマリキーがある。
+ データロードコマンドを実行するには、無制限のデータベースに接続するための環境が必要です。使用可能なコマンドは次のとおりです。
  + `rds_aurora.limitless_data_load_start`
  + `rds_aurora.limitless_data_load_cancel`
+ CDC の場合:
  + ソースデータベースと送信先 DB シャードグループの両方で、同じ DB サブネットグループ、VPC セキュリティグループ、およびデータベースポートを使用する必要があります。これらのセットアップは、ソースデータベースと DB シャードグループ内のルーターの両方へのネットワーク接続用です。
  + ソースデータベースで論理レプリケーションを有効にする必要があります。ソースデータベースユーザーには、論理レプリケーションを読み取る権限が必要です。

## ソースデータベースの準備
<a name="limitless-load.source"></a>

データをロードするためにソースデータベースにアクセスするには、ソースデータベースへの受信ネットワークトラフィックを許可する必要があります。以下のステップを実行します。

**ソースデータベースへのネットワークトラフィックを許可するには**

1. AWS マネジメントコンソール にサインインし、Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. **[セキュリティグループ]** ページに移動します。

1. ソース DB クラスターまたはインスタンスが使用するセキュリティグループの**セキュリティグループID** を選択します。

   例えば、そのセキュリティグループ ID は `sg-056a84f1712b77926` です。

1. **[インバウンドルール]** タブで以下を行います。

   1. **[インバウンドのルールを編集]** を選択します。

   1. ソース DB クラスターまたはインスタンスに新しいインバウンドルールを追加します。
      + ポート範囲 — ソースデータベースのデータベースポート。通常は `5432`
      + セキュリティグループ ID – この例では `sg-056a84f1712b77926`  
![\[ソースデータベースのインバウンドルールを追加します。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/images/limitless_self_access_inbound_rule.png)

1. **[アウトバウンドルール]** タブで以下を行います。

   1. **[Edit outbound rules]** (アウトバウンドルールの編集) を選択します。

   1. ソース DB クラスターまたはインスタンスに新しいアウトバウンドルールを追加します。
      + データベースポート – `All traffic` (ポート `0-65535` を含む）
      + セキュリティグループ ID – この例では `sg-056a84f1712b77926`  
![\[ソースデータベースのアウトバウンドルールを追加します。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/images/limitless_self_access_outbound_rule.png)

1. AWS マネジメントコンソール にサインインして、Amazon VPC コンソール ([https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)) を開きます。

1. **[ネットワーク ACL]** ページに移動します。

1. 「[デフォルトのネットワーク ACL](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#default-network-acl)」の説明に従って、デフォルトのネットワーク ACL 設定を追加します。

## 送信先データベースの準備
<a name="limitless-load.destination"></a>

「[Aurora PostgreSQL Limitless Database テーブルの作成](limitless-creating.md)」の手順に従って、DB シャードグループに送信先テーブルを作成します。

送信先テーブルには、ソーステーブルと同じスキーマ、テーブル名、プライマリキーが必要です。

## データベース認証情報の作成
<a name="limitless-load.users"></a>

ソースデータベースと送信先データベースにデータベースユーザーを作成し、必要な権限をユーザーに付与する必要があります。詳細については、PostgreSQL ドキュメントの「[CREATE USER](https://www.postgresql.org/docs/current/sql-createuser.html)」および「[GRANT](https://www.postgresql.org/docs/current/sql-grant.html)」を参照してください。

### ソースデータベース認証情報を作成する
<a name="limitless-load.users.source"></a>

ソースデータベースユーザーは、ロードを開始するコマンドで渡されます。このユーザーには、ソースデータベースからレプリケーションを実行する権限が必要です。

1. データベースマスターユーザー (または `rds_superuser` ロールを持つ別のユーザー) を使用して、`LOGIN` 権限を持つソースデータベースユーザーを作成します。

   ```
   CREATE USER source_db_username WITH PASSWORD 'source_db_user_password';
   ```

1. ソースデータベースユーザーに `rds_superuser` ロールを付与します。

   ```
   GRANT rds_superuser to source_db_username;
   ```

1. `full_load_and_cdc` モードを使用している場合は、ソースデータベースユーザーに `rds_replication` ロールを付与します。`rds_replication` ロールは、論理スロットを管理し、論理スロットを使用してデータをストリーミングするアクセス権許可付与します。

   ```
   GRANT rds_replication to source_db_username;
   ```

### 送信先データベースの認証情報を作成する
<a name="limitless-load.users.destination"></a>

送信先データベースユーザーには、DB シャードグループの送信先テーブルに書き込むためのアクセス許可が必要です。

1. データベースマスターユーザー (または `rds_superuser` ロールを持つ別のユーザー) を使用して、`LOGIN` 権限を持つ送信先データベースユーザーを作成します。

   ```
   CREATE USER destination_db_username WITH PASSWORD 'destination_db_user_password';
   ```

1. 送信先データベースユーザーに `rds_superuser` ロールを付与します。

   ```
   GRANT rds_superuser to destination_db_username;
   ```