在不同的 AWS 區域中建立僅供讀取複本 - Amazon Relational Database Service

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

在不同的 AWS 區域中建立僅供讀取複本

使用 Amazon RDS,您可以在 AWS 區域 與來源資料庫執行個體不同的 中建立僅供讀取複本。

跨區域僅供讀取複本組態

您可以在不同的 中建立僅供讀取複本 AWS 區域 ,以執行下列動作:

  • 改善災難復原功能。

  • 將讀取操作擴展到 AWS 區域 更接近使用者的位置。

  • 讓您更輕鬆地從一個 中的資料中心遷移 AWS 區域 到另一個 中的資料中心 AWS 區域。

在 AWS 區域 與來源執行個體不同的 中建立僅供讀取複本,類似於在相同的 中建立複本 AWS 區域。您可以使用 AWS Management Console、執行 create-db-instance-read-replica命令,或呼叫 CreateDBInstanceReadReplica API 操作。

注意

若要在與來源資料庫執行個體 AWS 區域 不同的 中建立加密的僅供讀取複本,來源資料庫執行個體必須加密。

區域和版本可用性

功能可用性和支援會因每個資料庫引擎的特定版本以及 AWS 區域而有所不同。如需跨區域複寫的版本和區域可用性的相關資訊,請參閱Amazon RDS 中跨區域僅供讀取複本支援的 區域和資料庫引擎

建立跨區域僅供讀取複本

下列程序說明如何從不同 AWS 區域中的來源 MariaDB、Microsoft SQL Server、MySQL、Oracle 或 PostgreSQL 資料庫執行個體建立僅供讀取複本。

您可以使用 跨 建立僅供讀取複本 AWS 區域 AWS Management Console。

AWS 區域 使用主控台跨 建立僅供讀取複本
  1. 登入 AWS Management Console 並開啟位於 https://https://console.aws.amazon.com/rds/ 的 Amazon RDS 主控台。

  2. 在導覽窗格中,選擇 Databases (資料庫)。

  3. 選擇要作為僅供讀取複本來源的 MariaDB、Microsoft SQL Server、MySQL、Oracle 或 PostgreSQL 資料庫執行個體。

  4. Actions (動作) 中選擇 Create read replica (建立僅供讀取複本)

  5. DB instance identifier (資料庫執行個體識別符) 中,輸入僅供讀取複本的名稱。

  6. 選擇 Destination Region (目的地區域)

  7. 選擇您想要使用的執行個體規格。建議您使用與僅供讀取複本相同或更大的資料庫執行個體類別和儲存體類型。

  8. 若要在另一個 中建立加密的僅供讀取複本 AWS 區域:

    1. 選擇 Enable encryption (啟用加密)。

    2. 若為 AWS KMS key,選擇目的地 AWS 區域 KMS 金鑰的 AWS KMS key 識別符。

    注意

    若要建立加密的僅供讀取複本,來源資料庫執行個體也必須加密。若要進一步了解如何加密來源資料庫執行個體,請參閱加密 Amazon RDS 資源

  9. 請選擇其他選項,例如 storage autoscaling (儲存體自動擴展)。

  10. 選擇 Create read replica (建立僅供讀取複本)

若要從不同 中的來源 MariaDB、Microsoft SQL Server、MySQL、Oracle 或 PostgreSQL 資料庫執行個體建立僅供讀取複本 AWS 區域,您可以使用 create-db-instance-read-replica命令。於此情況下,您會使用想要的僅供讀取複本之 AWS 區域 (目的地區域) 的 create-db-instance-read-replica,並指定來源資料庫執行個體的 Amazon Resource Name (ARN)。ARN 專門識別在 Amazon Web Services 中建立的資源。​

例如,假如您的來源資料庫執行個體位在 US East (N. Virginia) 區域,則 ARN 看起來類似如下。

arn:aws:rds:us-east-1:123456789012:db:mydbinstance

如需 ARN 的詳細資訊,請參閱 Amazon 資源名稱(ARNs)RDS

