Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for ClickHouse®
  • Начало работы
    • Все руководства
    • Добавление данных в БД
    • Миграция данных в Managed Service for ClickHouse® средствами ClickHouse®
    • Миграция данных в Managed Service for ClickHouse® при помощи Data Transfer
    • Шардирование таблиц
    • Перешардирование данных в кластере
    • Использование гибридного хранилища
    • Получение данных из Managed Service for Apache Kafka®
    • Получение данных из RabbitMQ
    • Обмен данными с Yandex Data Processing
    • Настройка Yandex Cloud DNS для доступа к кластеру из других облачных сетей
    • Анализ логов Yandex Object Storage при помощи Yandex DataLens
    • Настройка Managed Service for ClickHouse® для Graphite
    • Сохранение потока данных Yandex Data Streams в Managed Service for ClickHouse®
    • Миграция базы данных из Google BigQuery
    • Поставка данных из Managed Service for Apache Kafka® с помощью Yandex Data Transfer
    • Миграция данных из Яндекс Директ с использованием Yandex Cloud Functions, Yandex Object Storage и Yandex Data Transfer
    • Загрузка данных из Yandex Object Storage в Managed Service for ClickHouse® с помощью Yandex Data Transfer
    • Миграция базы данных из Greenplum® в ClickHouse®
    • Миграция базы данных из MySQL® в ClickHouse® с помощью Yandex Data Transfer
    • Асинхронная репликация данных из PostgreSQL в ClickHouse®
    • Загрузка данных из Yandex Managed Service for YDB в Managed Service for ClickHouse® с помощью Yandex Data Transfer
    • Копирование данных из Managed Service for OpenSearch в Managed Service for ClickHouse® с помощью Yandex Data Transfer
    • Ввод данных в системы хранения
    • Использование параметров
    • Примеры создания QL-чартов
    • Веб-аналитика с расчетом воронок и когорт на данных Яндекс Метрики
    • AppMetrica: прямое подключение
    • AppMetrica: экспорт, постобработка и визуализация данных
    • Загрузка данных из Яндекс Метрика в витрину ClickHouse®
    • Yandex Tracker: экспорт и визуализация данных
    • Дашборд сети магазинов из БД ClickHouse®
    • Анализ продаж и локаций пиццерий на данных из БД ClickHouse® и Marketplace
    • Геокодинг с помощью API Яндекс Карт для визуализации в DataLens
    • Импорт данных из Object Storage, обработка и экспорт в Managed Service for ClickHouse®
    • Работа с данными с помощью Query
    • Федеративные запросы к данным с помощью Query
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Yandex Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Обучающие курсы

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

  • Необходимые платные ресурсы
  • Перед началом работы
  • Подготовьте кластер-источник
  • Подготовьте и активируйте трансфер
  • Проверьте работоспособность трансфера
  • Выполните выборку данных в ClickHouse®
  • Удалите созданные ресурсы
  1. Практические руководства
  2. Миграция базы данных из MySQL® в ClickHouse® с помощью Yandex Data Transfer

Миграция базы данных из MySQL® в ClickHouse® с помощью Yandex Data Transfer

Статья создана
Yandex Cloud
Обновлена 17 марта 2025 г.
  • Необходимые платные ресурсы
  • Перед началом работы
  • Подготовьте кластер-источник
  • Подготовьте и активируйте трансфер
  • Проверьте работоспособность трансфера
  • Выполните выборку данных в ClickHouse®
  • Удалите созданные ресурсы

С помощью сервиса Data Transfer вы можете перенести базу данных из кластера-источника MySQL® в ClickHouse®.

Чтобы перенести данные:

  1. Подготовьте кластер-источник.
  2. Подготовьте и активируйте трансфер.
  3. Проверьте работоспособность трансфера.
  4. Выполните выборку данных в ClickHouse®.

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

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

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

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

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

Подготовьте инфраструктуру:

Вручную
Terraform
  1. Создайте кластер-источник Managed Service for MySQL® любой подходящей конфигурации. Для подключения к кластеру с локальной машины пользователя, а не из облачной сети Yandex Cloud, включите публичный доступ к кластеру при его создании.

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

    • Количество хостов ClickHouse® — не меньше 2 (для включения репликации в кластере).
    • Имя базы данных — такое же, как на кластере-источнике.
    • Для подключения к кластеру с локальной машины пользователя, а не из облачной сети Yandex Cloud, включите публичный доступ к кластеру при его создании.
  3. Если вы используете группы безопасности в кластерах, настройте их так, чтобы к кластерам можно было подключаться из интернета:

    • Managed Service for MySQL®.
    • Managed Service for ClickHouse®.
  1. Если у вас еще нет Terraform, установите его.

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

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

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

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

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

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

    • параметры кластера-источника Managed Service for MySQL®, которые будут использоваться как параметры эндпоинта-источника:

      • source_mysql_version — версия MySQL®;
      • source_db_name — имя базы данных MySQL®, которое будет использоваться как имя базы данных Managed Service for ClickHouse®;
      • source_user и source_password — имя и пароль пользователя-владельца базы данных.
    • параметры кластера-приемника Managed Service for ClickHouse®, которые будут использоваться как параметры эндпоинта-приемника:

      • target_user и target_password — имя и пароль пользователя-владельца базы данных.
  7. Проверьте корректность файлов конфигурации Terraform с помощью команды:

    terraform validate
    

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

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

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

      terraform plan
      

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

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

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

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

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

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

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

  1. Если вы создавали инфраструктуру вручную, подготовьте кластер-источник.

  2. Подключитесь к кластеру-источнику Managed Service for MySQL®.

  3. Наполните базу тестовыми данными.

    1. Создайте таблицу x_tab:
    CREATE TABLE x_tab
    (
        id INT,
        name TEXT,
        PRIMARY KEY (id)
    );
    
    1. Заполните таблицу данными:
    INSERT INTO x_tab (id, name) VALUES
        (40, 'User1'),
        (41, 'User2'),
        (42, 'User3'),
        (43, 'User4'),
        (44, 'User5');
    

