本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Aurora 僅供讀取複本將資料從 RDS for PostgreSQL 資料庫執行個體遷移至 Aurora PostgreSQL 資料庫叢集
您可以將 Aurora 僅供讀取複本用於遷移過程,藉此使用 RDS for PostgreSQL 資料庫執行個體作為新 Aurora PostgreSQL 資料庫叢集的基礎。Aurora 僅供讀取複本選項僅適用於在相同 AWS 區域 和 帳戶中遷移,而且只有在區域為 RDS for PostgreSQL 資料庫執行個體提供相容的 Aurora PostgreSQL 版本時,才能使用。相容是指 Aurora PostgreSQL 版本與 RDS for PostgreSQL 版本相同,或為相同主要版本系列中較高的次要版本。
例如,若要使用此技術來遷移 RDS for PostgreSQL 11.14 資料庫執行個體,則該區域必須提供 PostgreSQL 第 11 版系列中,Aurora PostgreSQL 11.14 版或更高的次要版本。
使用 Aurora 僅供讀取複本遷移資料的概觀
從 RDS for PostgreSQL 資料庫執行個體遷移到 Aurora PostgreSQL 資料庫叢集是多步驟程序。首先,您要建立來源 RDS for PostgreSQL 資料庫執行個體的 Aurora 僅供讀取複本。這會啟動從 RDS for PostgreSQL 資料庫執行個體複寫至特殊目的資料庫執行個體叢集 (稱為複本叢集) 的過程。複本叢集僅由 Aurora 僅供讀取複本 (讀取器執行個體) 組成。
注意
每 TB 資料可能需要花費數小時才能完成遷移。
提升 Aurora PostgreSQL 複本
建立 Aurora PostgreSQL 資料庫叢集之後,請依照下列步驟來提升 Aurora 複本:
-
停止來源 RDS for PostgreSQL 資料庫執行個體上的所有資料庫寫入工作負載。
-
WAL LSN
從來源 RDS for PostgreSQL 資料庫執行個體取得目前的 :SELECT pg_current_wal_lsn();
pg_current_wal_lsn -------------------- 0/F0000318 (1 row)
-
在 Aurora PostgreSQL 複本叢集上,檢查重播的 LSN 是否大於步驟 2 的 LSN:
SELECT pg_last_wal_replay_lsn();
pg_last_wal_replay_lsn ------------------------ 0/F0000400 (1 row)
或者,您可以在來源 RDS for PostgreSQL 資料庫執行個體上使用下列查詢:
SELECT restart_lsn FROM pg_replication_slots;
-
提升 Aurora PostgreSQL 複本叢集。
當複寫停止時,複本叢集會提升為獨立的 Aurora PostgreSQL 資料庫叢集,而讀取器會提升為叢集的寫入器執行個體。此時,您可以將執行個體新增至 Aurora PostgreSQL 資料庫叢集,以根據您的使用案例調整大小。如果您不再需要原始 RDS for PostgreSQL 資料庫執行個體,則可以將其刪除。
如果 RDS for PostgreSQL 資料庫執行個體已具有 Aurora 僅供讀取複本,或已有跨區域僅供讀取複本,您便無法建立 Aurora 僅供讀取複本。
使用 Aurora 僅供讀取複本準備遷移資料
在使用 Aurora 僅供讀取複本的遷移期間,任何對來源 RDS for PostgreSQL 資料庫執行個體所做的更新皆會以非同步方式複寫至複本叢集的 Aurora 僅供讀取複本。該過程會使用 PostgreSQL 的原生串流複寫功能,該功能會將預寫日誌 (WAL) 區段存放在來源執行個體上。在開始遷移前,請檢查表中所列指標的值,以確認您的執行個體擁有足夠的儲存容量。
指標 | 描述 |
---|---|
|
可用的儲存空間。 單位:位元組 |
|
延遲最久複本中 WAL 資料的延遲大小。 單位:MB |
|
Aurora PostgreSQL 資料庫叢集落後來源 RDS 資料庫執行個體的時間長度 (以秒為單位)。 |
|
交易日誌使用的磁碟空間。 單位:MB |
如需監控 RDS 執行個體的詳細資訊,請參閱 Amazon RDS 使用者指南中的監控。
建立 Aurora 僅供讀取複本
您可以使用 AWS Management Console 或 為 RDS for PostgreSQL 資料庫執行個體建立 Aurora 僅供讀取複本 AWS CLI。只有在 AWS 區域 提供相容的 Aurora PostgreSQL 版本時, AWS Management Console 才能使用 建立 Aurora 僅供讀取複本的選項。也就是說,僅在 Aurora PostgreSQL 版本與 RDS for PostgreSQL 版本相同,或為相同主要版本系列中較高的次要版本時才適用。
從來源 PostgreSQL 資料庫執行個體建立 Aurora 僅供讀取複本
登入 AWS Management Console ,並在 https://console.aws.amazon.com/rds/
:// 開啟 Amazon RDS 主控台。 -
在導覽窗格中,選擇 Databases (資料庫)。
-
選擇要作為 Aurora 僅供讀取複本來源的 RDS for PostgreSQL 資料庫執行個體。在 Actions (動作) 中選擇 Create Aurora read replica (建立僅供讀取複本)。若系統未顯示此選項,則表示相容的 Aurora PostgreSQL 版本在該區域中不適用。
-
在 Create Aurora read replica settings (建立 Aurora 僅供讀取複本設定) 頁面上,您可以設定 Aurora PostgreSQL 資料庫叢集的屬性,如下表所示。複本資料庫叢集是從來源資料庫執行個體的快照所建立,使用的「主要」使用者名稱和密碼與來源相同,因此您目前無法對其進行更改。
選項 描述 DB instance class (資料庫執行個體類別)
選擇符合資料庫叢集中主要執行個體處理和記憶體要求的資料庫執行個體類別。如需詳細資訊,請參閱Amazon Aurora 資料庫執行個體類別。
Multi-AZ deployment (異地同步備份部署)
遷移期間不適用
DB instance identifier (資料庫執行個體識別符):
輸入您要指定給資料庫執行個體的名稱。此識別符用於新資料庫叢集內主要執行個體的端點位址。
該資料庫執行個體識別符有下列限制:
-
他們必須包含 1–63 個英數字元或連字號。
-
第一個字元必須是字母。
-
不能以一個連字號結尾或是連續包含兩個連字號。
-
每個 AWS 帳戶的所有資料庫執行個體都必須是唯一的 AWS 區域。
Virtual Private Cloud (VPC)
選擇託管資料庫叢集的 VPC。選擇 Create new VPC (建立新的 VPC) 來讓 Amazon RDS 為您建立 VPC。如需詳細資訊,請參閱資料庫叢集先決條件。
DB subnet group (資料庫子網路群組)
選擇要用於資料庫叢集的資料庫子網路群組。選擇 Create new DB Subnet Group (建立新的資料庫子網路群組),讓 Amazon RDS 為您建立資料庫子網路群組。如需更多詳細資訊,請參閱 資料庫叢集先決條件。
Public accessibility (公開存取性)
選擇 Yes (是) 以給予資料庫叢集一個公有 IP 地址;否則,請選擇 No (否)。資料庫叢集內的執行個體可以混合公有和私有資料庫執行個體。如需隱藏執行個體而不提供公開存取的詳細資訊,請參閱在 VPC 中的網際網路中隱藏資料庫叢集。
Availability zone (可用區域)
決定您是否要指定特定的可用區域。如需可用區域的詳細資訊,請參閱區域和可用區域。
VPC security groups (VPC 安全群組)
選擇一或多個 VPC 安全群組,保護資料庫叢集的網路存取。選擇 Create new VPC security group (建立新的 VPC 安全群組),讓 Amazon RDS 為您建立 VPC 安全群組。如需更多詳細資訊,請參閱 資料庫叢集先決條件。
Database port (資料庫連接埠)
指定應用程式和公用程式將用於存取資料庫的連接埠。Aurora PostgreSQL 資料庫叢集預設會使用 PostgreSQL 預設連接埠 5432。某些公司的防火牆會封鎖與此預設連接埠的連線。如果您的公司防火牆會封鎖預設連接埠,請為新的資料庫叢集選擇另一個連接埠。
DB parameter group (資料庫參數群組)
針對 Aurora PostgreSQL 資料庫叢集選擇資料庫參數群組。Aurora 有一個預設資料庫參數群組供您使用,您也可以建立自己的參數群組。如需資料庫參數群組的詳細資訊,請參閱Amazon Aurora 的參數群組。
DB cluster parameter group (資料庫叢集參數群組)
針對 Aurora PostgreSQL 資料庫叢集選擇資料庫叢集參數群組。Aurora 有一個預設資料庫叢集參數群組供您使用,您也可以建立自己的資料庫叢集參數群組。如需資料庫叢集參數群組的詳細資訊,請參閱Amazon Aurora 的參數群組。
加密
選擇 Enable encryption (啟用加密),以便對新的 Aurora 資料庫叢集進行靜態加密。如果您選擇 Enable encryption (啟用加密),則也必須選擇 KMS 加密金鑰作為 AWS KMS key值。
優先順序
選擇資料庫執行個體的容錯移轉優先順序。如果您未選擇值,則預設值為 tier-1 (第一層)。此優先順序決定從主要執行個體失敗中復原時提升 Aurora 複本的順序。如需更多詳細資訊,請參閱 Aurora 資料庫叢集的容錯能力。
Backup retention period (備份保留期間)
選擇從 1–35 天的時間長度,Aurora 會在此時間內保留資料庫備份複本。備份副本可用來進行資料庫的 point-in-time 還原 (PITR) 作業,單位可計算至秒。
Enhanced monitoring (增強型監控)
選擇 Enable enhanced monitoring (啟用增強型監控),以針對資料庫叢集執行所在的作業系統即時收集指標。如需更多詳細資訊,請參閱 使用增強型監控來監控作業系統指標。
監控角色
只有在選擇 Enable enhanced monitoring (啟用增強型監控) 時才能使用。要用於增強型監控的 AWS Identity and Access Management (IAM) 角色。如需更多詳細資訊,請參閱 設定並啟用增強型監控。
精細程度
只有在選擇 Enable enhanced monitoring (啟用增強型監控) 時才能使用。針對資料庫叢集,設定收集指標之間的間隔 (以秒為單位)。
Auto minor version upgrade (自動次要版本升級)
選擇 Yes (是) 可讓 Aurora PostgreSQL 資料庫叢集自動接收可用的小型 PostgreSQL 資料庫引擎版本升級。
Auto minor version upgrade (自動小型版本升級) 選項僅適用於 Aurora PostgreSQL 資料庫叢集的 PostgreSQL 小型引擎版本升級。不適用於為維護系統穩定性而套用的一般修補程式。
Maintenance window (維護時段)
選擇每週時間範圍,系統維護可在此期間進行。
-
-
選擇 Create read replica (建立僅供讀取複本)。
若要使用 從來源 RDS for PostgreSQL 資料庫執行個體建立 Aurora 僅供讀取複本 AWS CLI,您必須先使用 create-db-cluster CLI 命令來建立空的 Aurora 資料庫叢集。一旦資料庫叢集存在後,您可使用create-db-instance 命令來建立資料庫叢集的主要執行個體。主要執行個體是 Aurora 資料庫叢集中第一個建立的執行個體。於此狀況下,其最初建立為 RDS for PostgreSQL 資料庫執行個體的 Aurora 僅供讀取複本。當此程序結束時,您的 RDS for PostgreSQL 資料庫執行個體已有效遷移至 Aurora PostgreSQL 資料庫叢集。
您無須指定主要使用者帳戶 (通常為 postgres
)、其密碼或資料庫名稱。Aurora 僅供讀取複本會自動從您叫用 AWS CLI 命令時識別的來源 RDS for PostgreSQL 資料庫執行個體取得這些複本。
您確實需要指定用於 Aurora PostgreSQL 資料庫叢集和資料庫執行個體的引擎版本。您指定的版本應與來源 RDS for PostgreSQL 資料庫執行個體相符。若來源 RDS for PostgreSQL 資料庫執行個體已加密,您還需要指定 Aurora PostgreSQL 資料庫叢集主要執行個體的加密。不支援將加密的執行個體遷移至未加密的 Aurora 資料庫叢集。
下列範例建立名為 my-new-aurora-cluster
的 Aurora PostgreSQL 資料庫叢集,此將使用未加密的 RDS 資料庫來源執行個體。您要先呼叫 create-db-cluster
CLI 命令來建立 Aurora PostgreSQL 資料庫叢集。範例顯示如何使用選用 --storage-encrypted
參數來指定應加密的資料庫叢集。由於來源資料庫並未加密,因此 --kms-key-id
用來指定要使用的金鑰。如需有關必要參數和選用參數的詳細資訊,請參閱範例後面的清單。
對於 Linux、 macOS或 Unix:
aws rds create-db-cluster \ --db-cluster-identifier
my-new-aurora-cluster
\ --db-subnet-group-namemy-db-subnet
--vpc-security-group-idssg-11111111
--engine aurora-postgresql \ --engine-versionsame-as-your-rds-instance-version
\ --replication-source-identifier arn:aws:rds:aws-region
:111122223333
:db/rpg-source-db
\ --storage-encrypted \ --kms-key-id arn:aws:kms:aws-region
:111122223333
:key/11111111-2222-3333-444444444444
在 Windows 中:
aws rds create-db-cluster ^ --db-cluster-identifier
my-new-aurora-cluster
^ --db-subnet-group-namemy-db-subnet
^ --vpc-security-group-idssg-11111111
^ --engine aurora-postgresql ^ --engine-versionsame-as-your-rds-instance-version
^ --replication-source-identifier arn:aws:rds:aws-region
:111122223333
:db/rpg-source-db
^ --storage-encrypted ^ --kms-key-id arn:aws:kms:aws-region
:111122223333
:key/11111111-2222-3333-444444444444
於下列清單中,您可找到顯示於範例中某些選項的詳細資訊。除非另有說明,否則這些參數是必需的。
-
--db-cluster-identifier
– 您需要為新的 Aurora PostgreSQL 資料庫叢集指定一個名稱。 -
--db-subnet-group-name
– 在與來源資料庫執行個體相同的資料庫子網路中建立您的 Aurora PostgreSQL 資料庫叢集。 -
--vpc-security-group-ids
– 指定 Aurora PostgreSQL 資料庫叢集的安全群組。 -
--engine-version
– 指定要用於 Aurora PostgreSQL 資料庫叢集的版本。這應該與來源 RDS for PostgreSQL 資料庫執行個體所使用的版本相同或更高次要版本。 -
--replication-source-identifier
- 使用其 Amazon 資源名稱 (ARN) 識別 RDS for PostgreSQL 資料庫執行個體。如需 Amazon RDS ARN 的詳細資訊,請參閱您資料庫叢集之 AWS 一般參考 中的 Amazon Relational Database Service (Amazon RDS)。 -
--storage-encrypted
- 選用。僅在需要時使用,依如下方式指定加密:當來源資料庫執行個體具有加密儲存體時,請使用此參數。若您未將此參數用於具加密儲存體的來源資料庫執行個體,則對
create-db-cluster
的呼叫將會失敗。若要對 Aurora PostgreSQL 資料庫叢集使用與來源資料庫執行個體不同的金鑰,則還需指定--kms-key-id
。若來源資料庫執行個體的儲存體未加密,但您希望 Aurora PostgreSQL 資料庫叢集使用加密,則使用此選項。若是如此,您還需要標識要與
--kms-key-id
參數一起使用的加密金鑰。
-
--kms-key-id
- 選用。使用時,您可使用金鑰的 ARN、ID、別名 ARN 或其別名來指定用於儲存加密的金鑰 (--storage-encrypted
)。僅於下列狀況時需要此參數:-
為 Aurora PostgreSQL 資料庫叢集選擇與來源資料庫執行個體使用之金鑰不同的金鑰。
如要從未加密的來源建立加密叢集。於此情況下,您需要指定 Aurora PostgreSQL 應該用於加密的金鑰。
-
建立 Aurora PostgreSQL 資料庫叢集後,您可使用 create-db-instance
CLI 命令來建立主執行個體,如下列所示:
對於 Linux、 macOS或 Unix:
aws rds create-db-instance \ --db-cluster-identifier
my-new-aurora-cluster
\ --db-instance-classdb.x2g.16xlarge
\ --db-instance-identifierrpg-for-migration
\ --engine aurora-postgresql
在 Windows 中:
aws rds create-db-instance ^ --db-cluster-identifier
my-new-aurora-cluster
^ --db-instance-classdb.x2g.16xlarge
^ --db-instance-identifierrpg-for-migration
^ --engine aurora-postgresql
於下列清單中,您可找到顯示於範例中某些選項的詳細資訊。
-
--db-cluster-identifier
– 指定您在先前步驟中使用create-db-instance
命令建立的 Aurora PostgreSQL 資料庫叢集名稱。 -
--db-instance-class
– 用於主執行個體的資料庫執行個體類別名稱,例如db.r4.xlarge
、db.t4g.medium
、db.x2g.16xlarge
等。如需可用的資料庫執行個體類別清單,請參閱 資料庫執行個體類別的類型。 -
--db-instance-identifier
– 指定主要執行個體的名稱。 -
--engine aurora-postgresql
– 指定引擎的aurora-postgresql
。
要從來源 RDS for PostgreSQL 資料庫執行個體建立 Aurora 僅供讀取複本,請先使用 RDS API 作業 CreateDBCluster
來建立從來源 RDS for PostgreSQL 資料庫執行個體所建立 Aurora 僅供讀取複本的新 Aurora 資料庫叢集。當 Aurora PostgreSQL 資料庫叢集可用時,您可以使用 CreateDBInstance
來建立 Aurora 資料庫叢集的主執行個體。
您無須指定主要使用者帳戶 (通常為 postgres
)、其密碼或資料庫名稱。Aurora 僅供讀取複本會自動從使用 ReplicationSourceIdentifier
指定的來源 RDS for PostgreSQL 資料庫執行個體取得這些資料。
您確實需要指定用於 Aurora PostgreSQL 資料庫叢集和資料庫執行個體的引擎版本。您指定的版本應與來源 RDS for PostgreSQL 資料庫執行個體相符。若來源 RDS for PostgreSQL 資料庫執行個體已加密,您還需要指定 Aurora PostgreSQL 資料庫叢集主要執行個體的加密。不支援將加密的執行個體遷移至未加密的 Aurora 資料庫叢集。
如要建立 Aurora 僅供讀取複本的 Aurora 資料庫叢集,請使用具有下列參數的 RDS API 作業 CreateDBCluster
:
-
DBClusterIdentifier
– 要建立的資料庫叢集名稱。 -
DBSubnetGroupName
– 要與此資料庫叢集關聯之資料庫子網路群組的名稱。 -
Engine=aurora-postgresql
– 要使用的引擎名稱。 -
ReplicationSourceIdentifier
– 來源 PostgreSQL 資料庫執行個體的 Amazon 資源名稱 (ARN)。如需 Amazon RDS ARN 的詳細資訊,請參閱 Amazon Web Services 一般參考 中的 Amazon Relational Database Service (Amazon RDS)。若ReplicationSourceIdentifier
標示加密來源,Amazon RDS 將使用您的預設 KMS 金鑰,除非您使用KmsKeyId
選項指定不同的金鑰。 -
VpcSecurityGroupIds
– 與此資料庫叢集關聯的 Amazon EC2 VPC 安全群組清單。 -
StorageEncrypted
– 指出加密的資料庫叢集。當您使用此參數而不指定ReplicationSourceIdentifier
時,Amazon RDS 會使用您的預設 KMS 金鑰。 -
KmsKeyId
– 加密叢集的金鑰。使用時,您可使用金鑰的 ARN、ID、別名 ARN 或其別名來指定用於儲存加密的金鑰。
如需更多資訊,請參閱 Amazon RDS API 參考中的 CreateDBCluster
。
當 Aurora 資料庫叢集可用後,您可使用 CreateDBInstance
RDS API 作業,搭配下列參數來建立資料庫叢集的主要執行個體:
-
DBClusterIdentifier
– 資料庫叢集的名稱。 -
DBInstanceClass
– 要用於主要執行個體的執行個體類別名稱。 -
DBInstanceIdentifier
– 主要執行個體的名稱。 -
Engine=aurora-postgresql
– 要使用的引擎名稱。
如需更多資訊,請參閱 Amazon RDS API 參考中的 CreateDBInstance
。
提升 Aurora 僅供讀取複本
在完整遷移至 Aurora PostgreSQL 之前必須先提升複本叢集,因此目前請勿刪除 RDS for PostgreSQL 來源資料庫執行個體。
在提升複本叢集之前,請確認 RDS for PostgreSQL 資料庫執行個體沒有任何進行中的交易或其他寫入資料庫的活動。在 Aurora 僅供讀取複本上的複本延遲為零 (0) 時,您便可以提升複本叢集。如需有關監控複本延遲的詳細資訊,請參閱 監控 Aurora PostgreSQL 複寫 和 Amazon Aurora 的執行個體層級指標。
將 Aurora 僅供讀取複本提升為 Aurora 資料庫叢集
-
登入 AWS Management Console ,並在 https://console.aws.amazon.com/rds/
:// 開啟 Amazon RDS 主控台。 -
在導覽窗格中,選擇 Databases (資料庫)。
-
選擇複本叢集。
-
針對 Actions (動作),選擇 Promote (提升)。這可能需要幾分鐘的時間,並可能導致停機。
該過程完成時,Aurora 複本叢集會成為區域 Aurora PostgreSQL 資料庫叢集,具有包含來自 RDS for PostgreSQL 資料庫執行個體資料的寫入器執行個體。
若要將 Aurora 僅供讀取複本提升為獨立的資料庫叢集,請使用 promote-read-replica-db-cluster AWS CLI 命令。
範例
對於 Linux、 macOS或 Unix:
aws rds promote-read-replica-db-cluster \ --db-cluster-identifier
myreadreplicacluster
在 Windows 中:
aws rds promote-read-replica-db-cluster ^ --db-cluster-identifier
myreadreplicacluster
若要將 Aurora 僅供讀取複本提升為獨立資料庫叢集,請使用 RDS API 操作 PromoteReadReplicaDBCluster。
在您提升複本叢集後,便可以透過檢查事件日誌來確認已完成提升,如下所示。
確認 Aurora 複本叢集已提升
登入 AWS Management Console ,並在 https://console.aws.amazon.com/rds/
:// 開啟 Amazon RDS 主控台。 -
在導覽窗格中,選擇 Events (事件)。
-
請在 Events (事件) 頁面上,找到 Source (來源) 清單中的叢集名稱。每個事件都有來源、類型、時間和訊息。您可以看到在 AWS 區域 中您的帳戶已發生的所有事件。成功提升會產生以下訊息。
Promoted Read Replica cluster to a stand-alone database cluster.
提升完成後,來源 RDS for PostgreSQL 資料庫執行個體與 Aurora PostgreSQL 資料庫叢集之間的連結便會取消。您可以將用戶端應用程式導向 Aurora 僅供讀取複本的端點。如需 Aurora 端點的詳細資訊,請參閱 Amazon Aurora 端點連線。此時,如果您便可安全地刪除資料庫執行個體。