

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Aurora PostgreSQL Limitless Database 資料載入公用程式
<a name="limitless-load.utility"></a>

Aurora 提供公用程式，可將資料直接從 Aurora PostgreSQL 資料庫叢集或 RDS for PostgreSQL 資料庫執行個體載入 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 資料庫叢集或 RDS for PostgreSQL 資料庫執行個體的資料](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 多可用區域資料庫叢集的下列來源組態：
  + 主要執行個體
    + 支援的模式：快照、快照\_then\_cdc
  + 複本執行個體
    + 支援的模式：僅限快照
      + 要求：必須啟用 hot\_standby\_feedback
    + 不支援：快照\_then\_cdc

## 先決條件
<a name="limitless-load.prereqs"></a>

資料載入公用程式有下列先決條件：
+ 來源資料庫使用 Aurora PostgreSQL 或 RDS for PostgreSQL 11.x 版及更新版本。
+ 來源資料庫與 AWS 區域 目的地資料庫碎片群組位於相同 AWS 帳戶 和 。
+ 來源資料庫叢集或資料庫執行個體處於 `available` 狀態。
+ 來源資料庫和無限資料庫上的資料表具有相同的資料表名稱、欄名稱和欄資料類型。
+ 來源和目的地資料表具有使用相同欄和欄順序的主索引鍵。
+ 您必須擁有可連線至無限資料庫的環境，才能執行資料載入命令。可用的命令如下：
  + `rds_aurora.limitless_data_load_start`
  + `rds_aurora.limitless_data_load_cancel`
+ 對於 CDC：
  + 來源資料庫和目的地資料庫碎片群組都必須使用相同的資料庫子網路群組、VPC 安全群組和資料庫連接埠。這些設定適用於與來源資料庫和資料庫碎片群組中路由器的網路連線。
  + 您必須在來源資料庫啟用邏輯複寫。來源資料庫使用者必須具有讀取邏輯複寫的權限。

## 準備來源資料庫
<a name="limitless-load.source"></a>

若要存取來源資料庫進行資料載入，您必須允許傳入其中的網路流量。執行以下步驟。

**允許來源資料庫的網路流量**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)：// 開啟 Amazon EC2 主控台。

1. 瀏覽至**安全群組**頁面。

1. 針對來源資料庫叢集或執行個體所使用的安全群組，選擇**安全群組 ID**。

   例如，其安全群組 ID 為 `sg-056a84f1712b77926`。

1. 在**傳入規則**索引標籤：

   1. 選擇 **Edit inbound Rules** (編輯傳入規則)。

   1. 為來源資料庫叢集或執行個體新增傳入規則：
      + 連接埠範圍：來源資料庫的資料庫連接埠，通常為 `5432`
      + 安全群組 ID：在此範例中為 `sg-056a84f1712b77926`  
![新增來源資料庫的傳入規則。](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/AuroraUserGuide/images/limitless_self_access_inbound_rule.png)

1. 在**傳出規則**索引標籤：

   1. 選擇**編輯傳出規則**。

   1. 為來源資料庫叢集或執行個體新增傳出規則：
      + 資料庫連接埠：`All traffic` (包括連接埠 `0-65535`)
      + 安全群組 ID：在此範例中為 `sg-056a84f1712b77926`  
![新增來源資料庫的傳出規則。](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/AuroraUserGuide/images/limitless_self_access_outbound_rule.png)

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)：// 開啟 Amazon 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) 中的程序，在資料庫碎片群組中建立目的地資料表。

目的地資料表必須具有與來源資料表相同的結構描述、資料表名稱和主索引鍵。

## 建立資料庫憑證
<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>

目的地資料庫使用者必須具有寫入資料庫碎片群組中目的地資料表的許可。

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}};
   ```