У меня есть часто используемый экземпляр RDS (MySQL) в EC2-Classic с тремя экземплярами реплик чтения. Мы планируем переместить некоторые из наших микросервисов в 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:
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
привилегия, иначе это было бы невозможно.
Видеть Репликация с экземпляром MySQL или MariaDB, запущенным внешним по отношению к Amazon RDS.
Вам придется пропустить шаги 1 и 4 и найти другой способ предотвратить все записи в ваш мастер, пока вы запускаете файл дампа, поскольку RDS не позволяет FLUSH TABLES WITH READ LOCK;
.