Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for MySQL®
  • Начало работы
    • Все руководства
    • Анализ производительности и оптимизация Managed Service for MySQL®
    • Выгрузка базы данных в Yandex Data Processing
    • Миграция базы данных из стороннего кластера MySQL®
    • Миграция базы данных из Managed Service for MySQL® в MySQL®
    • Поставка данных из Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer
    • "Поставка данных в Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer"
    • Поставка данных в Yandex Managed Service for Apache Kafka® с помощью Debezium
    • Сайт на WordPress с БД MySQL®
    • Миграция базы данных в Yandex Managed Service for YDB с помощью Yandex Data Transfer
    • Миграция базы данных из Managed Service for MySQL® в Yandex Object Storage
    • Перенос данных из Yandex Object Storage в Managed Service for MySQL®
    • Захват изменений MySQL® и поставка в YDS
    • Миграция данных из Yandex Managed Service for PostgreSQL в Managed Service for MySQL® с помощью Yandex Data Transfer
    • Миграция данных из Managed Service for MySQL® в Yandex Managed Service for PostgreSQL с помощью Yandex Data Transfer
    • Миграция данных из Managed Service for MySQL® в Yandex Managed Service for Greenplum® с помощью Yandex Data Transfer
    • Синхронизация данных из стороннего кластера MySQL® в Yandex Managed Service for MySQL® с помощью Yandex Data Transfer
    • Миграция базы данных из MySQL® в ClickHouse® с помощью Yandex Data Transfer
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Обучающие курсы

В этой статье:

  • Необходимые платные ресурсы
  • Перенос данных с использованием сервиса Data Transfer
  • Необходимые платные ресурсы
  • Запустите перенос данных
  • Завершите перенос данных
  • Удалите созданные ресурсы
  • Перенос данных через создание и восстановление логического дампа
  • Перед началом работы
  • Создание дампа
  • (Опционально) Загрузка дампа на виртуальную машину в Yandex Cloud
  • Восстановление данных
  • Удаление созданных ресурсов
  1. Практические руководства
  2. Миграция базы данных из стороннего кластера MySQL®

Миграция данных из стороннего кластера MySQL®

Статья создана
Yandex Cloud
Улучшена
Dmitry A.
Обновлена 8 апреля 2025 г.
  • Необходимые платные ресурсы
  • Перенос данных с использованием сервиса Data Transfer
  • Необходимые платные ресурсы
  • Запустите перенос данных
  • Завершите перенос данных
  • Удалите созданные ресурсы
  • Перенос данных через создание и восстановление логического дампа
    • Перед началом работы
    • Создание дампа
    • (Опционально) Загрузка дампа на виртуальную машину в Yandex Cloud
    • Восстановление данных
    • Удаление созданных ресурсов

Примечание

Миграция данных в сторонний кластер MySQL® описана в статье Миграция базы данных из Managed Service for MySQL® в сторонний кластер MySQL®.

Перенести данные из стороннего кластера-источника в кластер-приемник Managed Service for MySQL® можно двумя способами:

  • Перенос данных с использованием сервиса Yandex Data Transfer.

    Этот способ прост в настройке, не требует создания промежуточной виртуальной машины и позволяет перенести базу целиком без остановки обслуживания пользователей. Для его использования разрешите подключение к кластеру-источнику из интернета.

    Подробнее см. в разделе Какие задачи решает сервис Yandex Data Transfer.

  • Перенос данных через создание и восстановление логического дампа.

    Логический дамп — файл с набором команд, последовательное выполнение которых позволяет восстановить состояние базы данных. Чтобы обеспечить полноту логического дампа, перед его созданием кластер-источник следует перевести в режим только чтение.

    Используйте этот способ только в том случае, если перенос данных с помощью Data Transfer по каким-либо причинам невозможен.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость переноса данных с использованием сервиса Yandex Data Transfer входят:

  • Плата за кластер Managed Service for MySQL®: использование вычислительных ресурсов, выделенных хостам, и дискового пространства (см. тарифы MySQL®).
  • Плата за использование публичных IP-адресов, если для хостов кластера включен публичный доступ (см. тарифы Virtual Private Cloud).
  • Плата за трансфер: использование вычислительных ресурсов и количество переданных строк данных (см. тарифы Data Transfer).

