Миграция баз данных в AWS с помощью Database Migration Service
TL;DR
DMS — это управляемый сервис AWS для непрерывной или разовой миграции данных между базами. Он синхронизирует изменения на источнике и ускоряет переход на RDS/Aurora/Redshift/DocumentDB без долгих простоев. Для крупных баз используйте DMS; для мелких — иногда достаточно mysqldump и восстановления.

Быстрые ссылки
Использование Database Migration Service от AWS
Настройка экземпляра репликации
Настройка endpoint’ов и запуск переноса
Использование Database Migration Service от AWS
Если у вас небольшая база, иногда достаточно взять резервную копию схемы и данных и восстановить их в новый RDS-инстанс. Пример команды для MySQL/Percona/MariaDB:
mysqldumpЭто эффективно клонирует базу и позволяет быстро переключиться на RDS. Но для больших баз mysqldump часто непрактичен: экспорт может занять дни, и все записи, сделанные в исходной базе после начала дампа, не попадут в файл. В результате вы получите рассинхронизацию — критично для рабочих production-систем.
DMS (Database Migration Service) решает эту проблему: он подключается к источнику и начнёт синхронизацию всех данных в целевую базу в RDS. Изменения в исходной базе, сделанные во время переноса, будут реплицированы в целевую. Даже если перенос займёт много времени, вы сможете переключиться без длительных простоя.
Ключевые моменты:
- DMS поддерживает непрерывную репликацию (CDC — Change Data Capture) для минимизации простоя.
- Для переноса DMS использует EC2-инстансы для обработки трафика и логики репликации.
- Если вы мигрируете в Amazon Aurora, Redshift, DynamoDB или DocumentDB, использование репликационного инстанса может быть бесплатным до шести месяцев; однако сохраняются стандартные AWS-тарiffs за передачу и хранение данных.
Важный термин:
- DMS — сервис AWS для миграции и репликации данных; CDC означает захват и передачу изменений из журналов транзакций.
Настройка экземпляра репликации
Перейдите в консоль Database Migration Service и нажмите “Create Replication Instance”.
Дайте экземпляру имя и выберите тип инстанса — более быстрые инстансы ускорят репликацию. Выделите место для хранения, которое будет использоваться под логи и кеш.

Выберите VPC и размер хранилища. Для отказоустойчивости можно развернуть два репликационных экземпляра в разных зонах доступности.

Если планируете длительный перенос, задайте окно технического обслуживания, чтобы AWS мог обновлять ПО DMS без неожиданного прерывания.

Нажмите Create и подождите несколько минут, пока экземпляр не запустится.
Настройка endpoint’ов и запуск переноса
В разделе “Endpoints” создайте новый endpoint. Выберите тип “Source” и укажите тип базы данных, адрес, порт, имя пользователя и пароль.

Повторите процесс для целевого endpoint’а, но выберите RDS-инстанс из списка.

Затем в разделе “Database Migration Tasks” создайте новую задачу: укажите репликационный инстанс, источник и цель. Чтобы сохранять синхронизацию после первоначального копирования, выберите тип миграции «Migrate existing data and replicate ongoing changes».