若要在與來源資料庫執行個體 AWS 區域 不同的 中建立僅供讀取複本,您可以從目的地使用 AWS CLI create-db-instance-read-replica命令 AWS 區域。在另一個 AWS 區域中建立僅供讀取複本時需要下列參數:

  • --region – 建立僅供讀取複本 AWS 區域 的目的地。

  • --source-db-instance-identifier – 來源資料庫執行個體的資料庫執行個體識別符。此識別符必須是來源 AWS 區域的 ARN 格式。

  • --db-instance-identifier – 指定目的地 AWS 區域中僅供讀取複本的識別符。

範例 跨區域僅供讀取複本

下列程式碼會透過 US East (N. Virginia) 區域中的來源資料庫執行個體,在 美國西部 (奧勒岡) 區域中建立僅供讀取複本。

對於 Linux、 macOS或 Unix:

aws rds create-db-instance-read-replica \ --db-instance-identifier myreadreplica \ --region us-west-2 \ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydbinstance

在 Windows 中:

aws rds create-db-instance-read-replica ^ --db-instance-identifier myreadreplica ^ --region us-west-2 ^ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydbinstance

在另一個 AWS 區域中建立加密的僅供讀取複本時還需要下列參數:

  • --kms-key-id – 用來加密目的地 中僅供讀取複本的 KMS 金鑰 AWS KMS key 識別符 AWS 區域。

範例 加密的跨區域僅供讀取複本

下列程式碼會透過 US East (N. Virginia) 區域中的來源資料庫執行個體,在 美國西部 (奧勒岡) 區域中建立加密的僅供讀取複本。

對於 Linux、 macOS或 Unix:

aws rds create-db-instance-read-replica \ --db-instance-identifier myreadreplica \ --region us-west-2 \ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydbinstance \ --kms-key-id my-us-west-2-key

在 Windows 中:

aws rds create-db-instance-read-replica ^ --db-instance-identifier myreadreplica ^ --region us-west-2 ^ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydbinstance ^ --kms-key-id my-us-west-2-key

當您在 AWS GovCloud (美國東部) 和 AWS GovCloud (美國西部) 區域之間建立加密的僅供讀取複本時,需要 --source-region選項。若為 --source-region,請指定來源資料庫執行個體的 AWS 區域 。

若未指定 --source-region,請指定 --pre-signed-url 值。presigned URL (預先簽章的 URL) 為包含對來源 AWS 區域中呼叫 create-db-instance-read-replica 命令之 Signature 第 4 版簽章請求的 URL。如要進一步了解 pre-signed-url 選項,請參閱《AWS CLI 命令參考》中的 create-db-instance-read-replica

若要從不同 中的來源 MariaDB、MySQL、Microsoft SQL Server、Oracle 或 PostgreSQL 資料庫執行個體建立僅供讀取複本 AWS 區域,您可以呼叫 Amazon RDS API 操作 CreateDBInstanceReadReplica。在此情況下,您可以從您想要僅供讀取複本 (目的地區域) AWS 區域 的 呼叫 CreateDBInstanceReadReplica,並指定來源資料庫執行個體的 Amazon Resource Name (ARN)。ARN 專門識別在 Amazon Web Services 中建立的資源。​

若要在與來源資料庫執行個體 AWS 區域 不同的 中建立加密僅供讀取複本,您可以從目的地使用 Amazon RDS API CreateDBInstanceReadReplica操作 AWS 區域。若要在另一個 中建立加密的僅供讀取複本 AWS 區域,您必須指定 的值PreSignedURLPreSignedURL應包含請求,讓 CreateDBInstanceReadReplica操作在建立僅供讀取複本 AWS 區域 的來源中呼叫 。要進一步了解 PreSignedUrl,請參閱 CreateDBInstanceReadReplica

例如,假如您的來源資料庫執行個體位在 US East (N. Virginia) 區域,則 ARN 看起來類似如下。

arn:aws:rds:us-east-1:123456789012:db:mydbinstance

如需 ARN 的詳細資訊,請參閱 Amazon 資源名稱(ARNs)RDS

