複製 Amazon Aurora 資料庫叢集的一個磁碟區 - Amazon Aurora

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

複製 Amazon Aurora 資料庫叢集的一個磁碟區

透過使用 Aurora 複製,您可以建立最初與原始叢集共用相同資料頁面,但為個別且獨立磁碟區的新叢集。該程序旨在快速且具有成本效益。與其相關聯的資料磁碟區新叢集稱為複製。與使用不同的技術 (如還原快照) 以物理方式複製資料相比,建立複製更快也更節省空間。

Aurora 複製的概觀

Aurora 使用copy-on-write 通訊協定來建立翻製。此機制會使用最少的其他空間來建立初始複製。首次建立複製時,Aurora 會保留來源 Aurora 資料庫叢集和新 (複製) Aurora 資料庫叢集所使用的資料單一副本。只有在來源 Aurora 資料庫叢集或 Aurora 資料庫叢集複製 (在 Aurora 儲存磁碟區上) 變更資料時,才會配置其他的儲存體。若要進一步瞭解 copy-on-write 通訊協定,請參閱Aurora 複製的運作方法

Aurora 複製對於使用您的生產資料快速設定測試環境特別有用,且不會造成資料損毀風險。您可以為許多類型的應用程式使用複製,例如以下類型:

  • 潛在變更實驗 (例如結構描述變更和參數群組變更),以評估所有影響。

  • 執行工作負載密集的操作,例如在複製上匯出資料或執行分析查詢。

  • 為了開發、測試或其他用途建立生產資料庫叢集的副本。

您可以從同一個 Aurora 資料庫叢集建立多個複製。您也可以從另一個複製建立多個複製。

在建立 Aurora 複製之後,您可以將 Aurora 資料庫執行個體設定為與來源 Aurora 資料庫叢集不同。例如,您可能不需要出於開發目的的複製,來滿足與來源生產 Aurora資料庫叢集相同的高可用性需求。在此情況下,您可以使用單一 Aurora 資料庫執行個體來設定複製,而不是利用 Aurora 資料庫叢集所用的多個資料庫執行個體來設定。

當您使用來源的不同部署組態建立複製時,會使用來源 Aurora DB 引擎的最新次要版本建立複製。

當您從 Aurora 資料庫叢集建立翻製時,複製 AWS 會在您的帳戶中建立,也就是擁有來源 Aurora 資料庫叢集的帳戶相同。不過,您也可以與其他 AWS 帳戶共用Aurora Serverless v2和佈建 Aurora 資料庫叢集和複製。如需詳細資訊,請參閱跨帳戶複製 AWS RAM 與 Amazon Aurora

在您完成使用複製來進行測試、開發或其他用途時,便可將其刪除。

Aurora 複製的限制

Aurora 複製限制如下:

  • 您可以根據需要建立數量不拘的複製項,最多可達到 AWS 區域中允許的資料庫叢集數量上限。

    您可以使用 copy-on-write 通訊協定或完整複製通訊協定建立翻製。完整複製通訊協定的作用類似於 point-in-time 復原。

  • 您無法在來源 Aurora 資料庫叢集的不同 AWS 區域中建立複製。

  • 您無法從沒有平行查詢功能的 Aurora 資料庫叢集建立一個複製到使用平行查詢的叢集中。若要將資料引入使用平行查詢的叢集,請建立原始叢集的快照,然後將其還原到使用平行查詢功能的叢集。

  • 您無法從沒有資料庫執行個體的 Aurora 資料庫叢集中建立複製。您僅能複製至少具有一個資料庫執行個體的 Aurora 資料庫叢集。

  • 您可以在與 Aurora DB 叢集不同的虛擬私有雲端 (VPC) 中建立複製。如果這樣做,的子網路VPCs必須對應至相同的可用區域。

  • 您可以從已佈建的 Aurora 資料庫叢集中建立 Aurora 已佈建複製。

  • 具有 Aurora Serverless v2 執行個體的叢集遵循與佈建叢集相同的規則。

  • 在 Aurora Serverless v1 中:

    • 您可以從Aurora Serverless v1資料庫叢集建立佈建的複製。

    • 您可以從Aurora Serverless v1或佈建的資料庫叢集建立Aurora Serverless v1複製。

    • 您無法從未加密的佈建 Aurora 資料庫叢集建立Aurora Serverless v1複製。

    • 跨帳戶複製目前佈支援複製 Aurora Serverless v1 資料庫叢集。如需詳細資訊,請參閱跨帳戶複製的限制

    • 複製的 Aurora Serverless v1 資料庫叢集具有與任何 Aurora Serverless v1 資料庫叢集相同的行為和限制。如需詳細資訊,請參閱使用 Amazon Aurora Serverless v1

    • Aurora Serverless v1 資料庫叢集一律會加密。在您複製 Aurora Serverless v1 資料庫叢集至已佈建的 Aurora 資料庫叢集中時,已佈建的 Aurora 資料庫叢集會加密。您可以選擇加密金鑰,但無法停用加密。若要從佈建的 Aurora 資料庫叢集複製到Aurora Serverless v1,您必須從已加密的佈建 Aurora 資料庫叢集開始。

