RDS 混合复制,主服务器在 EC2-Classic,副本服务器在 VPC (MySQL)

RDS 混合复制,主服务器在 EC2-Classic,副本服务器在 VPC (MySQL)

我在 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

那么,据我所知,这种复制不允许在同一区域内进行,而只能以跨区域方式进行?

有办法解决吗?

提前致谢

答案1

是的,它在区域内有效,但在区域内它不起作用,除非在单个 VPC 内。

不过,还是有解决办法的。

您无需创建副本,而是创建主服务器。使用原始主服务器的转储加载副本,然后自行配置副本,以便临时从“外部”主服务器进行复制。每个 RDS 实例上都有存储过程允许执行此操作,因为如果没有权限SUPER,则无法执行此操作。

使用在 Amazon RDS 外部运行的 MySQL 或 MariaDB 实例进行复制

您必须跳过步骤 1 和 4,并找到另一种方法来阻止在启动转储文件时对主服务器的所有写入,因为 RDS 不允许FLUSH TABLES WITH READ LOCK;

相关内容