Amazon-Web-Services

RDS 混合複製,EC2-Classic 中的 master,VPC (MySQL) 中的副本

  • March 30, 2016

我在 EC2-Classic 中有一個重度使用的 RDS 實例 (MySQL),其中包含三個只讀副本實例。我們計劃將我們的一些微服務遷移到 VPC,其中一些需要讀取這些副本實例(我們沒有計劃在中期將這些 RDS 實例完全遷移到 VPC)。我想到的第一個想法是在 VPC 中創建一個只讀副本(我已經創建了一個子網組),但我收到一條錯誤消息:

At least one security group 'xxxxx' (Non-VPC) and subnet group 'dbsubnetgroup' (in VPC 'vpc-123456') are not in common VPC. (Service: AmazonRDS; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: 5a8f57fb-f5b4-11e5-996f-d16e3527730f)

我嘗試使用 AWS CLI 來實現這一點:

aws rds create-db-instance-read-replica --db-instance-identifier replica-name --source-db-instance-identifier spurce-name --db-subnet-group-name sbsubnetgroup-name --region us-east-1

A client error (DBSubnetGroupNotAllowedFault) occurred when calling the CreateDBInstanceReadReplica operation: DbSubnetGroupName should not be specified for read replicas that are created in the same region as the master

那麼,據我所知,這種複制在同一個區域內是不允許的,但它只能以跨區域的方式工作?

有沒有辦法解決它?

提前致謝

是的,它在區域內工作,但在一個區域內,它只能在單個 VPC 內工作。

不過,有一些解決方法。

您無需創建副本,而是創建主伺服器。使用原始主伺服器的轉儲載入它,然後自己配置它以臨時從“外部”主伺服器複製。每個 RDS 實例上都有儲存過程來允許這樣做,因為缺少SUPER特權,否則這是不可能的。

請參閱使用在 Amazon RDS 外部執行的 MySQL 或 MariaDB 實例進行複制

您必須跳過第 1 步和第 4 步,並找到另一種方法來防止在啟動轉儲文件時對您的主伺服器進行所有寫入,因為 RDS 不允許FLUSH TABLES WITH READ LOCK;.

引用自:https://serverfault.com/questions/767115