Aurora 複製的運作方法

Aurora 複製會在 Aurora 資料庫叢集的儲存層運作。就支援 Aurora 儲存磁碟區的基礎耐久性媒體而言,它使用既快速又節省空間的copy-on-write通訊協定。您可以在 Amazon Aurora 儲存體的概觀 中進一步了解 Aurora 叢集磁碟區。

了解 copy-on-write 協議

Aurora 資料庫叢集會將資料儲存在基礎 Aurora 儲存磁碟區的頁面中。

例如,在以下圖表中,您可以找到具有 4 個資料頁面 (1、2、3 和 4) 的 Aurora資料庫叢集 (A)。想像一下,複製 B 是從 Aurora資料庫叢集建立。建立複製時,不會複製任何資料。相反地,複製會指向與來源 Aurora 資料庫叢集相同的一組頁面。

Amazon Aurora 叢集磁碟區具有 4 個頁面的來源叢集 (A) 和複製 (B)

在建立複製時,通常不需要其他的儲存空間。 copy-on-write 通訊協定在實體儲存媒體上使用與來源區段相同的區段。只有在來源區段的容量不足以容納整個複製區段時,才需要其他的儲存空間。如果是這種情況,來源區段會複製到另一個實體裝置上。

在下面的圖表中,你可以找到使用相同的集群 A 和它的克隆,B,如前所示的行動 copy-on-write 協議的一個例子。假設您變更 Aurora 資料庫叢集 (A),導致第 1 頁保留的資料變更。Aurora 不會寫入至原始第 1 頁,而是建立新的第 1 頁 [A]。叢集 (A) 的 Aurora 資料庫叢集磁碟區現在會指向第 1 頁 [A]、2、3 和 4 頁,而複製 (B) 仍會參考原始頁面。

Amazon Aurora 來源資料庫叢集磁碟區及其複製,皆有變更。

至於複製上,已對儲存磁碟區上的第 4 頁進行變更。Aurora 不會寫入至原始第 4 頁,而是建立新的第 4 頁 [B]。複製現在會指向第 1、2、3 和 4 頁 [B],而叢集 (A) 會繼續指向 1 [A]、2、3 和 4。

Amazon Aurora 來源資料庫叢集磁碟區及其複製,皆有變更。

隨著來源 Aurora 資料庫叢集磁碟區和複製在一段時間後發生更多變更,您需要不斷增加更多的儲存空間來擷取並存放變更。

刪除來源叢集磁碟區

一開始,複製磁碟區與從中建立複製的原始磁碟區共用相同的資料頁面。只要原始磁碟區存在,複製磁碟區就只會被視為翻製所建立或修改之頁面的擁有者。因此,複製磁碟區的VolumeBytesUsed指標一開始很小,而且只會隨著資料在原始叢集和複製之間的差異而增長。對於來源磁碟區和複製之間相同的分頁,儲存區費用僅適用於原始叢集。如需關於 VolumeBytesUsed 指標的詳細資訊,請參閱Amazon Aurora 的叢集層級指標

當您刪除具有一或多個相關聯複製的來源叢集磁碟區時,複製的叢集磁碟區中的資料不會變更。Aurora 會保留先前由來源叢集磁碟區擁有的頁面。Aurora 會針對已刪除叢集擁有的頁面重新分配儲存體計費。例如,假設原始叢集有兩個複製,然後刪除原始叢集。原始叢集擁有的一半資料頁現在將由一個複製擁有。另一半頁面將由另一個翻製所擁有。

