最近測試發現,以前AWS RDS能夠建立cross-region replica的選項沒有了.(北京和寧夏區域都不能夠了)。這個功能常常是時有時無。聽說是考慮合規性緣由,該功能不在Console中直接可見了。
html
辦法老是比困難多。沒有console,咱們還有cli,方法總仍是有的。
經測試,方法以下:mysql
首先參考官方cli文檔
建立cross-region replica 命令行方式
https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance-read-replica.htmlsql
若是跨region,其中有arn部分的填寫要求
構建 Amazon RDS 的 ARN
https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_Tagging.ARN.html#USER_Tagging.ARN.Constructing數據庫
RDS example: arn:aws:rds:<region>:<account number>:<resourcetype>:<name>
注意,中國區是arn:aws-cn..... 這裏是個小坑。最好根據本身已有的RDS,在configuration中查找arn,進行修改。安全
aws rds create-db-instance-read-replica \ --db-instance-identifier cli-create-xx \ --source-db-instance-identifier arn:aws-cn:rds:cn-northwest-1:027807615311:db:testdb \ --db-instance-class db.m4.large \ --source-region cn-northwest-1
結果截圖:
4. 若是建立同region的replica,就簡單一些,不用寫arn,只要寫master和replica的名字便可網絡
aws rds create-db-instance-read-replica \ --db-instance-identifier cli-create-testdb2 \ --source-db-instance-identifier mysql57 \ --db-instance-class db.m4.large \ --source-region cn-north-1
註釋:aws cli方式建立cross-region replica,須要設定aws configure環境,鏈接到計劃建立replica的region(我就是鏈接的北京,replica也就建立在北京)。緣由是因爲db-instance-identifier不能指定arn,而source-db-instance-identifier 能夠指定arn。 而只有經過arn,在配合source-region參數,才能跨region去尋找資源。ide
實際操做:
aws configure配置中,選擇鏈接北京測試
aws configure AWS Access Key ID [****************ZFFF]: AWS Secret Access Key [****************HfnD]: Default region name [cn-north-1]: Default output format [None]:
而後開始執行第3步的建立命令。ui
如下是更多VPC,security group,db-subnet-group等參數的添加測,更全的參數選擇和指定,才具備生產實際使用的價值命令行
指定VPC,安全組
aws rds create-db-instance-read-replica \ --db-instance-identifier replica-zhy-1 \ --source-db-instance-identifier arn:aws-cn:rds:cn-northwest-1:027807615311:db:testdb \ --db-instance-class db.m4.large \ --source-region cn-northwest-1 \ --availability-zone cn-north-1b \ --vpc-security-group-ids sg-0df896e1034f08331 \ --db-subnet-group-name replica-subnet-group
建立完成截圖,
註釋:圖中紅框內信息,都是須要在命令行中使用的。
增長公網訪問,存儲類型,multi-AZ等
aws rds create-db-instance-read-replica \ --db-instance-identifier replica-zhy-2 \ --source-db-instance-identifier arn:aws-cn:rds:cn-northwest-1:027807615311:db:testdb \ --db-instance-class db.m4.large \ --source-region cn-northwest-1 \ --availability-zone cn-north-1b,cn-north-1a \ --vpc-security-group-ids sg-0df896e1034f08331 \ --db-subnet-group-name replica-subnet-group \ --vpc-security-group-ids sg-0df896e1034f08331 \ --multi-az \ --publicly-accessible \ --storage-type standard \ --deletion-protection \ --tags Key=Name,Value=test-OK
遇到錯誤An error occurred (InvalidVPCNetworkStateFault) when calling the CreateDBInstanceReadReplica operation: Cannot create a publicly accessible DBInstance. The specified VPC does not support DNS resolution, DNS hostnames, or both. Update the VPC and then try again
上面的錯誤,如下參考文檔,須要啓用 Amazon VPC 的 DNS 主機名和 DNS 解析屬性。
VPC 網絡屬性 enableDnsHostnames 和 enableDnsSupport 必須設置爲 true.要查看和修改這些屬性,請轉到位於 https://console.aws.amazon.com/vpc/ 的 VPC 控制檯。
https://aws.amazon.com/cn/premiumsupport/knowledge-center/rds-launch-in-vpc/?nc1=h_ls
https://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/vpc-dns.html
aws rds create-db-instance-read-replica \ --db-instance-identifier replica-zhy-2 \ --source-db-instance-identifier arn:aws-cn:rds:cn-northwest-1:027807615311:db:testdb \ --db-instance-class db.m4.large \ --source-region cn-northwest-1 \ --availability-zone cn-north-1b,cn-north-1a \ --vpc-security-group-ids sg-0df896e1034f08331 \ --db-subnet-group-name replica-subnet-group \ --vpc-security-group-ids sg-0df896e1034f08331 \ --multi-az \ --publicly-accessible \ --storage-type standard \ --deletion-protection \ --tags Key=Name,Value=test-OK
An error occurred (InvalidParameterCombination) when calling the CreateDBInstanceReadReplica operation: Requesting a specific availability zone is not valid for Multi-AZ instances.
8.去掉availability-zone參數,執行成功
aws rds create-db-instance-read-replica \ --db-instance-identifier replica-zhy-2 \ --source-db-instance-identifier arn:aws-cn:rds:cn-northwest-1:027807615311:db:testdb \ --db-instance-class db.m4.large \ --source-region cn-northwest-1 \ --vpc-security-group-ids sg-0df896e1034f08331 \ --db-subnet-group-name replica-subnet-group \ --multi-az \ --publicly-accessible \ --vpc-security-group-ids sg-0df896e1034f08331 \ --storage-type standard \ --deletion-protection \ --tags Key=Name,Value=test-OK
增長磁盤類型IO1,IOPS參數,option-group-name測試
aws rds create-db-instance-read-replica \ --db-instance-identifier replica-zhy-5 \ --source-db-instance-identifier arn:aws-cn:rds:cn-northwest-1:027807615311:db:testdb \ --db-instance-class db.m4.large \ --source-region cn-northwest-1 \ --vpc-security-group-ids sg-0df896e1034f08331 \ --db-subnet-group-name replica-subnet-group \ --no-multi-az \ --port 3316 \ --publicly-accessible \ --vpc-security-group-ids sg-0df896e1034f08331 \ --storage-type io1 \ --iops 1000 \ --deletion-protection \ --tags Key=Name,Value=test-OK \ --option-group-name mysql8-replica
輸出能夠看到port修改是有效的
選項組也是有效的
aws rds create-db-instance-read-replica \ --db-instance-identifier replica-zhy-6 \ --source-db-instance-identifier arn:aws-cn:rds:cn-northwest-1:027807615311:db:testdb \ --db-instance-class db.m4.large \ --source-region cn-northwest-1 \ --vpc-security-group-ids sg-0df896e1034f08331 \ --db-subnet-group-name replica-subnet-group \ --multi-az \ --port 3316 \ --publicly-accessible \ --vpc-security-group-ids sg-0df896e1034f08331 \ --storage-type gp2 \ --deletion-protection \ --tags Key=Name,Value=test-OK \ --option-group-name mysql8-replica
輸出以下,通過屢次測試,--storage-type不管設置什麼值(包括不設置),都是使用IO1的磁盤,100G,1000IOPS的默認設置。
總結,經過命令行建立replica,很快就能建立完成,可是有不少參數,是在replica建立完成以後,再次modify的,須要一段時間調整。
下面幾個參數,是後面再改的(固然,都是系統自動完成的)。
--multi-az --port 3316 --storage-type gp2
通過屢次測試,--storage-type不管設置什麼值(包括不設置),都是使用IO1的磁盤,100G,1000IOPS的默認設置。最後會修改成--storage-type指定的類型。
參考下截圖,最終完成時間,主要是看數據量大小.
至此,就完成replica的建立。