範例
https://us-west-2.rds.amazonaws.com/ ?Action=CreateDBInstanceReadReplica &KmsKeyId=my-us-east-1-key &PreSignedUrl=https%253A%252F%252Frds.us-west-2.amazonaws.com%252F %253FAction%253DCreateDBInstanceReadReplica %2526DestinationRegion%253Dus-east-1 %2526KmsKeyId%253Dmy-us-east-1-key %2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%123456789012%25253Adb%25253Amydbinstance %2526SignatureMethod%253DHmacSHA256 %2526SignatureVersion%253D4%2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%25253A123456789012%25253Ainstance%25253Amydbinstance %2526Version%253D2014-10-31 %2526X-Amz-Algorithm%253DAWS4-HMAC-SHA256 %2526X-Amz-Credential%253DAKIADQKE4SARGYLE%252F20161117%252Fus-west-2%252Frds%252Faws4_request %2526X-Amz-Date%253D20161117T215409Z %2526X-Amz-Expires%253D3600 %2526X-Amz-SignedHeaders%253Dcontent-type%253Bhost%253Buser-agent%253Bx-amz-content-sha256%253Bx-amz-date %2526X-Amz-Signature%253D255a0f17b4e717d3b67fad163c3ec26573b882c03a65523522cf890a67fca613 &DBInstanceIdentifier=myreadreplica &SourceDBInstanceIdentifier=&region-arn;rds:us-east-1:123456789012:db:mydbinstance &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-20T22%3A06%3A23.624Z &AWSAccessKeyId=<&AWS; Access Key ID> &Signature=<Signature>

Amazon RDS 如何執行跨區域複寫

Amazon RDS 使用下列流程建立跨區域僅供讀取複本。根據 AWS 區域 涉及的 和資料庫中的資料量,此程序可能需要數小時才能完成。您可在建立跨區域僅供讀取複本時利用此資訊來判斷流程的進度:

  1. Amazon RDS 開始將來源資料庫執行個體設定為複寫來源,並將狀態設為 modifying (修改中)

  2. Amazon RDS 開始設定指定 AWS 區域 中的指定僅供讀取複本,並將狀態設為 creating (建立中)。

  3. Amazon RDS 對來源 AWS 區域中的來源資料庫執行個體建立自動化資料庫快照。資料庫快照名稱的格式為 rds:<InstanceID>-<timestamp>,其中 <InstanceID> 為來源執行個體的識別符,<timestamp> 為複製開始的日期和時間。例如,rds:mysourceinstance-2013-11-14-09-24 是從 mysourceinstance 執行個體於 2013-11-14-09-24 所建立。​ 在建立自動化資料庫快照期間,來源資料庫執行個體狀態會保持為 modifying (修改中),僅供讀取複本的狀態保持為 creating (建立中),而資料庫快照的狀態則為 creating (建立中)。主控台中資料庫快照頁面的進度欄將回報資料庫快照建立的進度。資料庫快照完成時,資料庫快照和來源資料庫執行個體的狀態將同時設為 available (可用)

  4. Amazon RDS 開始進行初始資料傳輸的跨區域快照複製。快照複本在目的地 AWS 區域 將列為自動化快照,狀態顯示 creating (建立中)。其名稱與來源資料庫快照的名稱相同。資料庫快照的進度欄將顯示複製的進度。一旦複製完成,資料庫快照的狀態會變成 available (可用)

  5. 然後 Amazon RDS 會將複製的資料庫快照用於僅供讀取複本上的初始資料載入。在此階段,僅供讀取複本會列在目的地的資料庫執行個體清單中,狀態為 creating (建立中)。一旦載入完成,僅供讀取複本的狀態會變成 available (可用),並將刪除資料庫快照複本。

  6. 僅供讀取複本變成可供使用狀態之後,Amazon RDS 會開始複寫從建立僅供讀取複本操作起始起,對來源執行個體進行的變更。在此階段期間,僅供讀取複本的複寫延遲時間將大於 0。

    如需複寫延遲時間的資訊,請參閱 監控僅供讀取複本

跨區域複寫考量

