Как использовать AWS DMS из одного региона в другой?
Я пытаюсь использовать AWS DMS для перемещения данных из исходной базы данных ( AWS RDS MySQL) в регионе Парижа ( eu-west-3) в целевую базу данных ( AWS Redshift) в регионе Ирландии ( eu-west-1). Цель состоит в том, чтобы постоянно копировать текущие изменения.
Я сталкиваюсь с такого рода ошибками:
An error occurred (InvalidResourceStateFault) when calling the CreateEndpoint operation: The redshift cluster datawarehouse needs to be in the same region as the current region. The cluster's region is eu-west-1 and the current region is eu-west-3.
В документации сказано:
Единственное требование для использования AWS DMS - одна из ваших конечных точек должна быть в службе AWS.
То, что я пытаюсь сделать, должно быть возможным. На практике это кажется недопустимым.
Как использовать AWS DMS из одного региона в другой? В каком регионе должны быть мои конечные точки? В каком регионе должна быть моя задача репликации? Мой экземпляр репликации должен находиться в том же регионе, что и экземпляр RDS MySQL, потому что им нужно совместно использовать подсеть.
3 ответа
В настоящее время Redshift должен находиться в том же регионе, что и экземпляр репликации.
Кластер Amazon Redshift должен находиться в той же учетной записи AWS и в том же регионе AWS, что и экземпляр репликации.
https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Redshift.html
Поэтому необходимо создать экземпляр репликации в области Redshift внутри VPC. Затем использовать пиринг VPC, чтобы разрешить экземпляру репликации подключаться к VPC экземпляра MySQL в другом регионе.
https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html
Я нашел работу, которую я сейчас тестирую.
Я объявляю "Postgres" как тип двигателя для кластера Redshift. Это заставляет AWS DMS думать, что это внешняя база данных, и AWS DMS больше не проверяет регионы.
Я думаю, что это приведет к снижению производительности, потому что DMS, вероятно, будет передавать данные в Redshift, используя INSERT вместо команды COPY.
AWS предоставляет этот технический документ под названием "Перенос ресурсов AWS в новый регион AWS", обновленный в прошлом году. Возможно, вы захотите связаться с их поддержкой, но идея состоит в том, чтобы переместить вашу RDS в другую RDS в соответствующем регионе, прежде чем переходить на Redshift. В техническом документе они предоставляют альтернативный способ миграции RDS (без DMS, если вы не хотите использовать его по какой-либо причине):
- Остановите все транзакции или сделайте моментальный снимок (однако изменения после этого момента будут потеряны, и, возможно, их придется повторно применить к целевому экземпляру БД Amazon RDS).
- Используя временный экземпляр EC2, выведите все данные из Amazon RDS в файл:
- Для MySQL используйте инструмент mysqldump. Возможно, вы захотите сжать этот дамп (см. Bzip или gzip).
- Для MS SQL используйте утилиту bcp для экспорта данных из экземпляра Amazon RDS SQL DB в файлы. Вы можете использовать мастер создания и публикации сценариев SQL Server для создания сценариев для всей базы данных или только для выбранных объектов.
- Примечание. Amazon RDS не поддерживает восстановление файлов резервных копий Microsoft SQL Server.
- Для Oracle используйте утилиту экспорта / импорта Oracle или функцию Data Pump (см. http://aws.amazon.com/articles/AmazonRDS/4173109646282306).
- Для PostgreSQL вы можете использовать команду pg_dump для экспорта данных.
- Скопируйте эти данные в экземпляр в целевой области с помощью стандартных инструментов, таких как CP, FTP или Rsync.
- Запустите новый экземпляр базы данных Amazon RDS в целевом регионе, используя новую группу безопасности Amazon RDS.
- Импортируйте сохраненные данные.
- Убедитесь, что база данных активна и ваши данные присутствуют.
- Удалите старый экземпляр БД Amazon RDS в исходном регионе