本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭配 Aurora Global Database 使用外部資料表
Aurora Global Database 支援使用每個區域設定執行分析查詢。本節說明如何跨區域設定分析查詢、自動複寫哪些資源,以及如何規劃災難復原案例。
搭配全域資料庫使用 aurora_analytics
外部資料表是 PostgreSQL 資料表定義,指向 Amazon S3、Amazon S3 Tables 或 中的 Apache Iceberg 或 Parquet 資料 AWS Glue Data Catalog。不會將資料複製到 Aurora。只有下列從主要資料庫叢集複寫到每個次要資料庫叢集:
-
aurora_analytics延伸模組安裝 -
外部資料表定義 (DDL)
下列項目不會複寫,且必須在包含次要資料庫叢集的每個區域中獨立佈建:
-
資料庫叢集的 IAM 角色關聯
-
授予 Amazon S3 AWS Glue或 Amazon S3 Tables 存取權的 IAM 政策
-
用來連接這些服務的 VPC 聯網 (端點或 NAT)
在全域資料庫上設定
步驟 1:在每個區域中建立 IAM 政策和角色
IAM 角色關聯不會在主要和次要資料庫叢集之間複寫。您必須在每個包含主要或次要資料庫叢集的區域中,使用 AuroraAnalytics功能名稱建立並連接 IAM 角色。
-
建立授予資料讀取存取權的 IAM 政策。所需的許可取決於您的資料格式。如需詳細資訊,請參閱IAM 政策參考。
-
建立 信任的 IAM 角色
rds.amazonaws.com並連接政策。 -
將角色與該區域的資料庫叢集建立關聯:
aws rds add-role-to-db-cluster \ --db-cluster-identifier <cluster-in-this-region> \ --role-arn arn:aws:iam::<account-id>:role/AuroraAnalyticsRole \ --feature-name AuroraAnalytics -
等到角色狀態顯示為作用中。
注意
在連接角色之後 (或在執行個體啟動或提升之後),針對外部資料表的查詢可能會短暫傳回錯誤:credential to access AWS service is unavailable。等到角色狀態為作用中,再對外部資料表執行查詢。
步驟 2:在每個區域中設定聯網
VPC 組態也不會複寫。在每個資料庫叢集 (主要和每個次要) 的 VPC 中,提供所需服務的網路路徑,以便資料庫叢集可以連接外部資料表資料來解決查詢。確保每個次要的叢集聯網組態允許到達外部資料表的區域。
| 服務 | 端點類型 | 的必要項目 |
|---|---|---|
Amazon S3 (com.amazonaws.<region>.s3) |
閘道 | 所有 Amazon S3 和 Amazon S3 Tables 資料存取 |
AWS Glue (com.amazonaws.<region>.glue) |
介面 | AWS Glue Data Catalog 存取 (Iceberg 資料表) |
AWS STS (com.amazonaws.<region>.sts) |
介面 | IAM 角色登入資料擷取 |
對於 AWS Glue 和 AWS STS 介面端點,啟用私有 DNS 並允許來自 VPC CIDR 的傳入 TCP 443。
步驟 3:在主要 上安裝擴充功能
連線至主要資料庫叢集中的寫入器資料庫執行個體,並在您要建立外部資料表的每個資料庫中安裝擴充功能:
CREATE EXTENSION aurora_analytics;
延伸項目會自動複寫到每個次要資料庫叢集。
步驟 4:在主要 上建立外部資料表
在主要資料庫叢集中的寫入器資料庫執行個體上,建立指向資料的外部資料表:
-- Parquet via S3 URI CREATE FOREIGN TABLE ft_orders () SERVER aurora_analytics_server OPTIONS (location 's3://my-bucket/orders/', format 'parquet', region 'us-east-1'); -- Iceberg via Glue ARN CREATE FOREIGN TABLE ft_transactions () SERVER aurora_analytics_server OPTIONS (location 'arn:aws:glue:us-east-1:123456789012:table/mydb/transactions', format 'iceberg');
Aurora 會將 DDL 複寫到每個次要資料庫叢集,其中外部資料表可供查詢。
步驟 5:在次要 上驗證
連線至次要資料庫叢集並確認複寫和讀取存取:
SELECT extname, extversion FROM pg_extension WHERE extname = 'aurora_analytics'; SELECT count(*) FROM ft_orders;
外部資料表的區域鎖定
當您建立外部資料表時,其資料location和 Region 會存放在資料表定義中,並複寫到全域資料庫中的每個資料庫叢集。每個資料庫叢集都會從相同位置讀取。
這表示:
-
每個次要資料庫叢集會從資料表定義中指定的區域讀取外部資料表資料。
-
如果該區域與次要區域的區域不同,則讀取為跨區域,這會增加資料傳輸成本和延遲。
-
每個次要的 IAM 角色和聯網允許到達外部資料表的區域。
注意
不支援 Amazon S3 多區域存取點 (MRAPs) 做為外部資料表位置。Aurora PostgreSQL 在 location選項中僅接受 s3:// URIs、 AWS Glue 資料表 ARNs 和 Amazon S3 資料表 ARNs。MRAP ARNs和 MRAP 主機名稱對 location選項無效。
DR 整備的一般指引
完成次要資料庫叢集的步驟 1–2 中的每個區域設定,然後決定資料庫叢集將如何存取外部資料表資料:
-
接受跨區域讀取:此方法僅適用於原始區域運作狀態良好的計劃轉換案例。
-
預製區域本機複本:使用 Amazon S3 跨區域複寫,即使原始區域無法使用,分析查詢也可以在本機讀取。準備
ALTER FOREIGN TABLE ... OPTIONS (SET ...)陳述式來更新外部資料表位置,以指向區域本機複本。
注意
發生切換或容錯移轉時,不會保留或傳輸磁碟上讀取快取。事件從 Amazon S3 讀取資料後的第一個查詢,並以較高的延遲執行,直到快取暖機為止。
處理切換和容錯移轉
在 Aurora 全域資料庫切換或容錯移轉期間,外部資料表查詢除了標準資料庫用戶端連線之外還有其他相依性:它們必須到達 Amazon S3 AWS Glue,以及在每個外部資料表命名 AWS STS 的區域中。
全域資料庫切換
主要和次要資料庫叢集在切換時都正常運作。新的主要資料庫叢集可用後,查詢會繼續從每個外部資料表中名為 的區域讀取。如果該區域與新寫入器的區域不同,則讀取會跨區域,並產生資料傳輸成本和延遲。若要避免跨區域讀取延遲,請執行預備ALTER FOREIGN TABLE ... OPTIONS (SET ...)陳述式,將外部資料表重新指向區域本機複本。
切換後繼續操作
-
允許用戶端重新連線至新主要資料庫叢集的寫入器端點。
-
等到 IAM 角色狀態為作用中。針對具有重試邏輯的外部資料表 (例如
SELECT count(*) FROM ft_orders) 執行測試查詢,以確認分析查詢可運作。 -
如果使用區域本機複本,請在新的主要資料庫叢集上執行預備
ALTER陳述式,以更新外部資料表位置:ALTER FOREIGN TABLE ft_orders OPTIONS (SET location 's3://dr-region-bucket/orders/', SET region 'us-west-2'); ALTER FOREIGN TABLE ft_transactions OPTIONS (SET location 'arn:aws:glue:us-west-2:123456789012:table/mydb/transactions');
注意
ALTER FOREIGN TABLE ... OPTIONS (SET ...) 是僅限目錄中繼資料的變更。它會立即完成,不會移動任何資料。它需要對該單一外部資料表進行短暫ACCESS EXCLUSIVE鎖定。因此,它被相同資料表上的任何處理中查詢封鎖。
全域資料庫容錯移轉
原始區域可能會受損或無法連線。如果外部資料表為受損區域命名,則查詢會遇到高延遲或失敗並出現逾時錯誤,直到該區域復原或您將外部資料表重新指向運作狀態良好的區域中的資料。如果您預先設定區域本機複本,請執行預備ALTER FOREIGN TABLE ... OPTIONS (SET region ...)陳述式,將外部資料表指向區域本機複本。
返回原始主要區域
當原始主要區域可用時,Aurora 會自動將其新增回全域資料庫做為次要資料庫叢集。在切換或容錯移轉期間所做的任何ALTER FOREIGN TABLE變更都會透過全域複寫複寫到它。若要還原原始主要區域,請執行切換。切換完成後,決定是否將外部資料表位置還原為指向還原的主要區域中的資料。
全域資料庫上的錯誤訊息
在切換或容錯移轉之後,新主要區域中的查詢可能會因為相同的 IAM 角色關聯、IAM 許可和網路錯誤而失敗,這些錯誤會影響執行次要資料庫叢集的任何區域。這些錯誤及其解決方法涵蓋在 下的全域資料庫切換和容錯移轉中監控和故障診斷。每個次要區域都必須滿足先決條件,因為 IAM 角色關聯、IAM 政策和 VPC 聯網不會複寫。
-
外部資料表
location和region是單一複寫定義,沒有每個區域覆寫。兩個叢集無法保留相同資料表的不同區域。 -
不支援 Amazon S3 多區域存取點和 Amazon S3 存取點 ARNs 做為外部資料表位置。
-
VPC 閘道端點為區域性,無法到達另一個區域的 Amazon S3。跨區域網路路徑需要 NAT/網際網路輸出或 Transit Gateway。
-
切換後,將外部資料表位置更新至新的主要資料庫叢集的區域,會導致先前的主要資料庫叢集改為讀取跨區域。
-
外部資料表 DDL 和延伸模組只會在次要 連接並同步後複寫。在次要 連接之後,在主要 上安裝
aurora_analytics擴充功能並建立外部資料表,以便它們傳播。