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

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

Статья создана
Yandex Cloud
  • Перед началом работы
  • Перенос данных с использованием сервиса Yandex Data Transfer
  • Перенос данных через создание и восстановление логического дампа
    • Создание дампа
    • (опционально) Создание виртуальной машины в Yandex Cloud и загрузка дампа
    • Восстановление данных
    • Удаление созданных ресурсов

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      Укажите идентификатор кластера-приемника.

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

  6. Активируйте трансфер.

    Важно

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

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

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

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

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

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

  11. Удалите остановленный трансфер.

  12. Удалите эндпоинты для источника и приемника.

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

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

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

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

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

  1. Создайте дамп переносимой базы.
  2. При необходимости создайте промежуточную виртуальную машину в Yandex Cloud и загрузите дамп на нее.
  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
    

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

    • --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=<FDQN или IP-адрес хоста-мастера в кластере-источнике>
    

    Где:

    • --triggers — дамп триггеров.
    • --events — дамп событий.
    • --routines — дамп хранимых процедур и функций.
    • --outputdir — директория для файлов дампа.
    • --rows — количество строк во фрагментах, на которые будут разбиты таблицы. Чем меньше значение, тем больше будет файлов в дампе.
    • --threads — количество используемых потоков. Рекомендуется использовать значение, равное половине свободных ядер на сервере.
    • --compress — сжатие выходных файлов.
  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 Compute Cloud нужно, если:

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

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

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

  1. Создайте виртуальную машину на базе Ubuntu Linux 20.04 со следующими параметрами:

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

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

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

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

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

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

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

    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
    

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

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

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

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

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

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Перед началом работы
  • Перенос данных с использованием сервиса Yandex Data Transfer
  • Перенос данных через создание и восстановление логического дампа
  • Создание дампа
  • (опционально) Создание виртуальной машины в Yandex Cloud и загрузка дампа
  • Восстановление данных
  • Удаление созданных ресурсов