В стоимость переноса данных при помощи дампа базы входят:

  • Плата за кластер Managed Service for MySQL®: использование вычислительных ресурсов, выделенных хостам, и дискового пространства (см. тарифы MySQL®).
  • Плата за использование публичных IP-адресов, если для хостов кластера включен публичный доступ (см. тарифы Virtual Private Cloud).
  • При создании виртуальной машины для загрузки дампа — плата за использование вычислительных ресурсов, операционной системы и хранилища (см. тарифы Compute Cloud).

Перенос данных с использованием сервиса Data TransferПеренос данных с использованием сервиса Data Transfer

Чтобы перенести базу данных из MySQL® в Managed Service for MySQL®:

  1. Запустите перенос данных.
  2. Завершите перенос данных.

Если созданные ресурсы вам больше не нужны, удалите их.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки описываемого решения входят:

  • Плата за кластер Managed Service for MySQL®: использование вычислительных ресурсов, выделенных хостам, и дискового пространства (см. тарифы Managed Service for MySQL®).
  • Плата за использование публичных IP-адресов, если для хостов кластера включен публичный доступ (см. тарифы Virtual Private Cloud).
  • Плата за трансфер: использование вычислительных ресурсов и количество переданных строк данных (см. тарифы Data Transfer).

Запустите перенос данныхЗапустите перенос данных

  1. Подготовьте кластер-источник.

  2. Подготовьте инфраструктуру и запустите перенос данных:

    Вручную
    Terraform
    1. Создайте кластер-приемник Managed Service for MySQL® любой подходящей конфигурации. При этом:

      • Версия MySQL® должна быть не ниже, чем в кластере-источнике.

        Перенос данных с повышением мажорной версии MySQL® возможен, но не гарантируется. Подробнее см. в документации MySQL®.

        Миграция с понижением версии MySQL® невозможна.

      • Режим SQL должен быть таким же, как и в кластере-источнике.

    2. Подготовьте кластер-приемник.

    3. Создайте эндпоинт для источника:

      • Тип базы данных — MySQL.

      • Параметры эндпоинта → Настройки подключения — Пользовательская инсталляция.

        Укажите параметры подключения к кластеру-источнику.

    4. Создайте эндпоинт для приемника:

      • Тип базы данных — MySQL.

      • Параметры эндпоинта → Настройки подключения — Кластер Managed Service for MySQL.

        Выберите кластер-приемник из списка и укажите настройки подключения к нему.

    5. Создайте трансфер типа Копирование и репликация, использующий созданные эндпоинты.

    6. Активируйте его.

      Важно

      Избегайте любых изменений в схеме данных в кластере-источнике и кластере-приемнике во время работы трансфера. Подробнее см. в разделе Работа с базами данных во время трансфера.

    1. Подготовьте кластер-источник.

    2. Если у вас еще нет Terraform, установите его.

    3. Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.

    4. Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его.

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

    6. Скачайте в ту же рабочую директорию файл конфигурации data-transfer-mysql-mmy.tf.

      В этом файле описаны:

      • сеть;
      • подсеть;
      • группа безопасности и правило, необходимое для подключения к кластеру;
      • кластер-приемник Managed Service for MySQL®;
      • эндпоинт для источника;
      • эндпоинт для приемника;
      • трансфер.
    7. Укажите в файле data-transfer-mysql-mmy.tf:

      • параметры эндпоинта-источника;

      • параметры кластера-приемника, которые используются и как параметры эндпоинта-приемника:

        • target_mysql_version — версия MySQL®, она должна быть не ниже чем в кластере-источнике;
        • target_sql_mode — режим SQL, он должен быть таким же, как и в кластере-источнике;
        • target_db_name — имя базы данных;
        • target_user и target_password — имя и пароль пользователя-владельца базы данных.
    8. Проверьте корректность файлов конфигурации Terraform с помощью команды:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    9. Создайте необходимую инфраструктуру:

      1. Выполните команду для просмотра планируемых изменений:

        terraform plan
        

        Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

      2. Если вас устраивают планируемые изменения, внесите их:

        1. Выполните команду:

          terraform apply
          
        2. Подтвердите изменение ресурсов.

        3. Дождитесь завершения операции.

      В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.

      Трансфер активируется автоматически после создания.