Подготовьте и активируйте трансферПодготовьте и активируйте трансфер

Вручную
Terraform
  1. Создайте эндпоинт для источника:

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

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

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

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

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

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

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

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

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

  1. Укажите в файле data-transfer-mmy-mch.tf для переменной transfer_enabled значение 1.

  2. Проверьте корректность файлов конфигурации Terraform с помощью команды:

    terraform validate
    

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

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

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

      terraform plan
      

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

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

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

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

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

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

Проверьте работоспособность трансфераПроверьте работоспособность трансфера

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

  2. Убедитесь, что в базу данных Managed Service for ClickHouse® перенеслись данные из кластера-источника Managed Service for MySQL®:

    1. Подключитесь к кластеру с помощью clickhouse-client.

    2. Выполните запрос:

      SELECT * FROM <имя_базы_данных_ClickHouse®>.x_tab
      

      Результат:

      ┌─id─┬─name──┬─__data_transfer_commit_time─┬─__data_transfer_delete_time─┐
      │ 40 │ User1 │         1661952756538347180 │                           0 │
      │ 41 │ User2 │         1661952756538347180 │                           0 │
      │ 42 │ User3 │         1661952756538347180 │                           0 │
      │ 43 │ User4 │         1661952756538347180 │                           0 │
      │ 44 │ User5 │         1661952756538347180 │                           0 │
      └────┴───────┴─────────────────────────────┴─────────────────────────────┘
      

      Таблица также содержит столбцы с временными метками __data_transfer_commit_time и __data_transfer_delete_time.

  3. Удалите строку с id 41 и измените с id 42 в таблице x_tab базы-источника MySQL®:

    1. Подключитесь к кластеру-источнику Managed Service for MySQL®.

    2. Выполните запросы:

      DELETE FROM x_tab WHERE id = 41;
      UPDATE x_tab SET name = 'Key3' WHERE id = 42;
      
  4. Убедитесь, что в таблице x_tab на приемнике ClickHouse® отобразились изменения:

    SELECT * FROM <имя_базы_данных_ClickHouse®>.x_tab WHERE id in (41,42);
    

    Результат:

    ┌─id─┬─name──┬─__data_transfer_commit_time─┬─__data_transfer_delete_time─┐
    │ 41 │ User2 │         1661952756538347180 │                           0 │
    │ 42 │ User3 │         1661952756538347180 │                           0 │
    └────┴───────┴─────────────────────────────┴─────────────────────────────┘
    ┌─id─┬─name─┬─__data_transfer_commit_time─┬─__data_transfer_delete_time─┐
    │ 41 │ ᴺᵁᴸᴸ │         1661953256000000000 │         1661953256000000000 │
    └────┴──────┴─────────────────────────────┴─────────────────────────────┘
    ┌─id─┬─name─┬─__data_transfer_commit_time─┬─__data_transfer_delete_time─┐
    │ 42 │ Key3 │         1661953280000000000 │                           0 │
    └────┴──────┴─────────────────────────────┴─────────────────────────────┘
    

Выполните выборку данных в ClickHouse®Выполните выборку данных в ClickHouse®

На приемнике ClickHouse® с включенной репликацией для воссоздания таблиц используются движки ReplicatedReplacingMergeTree и ReplacingMergeTree. В каждую таблицу автоматически добавляются столбцы:

  • __data_transfer_commit_time — время изменения строки на это значение, в формате TIMESTAMP;

  • __data_transfer_delete_time — время удаления строки в формате TIMESTAMP, если строка удалена в источнике. Если строка не удалялась, то устанавливается значение 0.

    Столбец __data_transfer_commit_time необходим для работы движка ReplicatedReplacedMergeTree. Если запись удаляется или изменяется, в таблицу вставляется новая строка со значением в этом столбце. Запрос по одному первичному ключу возвращает несколько записей с разными значениями в столбце __data_transfer_commit_time.

В статусе трансфера Реплицируется данные в источнике могут добавляться или удаляться. Чтобы обеспечить стандартное поведение команд SQL, когда первичный ключ указывает на единственную запись, дополните запросы к перенесенным таблицам в ClickHouse® конструкцией с фильтром по столбцу __data_transfer_delete_time. Например, для таблицы x_tab:

SELECT * FROM <имя_базы_данных_ClickHouse®>.x_tab FINAL
WHERE __data_transfer_delete_time = 0;

Для упрощения запросов SELECT создайте представление с фильтром по столбцу __data_transfer_delete_time и обращайтесь к нему. Например, для таблицы x_tab:

CREATE VIEW x_tab_view AS SELECT * FROM <имя_базы_данных_ClickHouse®>.x_tab FINAL
WHERE __data_transfer_delete_time == 0;

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

Примечание

Перед тем как удалить созданные ресурсы, деактивируйте трансфер.

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

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

    Важно

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

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

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

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

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

ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc.

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

Предыдущая
Миграция базы данных из Greenplum® в ClickHouse®
Следующая
Асинхронная репликация данных из PostgreSQL в ClickHouse®
Проект Яндекса
© 2025 ООО «Яндекс.Облако»