После создания задача начнёт миграцию. Статус и прогресс видны в вкладке Tasks в консоли.
Когда DMS не подходит или требует доработки
Important: DMS мощный инструмент, но есть случаи, когда он не покрывает все потребности:
- Сложные схемы с нестандартными типами данных или функциями (например, пользовательские плагины) могут не корректно переноситься.
- Хранимые процедуры, триггеры и представления часто требуют ручного порта или адаптации.
- Большие одноразовые миграции с требованием немедленного переключения (zero-downtime) могут потребовать доп. архитектуры и тестирования.
- Ограничения пропускной способности сети или строгие политики безопасности могут замедлить или блокировать репликацию.
Альтернативные подходы
- Полный экспорт/импорт (mysqldump, pg_dump) — прост, но подходит только для небольших или неактивных баз. Пример:
mysqldump. - Физические снапшоты и восстановление на новом оборудовании/хостинге — полезно при одинаковой версии СУБД и доступе к дисковым снимкам.
- Коммерческие инструменты миграции (например, сторонние ETL/CDC-решения) — когда требуется сложная трансформация или поддержка специфичных сценариев.
Проверки до запуска
- Тестовая миграция в изолированной среде: проверить полноту данных и корректность приложения.
- Проверить сетевую связность, правила Security Group и ACL.
- Убедиться, что механизмы резервного копирования и отката готовы.
- Оценить время начальной репликации и пропускную способность.
Шаблон пошагового плейбука (SOP)
- Оценка: профилировать объём данных, журналы транзакций, пиковую нагрузку.
- Подготовка: создать VPC, Security Groups, IAM-роли для DMS.
- Развертывание: создать репликационный инстанс и endpoint’ы.
- Тестовая миграция: выполнить миграцию небольшой выборки, проверить консистентность.
- Первичная синхронизация: запустить задачу с копированием существующих данных.
- CDC: включить репликацию ongoing changes, наблюдать лаг.
- Тест переключения: направить трафик тестовой среды на целевую БД, проверять приложение.
- Переключение в production: в окно пониженного трафика переключить приложение; при успешности завершить задачу и деактивировать источник.
- Откат: иметь план возврата на исходную систему, если нарушения критичны.
Роли и чеклисты
DBA:
- Проверить целостность схемы и индексов
- Оценить трансформации типов данных
- Тестировать процедуры и запросы
Сетевой инженер:
- Обеспечить нужные Security Groups и VPN/Direct Connect
- Контролировать пропускную способность и latency
DevOps/Инженер релизов:
- Создать IaC для DMS и RDS
- Настроить мониторинг и алерты
Команда безопасности:
- Проверить шифрование в покое и в транзите
- Проверить IAM-права и доступы
Безопасность и соответствие требованиям
- Используйте VPC и приватные endpoints — избегайте публичных подключений к источнику.
- Шифруйте данные в покое с помощью KMS и в транзите (TLS).
- Минимизируйте IAM-права: выдавайте DMS только те роли, которые необходимы.
- Логируйте операции и храните логи для аудита.
Конфигурационные подсказки и нюансы
- Параллелизм задач: для ускорения можно запустить несколько задач/таблиц параллельно, но следите за нагрузкой на сеть и целевую БД.
- Подбор инстанса: мониторьте CPU, память и I/O; при необходимости увеличьте тип инстанса.
- Отказоустойчивость: запуск второго репликационного экземпляра в другой AZ уменьшит риск простоя.
Критерии приёмки
- Все таблицы и критичные объёмы данных перенесены и проверены на полноту.
- Лаг репликации (CDC) находится в приемлемых пределах для бизнеса.
- Приложение прошло smoke-test на целевой БД без ошибок.
- Производительность целевой базы соответствует SLA или находится в пределах допустимого отклонения.
Контроль рисков и частые ошибки
Риски:
- Рассинхронизация данных при некорректной настройке CDC.
- Перегрузка целевой БД из-за одновременной репликации большого числа таблиц.
Митигаторы:
- Тестовые миграции и валидация данных до переключения.
- Мониторинг lag’а и ресурсов, постепенное наращивание нагрузки.
Пример валидации данных (минимум)
- Посчитать рядовые суммы (row counts) для ключевых таблиц на источнике и на цели.
- Проверить контрольные суммы для наборов строк в выборках.
- Прогонить критичные запросы и сравнить результаты.
Примечания по приватности и соответствию
Если вы переносите персональные данные (PII), убедитесь, что:
- Используются шифрование и доступы по принципу наименьших привилегий.
- Передача данных соответствует договорам обработки и местному законодательству (например, требованиям о трансграничной передаче данных).
Резюме
DMS — удобный инструмент для миграции больших и постоянно изменяющихся баз данных в AWS. Он сокращает простой благодаря CDC и позволяет постепенно переключать нагрузку на RDS или другие целевые хранилища. Тем не менее, перед запуском важно провести оценку, тестовую миграцию и подготовить план отката.
Ключевые рекомендации:
- Для больших и активных систем используйте DMS с включённым CDC.
- Тестируйте все нестандартные элементы схемы вручную.
- Обеспечьте безопасность соединений и минимальные права доступа.
Похожие материалы
APC Index Mismatch — как исправить BSOD на Windows
Доступ к Android с разбитым экраном
Сброс Samsung при заблокированном телефоне
Как разогнать монитор через NVIDIA Control Panel
APC_INDEX_MISMATCH: как исправить BSOD в Windows