Завершите перенос данныхЗавершите перенос данных

  1. Дождитесь перехода трансфера в статус Реплицируется.

  2. Переведите кластер-источник в режим только чтение и переключите нагрузку на кластер-приемник.

  3. На странице мониторинга трансфера дождитесь снижения до нуля характеристики Maximum data transfer delay. Это значит, что в кластер-приемник перенесены все изменения, произошедшие в кластере-источнике после завершения копирования данных.

  4. Деактивируйте трансфер и дождитесь его перехода в статус Остановлен.

    Подробнее о статусах трансфера см. в разделе Жизненный цикл трансфера.

Удалите созданные ресурсыУдалите созданные ресурсы

Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:

Вручную
Terraform
  • Удалите кластер Managed Service for MySQL®.
  • Удалите остановленный трансфер.
  • Удалите эндпоинты для источника и приемника.
  1. В терминале перейдите в директорию с планом инфраструктуры.

    Важно

    Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.

  2. Удалите ресурсы:

    1. Выполните команду:

      terraform destroy
      
    2. Подтвердите удаление ресурсов и дождитесь завершения операции.

    Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.

Реальный пример миграции базы данных MySQL® с помощью сервиса Data Transfer см. в разделе Синхронизация данных из MySQL с помощью Yandex Data Transfer.

Перенос данных через создание и восстановление логического дампаПеренос данных через создание и восстановление логического дампа

Чтобы перенести данные в кластер Managed Service for MySQL®, создайте логический дамп нужной базы и восстановите его в кластере-приемнике. Это можно сделать двумя способами:

  • С помощью утилит mydumper и myloader. Дамп базы создается в виде набора файлов в отдельном каталоге.
  • С помощью утилит mysqldump и mysql. Дамп базы создается в виде одного файла.

Этапы миграции:

  1. Создайте дамп переносимой базы.

  2. (Опционально) Загрузите дамп на промежуточную виртуальную машину в Yandex Cloud.

    Переносить данные на промежуточную виртуальную машину в Yandex Compute Cloud нужно, если:

    • К вашему кластеру Managed Service for MySQL® нет доступа из интернета.
    • Ваше оборудование или соединение с кластером в Yandex Cloud недостаточно надежны.

    Чем больше объем переносимых данных и необходимая скорость переноса, тем выше требования к виртуальной машине: числу ядер процессора, оперативной памяти и дисковому пространству.

  3. Восстановите данные из дампа.

Если созданные ресурсы вам больше не нужны, удалите их.

Перед началом работыПеред началом работы

Создайте необходимые ресурсы:

Вручную
Terraform
  1. Создайте кластер-приемник Managed Service for MySQL® любой подходящей конфигурации. При этом:

    • Версия MySQL® должна быть не ниже чем в кластере-источнике.

      Перенос данных с повышением мажорной версии MySQL® возможен, но не гарантируется. Подробнее см. в документации MySQL®.

      Миграция с понижением версии MySQL® невозможна.

    • Режим SQL должен быть таким же, как и в кластере-источнике.

  2. (Опционально) Создайте виртуальную машину на базе Ubuntu 20.04 LTS со следующими параметрами:

    • Диски и файловые хранилища → Размер — достаточный для хранения распакованного и нераспакованного дампов.

      Рекомендуется использовать объем в два или более раза превышающий суммарный объем дампа и архива с ним.

    • Сетевые настройки:

      • Подсеть — выберите подсеть в той же облачной сети, в которой размещен кластер-приемник.
      • Публичный IP-адрес — выберите Автоматически или один адрес из списка зарезервированных IP-адресов.
  3. Если вы используете группы безопасности для промежуточной виртуальной машины и кластера Managed Service for MySQL®, настройте их.

  1. Если у вас еще нет Terraform, установите его.

  2. Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.

  3. Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его.

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

  5. Скачайте в ту же рабочую директорию файл конфигурации data-migration-mysql-mmy.tf.

    В этом файле описаны:

    • сеть;
    • подсеть;
    • группа безопасности и правило, необходимое для подключения к кластеру;
    • кластер Managed Service for MySQL® с публичным доступом из интернета;
    • (опционально) виртуальная машина с публичным доступом из интернета.
  6. Укажите в файле data-migration-mysql-mmy.tf:

    • параметры кластера-приемника:

      • target_mysql_version — версия MySQL®, она должна быть не ниже чем в кластере-источнике;
      • target_sql_mode — режим SQL, он должен быть таким же, как и в кластере-источнике;
      • target_db_name — имя базы данных;
      • target_user и target_password — имя и пароль пользователя-владельца базы данных.
    • (опционально) параметры виртуальной машины:

      • vm_image_id — идентификатор публичного образа с Ubuntu без GPU. Например, для Ubuntu 20.04 LTS.
      • vm_username и vm_public_key — логин и абсолютный путь к публичному ключу, которые будут использоваться для доступа к виртуальной машине. По умолчанию в образе Ubuntu 20.04 LTS указанный логин игнорируется, вместо него создается пользователь с логином ubuntu. Используйте его для подключения к виртуальной машине.
  7. Проверьте корректность файлов конфигурации Terraform с помощью команды:

    terraform validate
    

    Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  8. Создайте необходимую инфраструктуру:

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

    В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.

Создание дампаСоздание дампа

С использованием утилиты mysqldump
С использованием утилиты mydumper
  1. Переключите базу в режим только чтение, чтобы не потерять данные, которые могут появиться во время создания дампа.

  2. Установите утилиту mysqldump в кластер-источник, например (для Ubuntu):

    sudo apt update && sudo apt install mysql-client --yes
    
  3. Создайте дамп базы данных:

    mysqldump \
        --host=<FQDN_или_IP-адрес> \
        --user=<имя_пользователя> \
        --password \
        --port=<порт> \
        --set-gtid-purged=OFF \
        --quick \
        --single-transaction \
        <имя_БД> > ~/db_dump.sql
    

    Где --host — FQDN или IP-адрес хоста-мастера в кластере-источнике.

    При необходимости передайте в команде создания дампа дополнительные параметры:

    • --events — если в вашей базе есть периодические события;
    • --routines — если в вашей базе есть хранимые процедуры и функции.

    Для таблиц InnoDB используйте опцию --single-transaction: она гарантирует целостность данных.

  4. В файле дампа исправьте имена движков таблиц на InnoDB:

    sed -i -e 's/MyISAM/InnoDB/g' -e 's/MEMORY/InnoDB/g' db_dump.sql
    
  5. Упакуйте дамп в архив:

    tar -cvzf db_dump.tar.gz ~/db_dump.sql
    
  1. Переключите базу в режим только чтение, чтобы не потерять данные, которые могут появиться во время создания дампа.

  2. Создайте директорию для файлов дампа:

    mkdir db_dump
    
  3. Установите утилиту mydumper в кластер-источник, например (для Ubuntu):

    sudo apt update && sudo apt install mydumper --yes
    
  4. Создайте дамп базы данных:

    mydumper \
        --triggers \
        --events \
        --routines \
        --outputdir=db_dump \
        --rows=10000000 \
        --threads=8 \
        --compress \
        --database=<имя_БД> \
        --user=<имя_пользователя> \
        --ask-password \
        --host=<FQDN_или_IP-адрес>
    

    Где:

    • --triggers — дамп триггеров.
    • --events — дамп событий.
    • --routines — дамп хранимых процедур и функций.
    • --outputdir — директория для файлов дампа.
    • --rows — количество строк во фрагментах, на которые будут разбиты таблицы. Чем меньше значение, тем больше будет файлов в дампе.
    • --threads — количество используемых потоков. Рекомендуется использовать значение, равное половине свободных ядер на сервере.
    • --compress — сжатие выходных файлов.
    • --host — FQDN или IP-адрес хоста-мастера в кластере-источнике.
  5. В файлах дампа исправьте имена движков таблиц на InnoDB:

    sed -i -e 's/MyISAM/InnoDB/g' -e 's/MEMORY/InnoDB/g' `find /db_dump -name '*-schema.sql'`
    
  6. Упакуйте дамп в архив:

    tar -cvzf db_dump.tar.gz ~/db_dump
    

