目前,在AWS的console中,無法創建跨區的只讀庫
類似上圖所示,只能創建本區內的只讀庫。
其實AWS RDS是支持跨區創建只讀庫的,但我們需要從AWSCLI命令行中操作。
需要注意的是:
要在與源數據庫實例不同的 AWS 區域中創建一個加密的只讀副本,源數據庫實例必須加密。
還需要額外注意以下事項:
- 您只有在使用以下 Amazon RDS 數據庫實例時,才能在 AWS 區域之間進行復制:
MariaDB(所有版本)。
MySQL 版本 5.6 及更高版本。
Oracle Enterprise Edition (EE) 引擎版本 12.1.0.2.v10 和更高的 12.1 版本、12.2 的所有版本以及 18.0 的所有版本。
需要有效的 Data Guard 許可。有關 Oracle 跨區域只讀副本的限制的信息,請參閱 只讀副本限制 (Oracle)。
PostgreSQL 版本 9.4.7 及更高版本。 - 源數據庫實例可在多個 AWS 區域具有跨區域只讀副本。
- 您只能從未作爲其他 Amazon RDS 數據庫實例的只讀副本的源 Amazon RDS 數據庫實例創建跨區域的 Amazon RDS 只讀副本。
- 不能在 AWS GovCloud (US-West)區域內外設置複製通道。
- 對於所在 AWS 區域與源實例不同的任何只讀副本,其滯後時間將更長。產生此滯後時間是因爲區域數據中心之間的網絡通道更長。
- 在一個 AWS 區域內,從同一源數據庫實例創建的所有跨區域只讀副本必須位於同一 Amazon VPC 內部或任一 VPC 外部。對於跨區域只讀副本,所有指定 --db-subnet-group-name 參數的只讀副本創建命令必須從同一 VPC 指定數據庫子網組。
- 可以從其他 AWS 區域的 VPC 中的源數據庫實例在 VPC 內部創建跨區域只讀副本。還可以從 VPC 外部的源數據庫實例在 VPC 內部創建跨區域只讀副本。也可以從 VPC 內部的源數據庫實例在 VPC 外部創建跨區域只讀副本。
- 由於 VPC 對訪問控制列表 (ACL) 條目數有限制,我們無法保證 5 個以上的跨區域只讀副本實例。
- 只讀副本使用指定數據庫引擎的默認數據庫參數組。
- 只讀副本使用默認安全組。
- 對於 Oracle 數據庫實例,刪除跨區域只讀副本的源時,將提升只讀副本。對於 MariaDB、MySQL 和 PostgreSQL 數據庫實例,刪除跨區域只讀副本的源時,只讀副本的複製狀態將設置爲 terminated。但是,不會提升只讀副本。
創建步驟:
- 首先要在目標區有KMS,應用於對數據庫的加密。
- 在命令行執行
aws rds create-db-instance-read-replica \
--db-instance-identifier test-m8-rep --region cn-north-1 \
--source-db-instance-identifier arn:aws-cn:rds:cn-northwest-1:XXXXXX:db:test-m8 \
--source-region cn-northwest-1 --kms-key-id XXXXXX
解釋:
source-db-instance-identifier 原庫的ARN,可以在頁面的configuration標籤中查到
kms-key-id 目標端用來加密的密鑰ID
官方文檔:
https://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/USER_ReadRepl.html#USER_ReadRepl.XRgn