在 內執行複寫的所有考量 AWS 區域 都適用於跨區域複寫。在 AWS 區域間複寫時,適用下列的額外考量:

  • 來源資料庫執行個體可在多個 AWS 區域有跨區域僅供讀取複本。由於來源 VPC 的存取控制清單 (ACL) 項目數量限制,RDS 無法保證超過五個跨區域僅供讀取複本資料庫執行個體。

  • 您可以在 GovCloud (US-East) 和 GovCloud (US-West) 區域之間進行複寫,但不能複寫至 GovCloud (US) 中或在其之外進行複寫。

  • 對於下列 RDS 引擎,您只能在非另一個 Amazon RDS 資料庫執行個體的僅供讀取複本時,從來源 Amazon RDS 資料庫執行個體建立跨區域 Amazon RDS 僅供讀取複本:

    • RDS for SQL Server

    • RDS for Oracle

    • 低於 14.1 的 RDS for PostgreSQL 版本

    此限制不適用於執行 RDS for PostgreSQL 14.1 版及更新版本、RDS for MariaDB 和 RDS for MySQL 的資料庫執行個體。

  • 對於與來源執行個體 AWS 區域 不同的任何僅供讀取複本,您可以預期看到較高的延遲時間層級。此延遲時間是由於區域資料中心之間有較長的網路通道。

  • 如為跨區域僅供讀取複本,任何指定 --db-subnet-group-name 參數的建立僅供讀取複本命令皆必須指定同一 VPC 的資料庫子網路群組。

  • 在大多數情況下,僅供讀取複本使用指定資料庫引擎的預設資料庫參數群組和資料庫選項群組。

    對於 Db2 資料庫引擎,您必須指定複本的自訂參數群組。對於使用 BYOL 模型的複本,此自訂參數群組必須包含您的 IBM Site ID和 IBM Customer ID。您可以使用 AWS Management Console AWS CLI、 或 RDS API,為複本指定此自訂參數群組。如需詳細資訊,請參閱IBM IDs for Bring Your Own License for Db2

    對於 MySQL 和 Oracle 資料庫引擎,您可以在 AWS CLI 命令 create-db-instance-read-replica --db-parameter-group-name的選項中為僅供讀取複本指定自訂參數群組。使用 AWS Management Console時,您無法指定自訂參數群組。

  • 僅供讀取複本使用預設安全群組。

  • 若為 MariaDB、Microsoft SQL Server、MySQL 及 Oracle DB 資料庫執行個體,刪除跨區域僅供讀取複本的來源資料庫執行個體時,僅供讀取複本會提升。

  • 若為 MariaDB、MySQL 和 PostgreSQL 資料庫執行個體,刪除跨區域僅供讀取複本的來源資料庫執行個體時,僅供讀取複本的複寫狀態會設為 terminated。不會提升僅供讀取複本。

    您必須手動提升僅供讀取複本,或將其刪除。

請求跨區域僅供讀取複本

若要與來源區域通訊,以請求建立跨區域僅供讀取複本,請求者 (IAM 角色或 IAM 使用者) 必須具有來源資料庫執行個體和來源區域的存取權。

請求者的 IAM 政策中的某些條件可能會導致請求失敗。下列範例假設來源資料庫執行個體位於 美國東部 (俄亥俄),而僅供讀取複本則會在 US East (N. Virginia) 中建立。以下範例顯示請求者 IAM 政策中導致請求失敗的條件:

  • 請求者的政策具有 aws:RequestedRegion 的條件。

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "us-east-1" } }

    由於政策不允許存取來源區域,請求失敗。若要成功請求,請同時指定來源區域和目的地區域。

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "us-east-1", "us-east-2" ] } }
  • 請求者的政策不允許存取來源資料庫執行個體。

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "arn:aws:rds:us-east-1:123456789012:db:myreadreplica" ...

    若是成功請求,請同時指定來源執行個體和複本。

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": [ "arn:aws:rds:us-east-1:123456789012:db:myreadreplica", "arn:aws:rds:us-east-2:123456789012:db:mydbinstance" ] ...
  • 請求者的政策拒絕 aws:ViaAWSService

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "Bool": {"aws:ViaAWSService": "false"} }

    與來源區域的通訊由 RDS 代表請求者進行。對於成功的請求,請勿拒絕 AWS 服務進行的呼叫。

  • 請求者的政策具有 aws:SourceVpcaws:SourceVpce 的條件。

    這些請求可能會失敗,因為當 RDS 呼叫遠端區域時,其不是來自指定的 VPC 或 VPC 端點。