(Опционально) Загрузка дампа на виртуальную машину в Yandex Cloud(Опционально) Загрузка дампа на виртуальную машину в Yandex Cloud

  1. Подключитесь к промежуточной виртуальной машине по SSH.

  2. Скопируйте архив с дампом базы данных на промежуточную виртуальную машину, например, используя утилиту scp:

    scp ~/db_dump.tar.gz <имя_пользователя_ВМ>@<публичный_IP-адрес_ВМ>:~/db_dump.tar.gz
    
  3. Извлеките дамп из архива:

    tar -xzf ~/db_dump.tar.gz
    

Восстановление данныхВосстановление данных

Внимание

Для кластера Managed Service for MySQL® по умолчанию включен AUTOCOMMIT. Не отключайте AUTOCOMMIT в рамках клиентской сессии при восстановлении базы данных из дампа, иначе возможно переполнение хранилища хоста и нарушение работы кластера.

С использованием утилиты mysql
С использованием утилиты myloader

Этот способ подходит, если вы создали дамп с помощью утилиты mysqldump.

  1. Установите утилиту mysql на хост, с которого выполняется восстановление дампа, например (для Ubuntu):

    sudo apt update && sudo apt install mysql-client --yes
    
  2. Запустите восстановление базы из дампа:

    • Если вы восстанавливаете дамп с виртуальной машины в Yandex Cloud:

      mysql \
          --host=c-<идентификатор_кластера-приемника>.rw.mdb.yandexcloud.net \
          --user=<имя_пользователя> \
          --port=3306 \
          <имя_БД> < ~/db_dump.sql
      
    • Если вы восстанавливаете дамп с хоста, подключающегося к Yandex Cloud из интернета, получите SSL-сертификат и передайте параметры --ssl-ca и --ssl-mode в команде восстановления:

      mysql \
          --host=c-<идентификатор_кластера-приемника>.rw.mdb.yandexcloud.net \
          --user=<имя_пользователя> \
          --port=3306 \
          --ssl-ca=~/.mysql/root.crt \
          --ssl-mode=VERIFY_IDENTITY \
          <имя_БД> < ~/db_dump.sql
      

Этот способ подходит, если вы создали дамп с помощью утилиты mydumper и используете для восстановления промежуточную виртуальную машину.

  1. Установите утилиту myloader на хост, с которого выполняется восстановление дампа, например (для Ubuntu):

    sudo apt update && sudo apt install mydumper --yes
    
  2. Запустите восстановление базы из дампа:

    myloader \
        --host=c-<идентификатор_кластера-приемника>.rw.mdb.yandexcloud.net \
        --directory=db_dump/ \
        --overwrite-tables \
        --threads=8 \
        --compress-protocol \
        --user=<имя_пользователя> \
        --ask-password
    

Идентификатор кластера можно получить со списком кластеров в каталоге.

Удаление созданных ресурсовУдаление созданных ресурсов

Удалите ресурсы, которые вы больше не будете использовать, чтобы за них не списывалась плата:

Вручную
Terraform
  • Удалите кластер Managed Service for MySQL®.
  • Если вы создавали промежуточную виртуальную машину, удалите ее.
  • Если вы зарезервировали публичные статические IP-адреса, освободите и удалите их.
  1. В терминале перейдите в директорию с планом инфраструктуры.

    Важно

    Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.

  2. Удалите ресурсы:

    1. Выполните команду:

      terraform destroy
      
    2. Подтвердите удаление ресурсов и дождитесь завершения операции.

    Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.

Была ли статья полезна?

Предыдущая
Выгрузка базы данных в Yandex Data Processing
Следующая
Миграция базы данных из Managed Service for MySQL® в MySQL®
Проект Яндекса
© 2025 ООО «Яндекс.Облако»