如果您刪除原始叢集,然後在建立或刪除更多複製時,Aurora 會繼續在共用相同頁面的所有翻製之間重新分配資料頁的擁有權。因此,您可能會發現複製的叢集磁碟區的VolumeBytesUsed指標值會變更。隨著建立更多複製,且頁面擁有權分散到更多叢集,量度值可能會減少。刪除複製並將頁面擁有權指派給較少數量的叢集時,量度值也會增加。如需寫入作業如何影響複製磁碟區上的資料頁面的資訊,請參閱了解 copy-on-write 協議

當原始叢集和複製由相同 AWS 帳戶擁有時,這些叢集的所有儲存體費用都會套用至該相同的 AWS 帳戶。如果某些叢集是跨帳戶複製,則刪除原始叢集可能會對擁有跨帳戶複製的 AWS 帳戶產生額外的儲存費用。

例如,假設叢集磁碟區在您建立任何複製之前已使用 1000 個資料頁。當您複製該叢集時,複製磁碟區一開始有零使用過的頁面。如果翻製對 100 個資料頁進行修改,則只有這 100 個頁面會儲存在複製磁碟區上並標示為已使用。父磁碟區中其他 900 個未變更的頁面會由兩個叢集共用。在此情況下,父叢集會收取 1000 個分頁的儲存體費用,複製磁碟區為 100 頁。

如果您刪除來源磁碟區,複製的儲存體費用包括變更的 100 個頁面,加上原始磁碟區的 900 個共用分頁,總共 1000 頁。

建立 Amazon Aurora 複製

您可以在與來源 Aurora 資料庫叢集相同的 AWS 帳戶中建立複製。若要這麼做,您可以使用 AWS Management Console 或 AWS CLI 和下列程序。

若要允許其他 AWS 帳號建立翻製或與其他 AWS 帳號共用翻製,請使用中的程序跨帳戶複製 AWS RAM 與 Amazon Aurora

以下程序說明如何使用 複製 AWS Management Console來複製 Aurora 資料庫叢集。

使用 Aurora 資料庫叢集中的 AWS Management Console 結果與一個 Aurora 資料庫執行個體建立複製。

這些指示適用於建立複製的相同 AWS 帳戶所擁有的資料庫叢集。如果資料庫叢集是由不同 AWS 帳戶所擁有,跨帳戶複製 AWS RAM 與 Amazon Aurora請參閱。

若要建立您 AWS 帳戶所擁有之資料庫叢集的複製,請使用 AWS Management Console
  1. 登錄 AWS Management Console 並在打開 Amazon RDS 控制台https://console.aws.amazon.com/rds/

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

  3. 從清單中選擇您的 Aurora 資料庫叢集,並為 Actions (動作),選擇 Create clone (建立複製)。

    建立複製會先從選取您的 Aurora 資料庫叢集開始。

    「建立複製」頁面即會開啟,您可以在其中設定 Aurora 資料庫叢集複製的設定連線能力和其他選項。

  4. 對於資料庫執行個體識別符,請輸入您要給予所複製 Aurora 資料庫叢集的名稱。

  5. 對於Aurora Serverless v1資料庫叢集,請針對容量類型選擇已佈建無伺服器

    僅在來源 Aurora 資料庫叢集為 Aurora Serverless v1 資料庫叢集,或為已加密之已佈建 Aurora 資料庫叢集時,才可選擇 Serverless (無伺服器)。

  6. 對於Aurora Serverless v2或佈建的資料庫叢集,請針Aurora Standard叢集儲存體組態選擇Aurora I/O-Optimized或。

    如需詳細資訊,請參閱Amazon Aurora 資料庫叢集的儲存組態

  7. 選擇資料庫執行個體大小或資料庫叢集容量:

    • 對於佈建複製,請選擇資料庫執行個體類別

      若要建立佈建複製,請指定資料庫執行個體大小。

      您可以接受提供的設定,也可以為您的複製使用不同的資料庫執行個體類別。

    • 對於Aurora Serverless v1或Aurora Serverless v2複製,請選擇容量設定

      若要從 Aurora 資料庫叢集建立 Serverless 複製,請指定容量。

      您可以接受提供的設定,也可以變更翻製的設定。

  8. 視需要選擇翻製的其他設定。若要進一步了解 Aurora 資料庫叢集和執行個體設定,請參閱 建立 Amazon Aurora 資料庫叢集

  9. 選擇 [建立翻製]。

