Как использовать 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, если вы не хотите использовать его по какой-либо причине):

  1. Остановите все транзакции или сделайте моментальный снимок (однако изменения после этого момента будут потеряны, и, возможно, их придется повторно применить к целевому экземпляру БД Amazon RDS).
  2. Используя временный экземпляр 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 для экспорта данных.
  3. Скопируйте эти данные в экземпляр в целевой области с помощью стандартных инструментов, таких как CP, FTP или Rsync.
  4. Запустите новый экземпляр базы данных Amazon RDS в целевом регионе, используя новую группу безопасности Amazon RDS.
  5. Импортируйте сохраненные данные.
  6. Убедитесь, что база данных активна и ваши данные присутствуют.
  7. Удалите старый экземпляр БД Amazon RDS в исходном регионе
Другие вопросы по тегам