Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Yandex Managed Service for MySQL
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Подключение к базе данных
    • Остановка и запуск кластера
    • SQL-запросы в консоли управления
    • Изменение кластера
    • Подключение к DataLens
    • Управление хостами MySQL
    • Управление базами данных
    • Настройка базы данных
    • Управление пользователями
    • Назначение привилегий и ролей
    • Управление резервными копиями
    • Удаление кластера
    • Миграция базы данных в Yandex.Cloud
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
      • Действующие классы хостов
      • Архив
        • До 1 июня 2020 года
      • Использование устаревших классов хостов
    • Сеть в Managed Service for MySQL
    • Квоты и лимиты
    • Типы хранилища
    • Резервные копии
    • Репликация
  • Управление доступом
  • Правила тарификации
    • Действующие правила
    • Архив
      • До 1 февраля 2020 года
  • Справочник API
    • Аутентификация в API
    • gRPC
      • Обзор
      • BackupService
      • ClusterService
      • DatabaseService
      • ResourcePresetService
      • UserService
      • OperationService
    • REST
      • Обзор
      • Backup
        • Обзор
        • get
        • list
      • Cluster
        • Обзор
        • addHosts
        • backup
        • create
        • delete
        • deleteHosts
        • get
        • list
        • listBackups
        • listHosts
        • listLogs
        • listOperations
        • restore
        • start
        • stop
        • update
      • Database
        • Обзор
        • create
        • delete
        • get
        • list
      • ResourcePreset
        • Обзор
        • get
        • list
      • User
        • Обзор
        • create
        • delete
        • get
        • grantPermission
        • list
        • revokePermission
        • update
      • Operation
        • Обзор
        • get
  • Вопросы и ответы
    • Общие вопросы
    • Вопросы о MySQL
    • Все вопросы на одной странице
  1. Пошаговые инструкции
  2. Миграция базы данных в Yandex.Cloud

Миграция данных в Managed Service for MySQL

  • Создание дампа
  • (опционально) Создание виртуальной машины в Yandex.Cloud и загрузка дампа
  • Создание кластера Managed Service for MySQL
  • Восстановление данных

Чтобы перенести вашу базу данных в сервис Managed Service for MySQL, нужно непосредственно перенести данные, закрыть старую базу данных на запись и перенести нагрузку на кластер БД в Yandex.Cloud.

Перенести данные в кластер Managed Service for MySQL можно с помощью утилит mysqldump и mysql: создайте дамп рабочей базы и восстановите его в нужном кластере.

Перед тем, как переносить данные, проверьте, совпадают ли версии СУБД у существующей базы данных и вашего кластера в Yandex.Cloud. Так как дамп логический и представляет собой набор SQL-запросов, то перенос данных между кластерами с различными версиями возможен, но не гарантируется. Более подробно об этом см. в MySQL 5.7 FAQ Migration.

Ниже сервер СУБД, с которого вы переносите данные, называется сервер-источник, а кластер Managed Service for MySQL, на который вы мигрируете — сервер-приемник.

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

  1. Создайте дамп переносимой базы.
  2. При необходимости создайте виртуальную машину в Yandex.Cloud и загрузите данные на нее.
  3. Создайте кластер Managed Service for MySQL.
  4. Восстановите данные из дампа.

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

Создать дамп базы данных следует с помощью утилиты mysqldump, которая подробно описана в документации MySQL.

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

    $ mysqldump -h <адрес сервера-источника> \
                --user=<имя пользователя> \
                --password \
                --port=<порт> \
                --set-gtid-purged=OFF \
                --quick \
                --single-transaction <имя базы данных> \
                > ~/db_dump.sql
    

    Если сервер-источник использует таблицы InnoDB, используйте опцию --single-transaction для гарантированной консистентности данных. Для таблиц MyISAM эта опция не имеет смысла, так как транзакции не поддерживаются. Также стоит иметь в виду следующие флаги:

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

    Примечание

    Если в вашем дампе содержатся таблицы MyISAM, то их необходимо преобразовать в таблицы InnoDB следующей командой:

    $ sed -i 's/ENGINE=MyISAM/ENGINE=InnoDB/' ~/db_dump.sql
    
  2. Упакуйте дамп в архив:

    $ tar -cvzf db_dump.tar.gz ~/db_dump.sql
    

(опционально) Создание виртуальной машины в Yandex.Cloud и загрузка дампа

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

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

Нужное количество оперативной памяти и ядер процессора зависит от объема переносимых данных и требуемой скорости переноса.

Чтобы подготовить виртуальную машину для восстановления дампа:

  1. В консоли управление создайте новую виртуальную машину из образа Ubuntu 18.04. Параметры виртуальной машины должны зависеть от размера базы, которую Вы хотите перенести. Минимальной конфигурации (1 ядро, 2 ГБ RAM, 10 ГБ дискового пространства) должно хватить для переносы базы до 1 ГБ. Чем больше переносимая база, тем больше должно быть дискового пространства (как минимум в два раза больше, чем размер базы), и больше размер оперативной памяти.

    Виртуальная машина должна находиться в той же сети и зоне доступности, что хост-мастер кластера MySQL. Кроме того, виртуальной машине должен быть присвоен внешний IP-адрес, чтобы вы могли загрузить дамп извне Yandex.Cloud.

  2. Установите клиент MySQL и дополнительные утилиты для работы с СУБД. Для Debian/Ubuntu утилиты mysqldump и mysql поставляются в пакете mysql-client, его установка:

    $ sudo apt-get install mysql-client
    
  3. Перенесите дамп базы данных на виртуальную машину, например, используя утилиту scp:

    scp ~/db_dump.tar.gz <имя пользователя ВМ>@<публичный адрес ВМ>:/tmp/db_dump.tar.gz
    
  4. Распакуйте дамп:

    tar -xzf /tmp/db_dump.tar.gz
    

Создание кластера Managed Service for MySQL

Инструкцию по созданию кластера можно найти в разделе Создание MySQL-кластера.

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

Восстанавливать дамп базы данных следует с помощью утилиты mysql. Чтобы получать больше информации в случае возникновения ошибок, восстановление рекомендуется проводить установив флаг --line-numbers.

Внимание

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

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

    $ mysql -h <FQDN хоста MySQL> \
            --user=<имя пользователя> \
            --password \
            --port=3306 \
            --line-numbers <имя базы данных> \
            < /tmp/db_dump.sql
    

    Пример команды с заполненным FQDN хоста вы можете посмотреть в консоли управления, нажав на кнопку Подключиться на странице кластера.

  • Если вы восстанавливаете дамп с собственного сервера, необходимо скачать сертификат и задать параметры SSL --ssl-ca и --ssl-mode.

    Команда восстановления базы из дампа:

    $ mysql -h <FQDN хоста MySQL> \
            --user=<имя пользователя> \
            --password \
            --port=3306 \
            --ssl-ca=~/.mysql/root.crt \
            --ssl-mode=VERIFY_IDENTITY \
            --line-numbers <имя базы данных>  \
            < ~/db_dump.sql
    

    Пример команды с заполненным FQDN хоста вы можете посмотреть в консоли управления, нажав на кнопку Подключиться на странице кластера.

В этой статье:
  • Создание дампа
  • (опционально) Создание виртуальной машины в Yandex.Cloud и загрузка дампа
  • Создание кластера Managed Service for MySQL
  • Восстановление данных
Language
Вакансии
Политика конфиденциальности
Условия использования
© 2021 ООО «Яндекс.Облако»