在建立複製時,其會與您其他的 Aurora 資料庫叢集一起列於主控台的 Databases (資料庫) 區段中,並顯示其目前狀態。在您複製的狀態為 Available (可用) 時,表示已可使用。

使 AWS CLI 用複製 Aurora 資料庫叢集涉及建立複製叢集並向其新增一或多個資料庫執行個體的獨立步驟。

您使用的restore-db-cluster-to-point-in-time AWS CLI 命令會導致 Aurora 資料庫叢集具有與原始叢集相同的儲存資料,但沒有 Aurora 資料庫執行個體。複製可用之後,您可以分別建立資料庫執行個體。您可以選擇資料庫執行個體的數量及其執行個體類別,讓複製的運算容量高於或少於原始叢集。該過程中的步驟如下:

  1. 使用 restore-db-cluster-to-point-in-time CLI 指令建立翻製。

  2. 使用create-db-instanceCLI命令為複製建立寫入器資料庫執行個體。

  3. (選擇性) 執行其他create-db-instanceCLI命令,將一或多個讀取器執行個體新增至複製叢集。使用讀取器執行個體有助於改善複製的高可用性和讀取延展性層面。如果您只打算使用翻製進行開發和測試,則可以跳過此步驟。

建立複製

使用指restore-db-cluster-to-point-in-timeCLI令建立初始複製叢集。

若要從來源 Aurora 資料庫叢集建立複製
  • 使用指restore-db-cluster-to-point-in-timeCLI令。指定下列參數的值。在此一般情況下,複製會使用與原始叢集相同的引擎模式 (已佈建或) Aurora Serverless v1。

    • --db-cluster-identifier – 為您的複製選擇一個有意義的名稱。您可以在使用 restore-db-cluster-to-point-in-time CLI 指令時命名翻製。然後,您可以在create-db-instanceCLI命令中傳遞翻製的名稱。

    • --restore-type – 使用 copy-on-write 來建立來源資料庫叢集的複製。如果沒有這個參數,restore-db-cluster-to-point-in-time 會還原 Aurora 資料庫叢集,而非建立複製。

    • --source-db-cluster-identifier – 使用您要複製之來源 Aurora 資料庫叢集的名稱。

    • --use-latest-restorable-time— 此值指向來源資料庫叢集的最新可還原磁碟區資料。使用它來建立翻製。

下列範例會從名為 my-source-cluster 的叢集建立名為 my-clone 的複製。

對於LinuxmacOS、或Unix:

aws rds restore-db-cluster-to-point-in-time \ --source-db-cluster-identifier my-source-cluster \ --db-cluster-identifier my-clone \ --restore-type copy-on-write \ --use-latest-restorable-time

在 Windows 中:

aws rds restore-db-cluster-to-point-in-time ^ --source-db-cluster-identifier my-source-cluster ^ --db-cluster-identifier my-clone ^ --restore-type copy-on-write ^ --use-latest-restorable-time

該命令返回包含克隆詳細信息的JSON對象。在嘗試為複製建立資料庫執行個體之前,請檢查以確定您複製的資料庫叢集是否可用。如需詳細資訊,請參閱檢查狀態並取得複製詳細資訊

例如,假設您有一個想要複製的叢集名為 tpch100g。下列 Linux 範例會建立名tpch100g-clone-instance-2為的複製叢集tpch100g-clone、名為的Aurora Serverless v2寫入器執行個體tpch100g-clone-instance,以及為新叢集命名的佈建讀取器執行個體。

您不需要提供部分參數,例如 --master-username--master-user-password。Aurora 會自動從原始叢集中判斷這些參數。您確實需要指定要使用的資料庫引擎。因此,此範例會測試新叢集,以判斷 --engine 參數所要使用的正確值。

此範例也包含建立複製叢集時的--serverless-v2-scaling-configuration選項。如此一來,即使原始叢集未使用,您也可以將Aurora Serverless v2執行個體新增至複製Aurora Serverless v2。