如果您需要使用會導致請求失敗的先前條件之一,則可以在政策中包含 aws:CalledVia 的第二個陳述式,以使請求成功。例如,您可以如下所示使用 aws:CalledVia 搭配 aws:SourceVpce

... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "Condition" : { "ForAnyValue:StringEquals" : { "aws:SourceVpce": "vpce-1a2b3c4d" } } }, { "Effect": "Allow", "Action": [ "rds:CreateDBInstanceReadReplica" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "rds.amazonaws.com" ] } } }

如需詳細資訊,請參閱 IAM 使用者指南 中的 IAM 中的政策和許可

授權僅供讀取複本

跨區域資料庫僅供讀取複本建立請求之後傳回 success,RDS 會在後台啟動複本建立。系統會建立 RDS 存取來源資料庫執行個體的授權。此授權會將來源資料庫執行個體連結至僅供讀取複本,並允許 RDS 僅複製到指定的僅供讀取複本。

授權由 RDS 使用服務連結 IAM 角色中的 rds:CrossRegionCommunication 許可來驗證。如果授權複本,RDS 會與來源區域通訊並完成複本建立。

對於之前未透過 CreateDBInstanceReadReplica 請求授權的資料庫執行個體,RDS 將無法存取。僅供讀取複本建立完成時,會撤銷授權。

RDS 使用服務連結的角色來驗證來源區域中的授權。如果您在複製建立程序期間刪除服務連結的角色,則複本則會失敗。

如需詳細資訊,請參閱 IAM 使用者指南中的使用服務連結角色

使用 AWS Security Token Service 登入資料

來自 global AWS Security Token Service (AWS STS) 端點的工作階段權杖僅在預設啟用 AWS 區域 的 中有效 (商業區域)。如果您在 中使用來自 assumeRole API 操作的登入資料 AWS STS,如果來源區域是選擇加入區域,請使用區域端點。否則,請求將失敗。這是因為您的登入資料在兩個區域中都必須有效,只有在使用區域 AWS STS 端點時,才適用於選擇加入區域。

若要使用全域端點,請確保操作時在這兩個區域均已將其啟用。在 AWS STS 帳戶設定Valid in all AWS 區域中將全域端點設定為 。

相同的規則適用於預先簽章 URL 參數中的登入資料。

如需詳細資訊,請參閱《IAM 使用者指南AWS STS 》中的在 中管理 AWS 區域

跨區域複寫成本

跨區域複寫傳輸的資料會衍生 Amazon RDS 數據傳輸費。對於傳出來源 AWS 區域的資料,這些跨區域複寫動作會產生費用:

  • 當您建立僅供讀取複本時,Amazon RDS 會取得來源執行個體的快照,並將快照傳輸至僅供讀取複本 AWS 區域。

  • 對於在來源資料庫中進行的每個資料修改,Amazon RDS 會將資料從來源傳輸 AWS 區域 到僅供讀取複本 AWS 區域。

如需資料傳輸定價的詳細資訊,請參閱 Amazon RDS 定價

如為 MySQL 和 MariaDB 執行個體,可透過減少建立的跨區域僅供讀取複本數量來降低資料傳輸成本。例如,假設您在一個 中有來源資料庫執行個體, AWS 區域 並且想要在另一個 中有三個僅供讀取複本 AWS 區域。在此情況下,您只從來源資料庫執行個體建立一個僅供讀取複本。另兩個僅供讀取複本則從第一個僅供讀取複本建立,而非來源資料庫執行個體。

例如,如果您source-instance-1有一個 AWS 區域,您可以執行下列動作:

  • 在新的 read-replica-1中建立 AWS 區域,指定 source-instance-1做為來源。

  • read-replica-2 建立 read-replica-1

  • read-replica-3 建立 read-replica-1

在此範例中,您只需要為從 source-instance-1 傳輸到 read-replica-1 的資料付費。從 read-replica-1 傳輸至其他另兩個僅供讀取複本的資料,因為位於相同 AWS 區域中,因無需付費。如果您直接從另一個複本source-instance-1中建立所有三個複本 AWS 區域,則會向您收取資料傳輸到所有三個複本的費用。