$ aws rds restore-db-cluster-to-point-in-time \ --source-db-cluster-identifier tpch100g \ --db-cluster-identifier tpch100g-clone \ --serverless-v2-scaling-configuration MinCapacity=0.5,MaxCapacity=16 \ --restore-type copy-on-write \ --use-latest-restorable-time $ aws rds describe-db-clusters \ --db-cluster-identifier tpch100g-clone \ --query '*[].[Engine]' \ --output text aurora-mysql $ aws rds create-db-instance \ --db-instance-identifier tpch100g-clone-instance \ --db-cluster-identifier tpch100g-clone \ --db-instance-class db.serverless \ --engine aurora-mysql $ aws rds create-db-instance \ --db-instance-identifier tpch100g-clone-instance-2 \ --db-cluster-identifier tpch100g-clone \ --db-instance-class db.r6g.2xlarge \ --engine aurora-mysql
使用與來源 Aurora 資料庫叢集不同的引擎模式建立複製
  • 此程序僅適用於支援的舊版引擎Aurora Serverless v1。假設您有Aurora Serverless v1叢集,而且想要建立一個已佈建叢集的複製。在這種情況下,請使用指restore-db-cluster-to-point-in-timeCLI令並指定與前面範例中類似的參數值,再加上下列其他參數:

    • --engine-mode— 使用此參數僅可建立與來源 Aurora DB 叢集不同引擎模式的複製。此參數僅適用於支援的舊版引擎Aurora Serverless v1。選擇要與以下 --engine-mode 一起傳遞的值:

      • 使用 --engine-mode provisioned 從 Aurora Serverless 資料庫叢集建立已佈建的 Aurora 資料庫叢集複製。

        注意

        如果您打算Aurora Serverless v2與複製來源的叢集搭配使用Aurora Serverless v1,您仍然可以將複製的引擎模式指定為provisioned。然後,您可以在之後執行其他升級和移轉步驟。

      • --engine-mode serverless於從佈建的 Aurora 資料庫叢集建立Aurora Serverless v1複製。當您指定serverless引擎模式時,您也可以選擇--scaling-configuration

    • --scaling-configuration— (選擇性) 搭配--engine-mode serverless使用可設定Aurora Serverless v1複製的最小和最大容量。如果您不使用此參數,Aurora 會使用資料庫引擎的預設Aurora Serverless v1容量值建立Aurora Serverless v1複製。

下列範例會從名為的Aurora Serverless v1資料庫叢集建立名為my-clone的已佈建複製my-source-cluster

對於LinuxmacOS、或Unix:

aws rds restore-db-cluster-to-point-in-time \ --source-db-cluster-identifier my-source-cluster \ --db-cluster-identifier my-clone \ --engine-mode provisioned \ --restore-type copy-on-write \ --use-latest-restorable-time

在 Windows 中:

aws rds restore-db-cluster-to-point-in-time ^ --source-db-cluster-identifier my-source-cluster ^ --db-cluster-identifier my-clone ^ --engine-mode provisioned ^ --restore-type copy-on-write ^ --use-latest-restorable-time

這些命令會傳回包JSON含建立資料庫執行個體所需複製詳細資訊的物件。在複製的狀態 (空白 Aurora 資料庫叢集) 的狀態為 可用 (Available) 之前,您無法執行該操作。

注意

restore-db-cluster-to- 命point-in-time AWS CLI令只會還原資料庫叢集,而不會還原該資料庫叢集的資料庫執行個體。您可以執行命create-db-instance令,為還原的資料庫叢集建立資料庫執行個體。使用該命令,您可以將還原資料庫叢集的識別碼指定為--db-cluster-identifier參數。只在 restore-db-cluster-to-point-in-time 命令完成且資料庫叢集可用時,您才能建立資料庫執行個體。

假設您從Aurora Serverless v1叢集開始,並打算將其移轉到Aurora Serverless v2叢集。您可以建立Aurora Serverless v1叢集的佈建複製作為移轉的初始步驟。如需完整程序,包括任何必要的版本升級,請參閱從 Aurora Serverless v1 叢集升級至 Aurora Serverless v2

檢查狀態並取得複製詳細資訊

您可以使用下列命令來檢查新建立的複製叢集的狀態。

$ aws rds describe-db-clusters --db-cluster-identifier my-clone --query '*[].[Status]' --output text

或者,您可以使用下列 AWS CLI 查詢取得為複製建立資料庫執行個體所需的狀態和其他值。

對於LinuxmacOS、或Unix:

aws rds describe-db-clusters --db-cluster-identifier my-clone \ --query '*[].{Status:Status,Engine:Engine,EngineVersion:EngineVersion,EngineMode:EngineMode}'

在 Windows 中:

aws rds describe-db-clusters --db-cluster-identifier my-clone ^ --query "*[].{Status:Status,Engine:Engine,EngineVersion:EngineVersion,EngineMode:EngineMode}"

此查詢會返回類似以下的內容:

[ { "Status": "available", "Engine": "aurora-mysql", "EngineVersion": "8.0.mysql_aurora.3.04.1", "EngineMode": "provisioned" } ]

建立您複製的 Aurora 資料庫執行個體

使用命create-db-instanceCLI令為您Aurora Serverless v2或已佈建的複製建立資料庫執行個體。您不會為Aurora Serverless v1複製建立資料庫執行個體。

資料庫執行個體會繼承來源資料庫叢集的--master-username--master-user-password屬性。

下列範例會為已佈建複製建立資料庫執行個體。

對於LinuxmacOS、或Unix:

aws rds create-db-instance \ --db-instance-identifier my-new-db \ --db-cluster-identifier my-clone \ --db-instance-class db.r6g.2xlarge \ --engine aurora-mysql

在 Windows 中:

aws rds create-db-instance ^ --db-instance-identifier my-new-db ^ --db-cluster-identifier my-clone ^ --db-instance-class db.r6g.2xlarge ^ --engine aurora-mysql

下列範例會針對使用支援的引擎版本的複製建立Aurora Serverless v2資料庫執行個體Aurora Serverless v2。

對於LinuxmacOS、或Unix:

aws rds create-db-instance \ --db-instance-identifier my-new-db \ --db-cluster-identifier my-clone \ --db-instance-class db.serverless \ --engine aurora-postgresql

在 Windows 中:

aws rds create-db-instance ^ --db-instance-identifier my-new-db ^ --db-cluster-identifier my-clone ^ --db-instance-class db.serverless ^ --engine aurora-mysql

用於複製的參數

下表摘要說明與 restore-db-cluster-to-point-in-time 搭配使用以複製 Aurora 資料庫叢集的各種參數。

參數 描述

--source-db-cluster-identifier

使用您要複製之來源 Aurora 資料庫叢集的名稱。

--db-cluster-identifier

使用restore-db-cluster-to-point-in-time指令建立翻製時,請為翻製選擇一個有意義的名稱。然後,您將此名稱傳遞給 create-db-instance 命令。

--restore-type

指定 copy-on-write--restore-type,以建立來源資料庫叢集的複製,而非還原來源 Aurora 資料庫叢集。

--use-latest-restorable-time

此值指向來源資料庫叢集的最新可還原磁碟區資料。使用它來建立翻製。

--serverless-v2-scaling-configuration

(支援的較新版本Aurora Serverless v2) 使用此參數可設定Aurora Serverless v2複製的最小和最大容量。如果未指定此參數,則必須先修改叢集以新增此屬性,才能在複製叢集中建立任何Aurora Serverless v2執行個體。

--engine-mode

(Aurora Serverless v1僅支援的舊版本) 使用此參數建立與來源 Aurora DB 叢集不同類型的複製,並具有下列其中一個值:

  • provisioned於從Aurora Serverless v1資料庫叢集建立佈建的複製。

  • serverless於從佈建或Aurora Serverless v2資料庫叢集建立Aurora Serverless v1複製。

    當您指定serverless引擎模式時,您也可以選擇--scaling-configuration

--scaling-configuration

(Aurora Serverless v1僅支援的舊版本) 使用此參數可設定Aurora Serverless v1複製的最小和最大容量。如果未指定此參數,Aurora 會使用資料庫引擎的預設容量值建立複製。

如需跨帳戶VPC和跨帳戶複製的相關資訊,請參閱下列各節。