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

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

  • Перенос данных с использованием сервиса Yandex Managed Service for Apache Kafka® Connector
  • Необходимые платные ресурсы
  • Создайте кластер и коннектор
  • Проверьте наличие данных в топике кластера-приемника
  • Перенос данных с использованием утилиты MirrorMaker
  • Необходимые платные ресурсы
  • Перед началом работы
  • Настройте конфигурацию MirrorMaker
  • Запустите репликацию
  • Проверьте наличие данных в топике кластера-приемника
  • Удалите созданные ресурсы
  1. Практические руководства
  2. Перемещение данных из Apache Kafka®
  3. Миграция базы данных из стороннего кластера Apache Kafka®

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

Статья создана
Yandex Cloud
Обновлена 8 апреля 2025 г.
  • Перенос данных с использованием сервиса Yandex Managed Service for Apache Kafka® Connector
  • Необходимые платные ресурсы
    • Создайте кластер и коннектор
    • Проверьте наличие данных в топике кластера-приемника
  • Перенос данных с использованием утилиты MirrorMaker
  • Необходимые платные ресурсы
    • Перед началом работы
    • Настройте конфигурацию MirrorMaker
    • Запустите репликацию
    • Проверьте наличие данных в топике кластера-приемника
    • Удалите созданные ресурсы

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

  • С помощью встроенного в Yandex Managed Service for Apache Kafka® MirrorMaker-коннектора.

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

  • С помощью утилиты MirrorMaker 2.0.

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

Оба способа подойдут в том числе для миграции кластера Managed Service for Apache Kafka® с одним хостом в другую зону доступности.

Перенос данных с использованием сервиса Yandex Managed Service for Apache Kafka® ConnectorПеренос данных с использованием сервиса Yandex Managed Service for Apache Kafka® Connector

  1. Создайте коннектор.
  2. Проверьте наличие данных в топике кластера-приемника.

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

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

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

Создайте кластер и коннекторСоздайте кластер и коннектор

Вручную
Terraform
  1. Подготовьте кластер-приемник:

    • Создайте пользователя-администратора с именем admin-cloud.
    • Включите настройку Auto create topics enable.
    • Настройте группы безопасности, если это требуется для подключения к кластеру-приемнику.
  2. Создайте в кластере-источнике пользователя admin-source с правом управления топиками через Admin API.

  3. Убедитесь, что настройки сети, в которой размещен кластер-источник, разрешают подключение к нему из интернета.

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

    • Топики — список топиков, которые нужно перенести. Также можно указать регулярное выражение для выбора топиков. Для переноса всех топиков укажите .*.

    • В блоке Кластер-источник укажите параметры для подключения к кластеру-источнику:

      • Псевдоним — префикс для обозначения кластера-источника в настройках коннектора. По умолчанию source. Топики в кластере-приемнике будут созданы с указанным префиксом.

      • Бутстрап-серверы — разделенный запятыми список FQDN хостов-брокеров кластера-источника с номерами портов, например:

        FQDN1:9091,FQDN2:9091,...,FQDN:9091
        
      • SASL имя пользователя, SASL пароль — имя и пароль созданного ранее пользователя admin-source.

      • SASL механизм — механизм шифрования имени и пароля SCRAM-SHA-512.

      • Протокол безопасности — выберите протокол подключения коннектора:

        • SASL_PLAINTEXT — если к кластеру-источнику подключаются без SSL;
        • SASL_SSL – если к кластеру-источнику подключаются с SSL.
    • В блоке Кластер-приёмник выберите опцию Использовать этот кластер.

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

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

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

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

  5. Скачайте в ту же рабочую директорию файл конфигурации kafka-mirrormaker-connector.tf.

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

    • сеть;
    • подсеть;
    • группа безопасности по умолчанию и правила, необходимые для подключения к кластеру из интернета;
    • кластер-приемник Managed Service for Apache Kafka® с включенной настройкой Auto create topics enable;
    • пользователь-администратор admin-cloud для кластера-приемника;
    • MirrorMaker-коннектор для кластера-приемника.
  6. Укажите в файле kafka-mirrormaker-connector.tf:

    • имя пользователя кластера-источника и пароли для пользователей кластера-источника и кластера-приемника;
    • FQDN хостов-брокеров кластера-источника;
    • псевдонимы кластера-источника и кластера-приемника;
    • шаблон фильтрации для переносимых топиков;
    • версию Apache Kafka®.
  7. Проверьте корректность файлов конфигурации Terraform с помощью команды:

    terraform validate
    

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

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

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

      terraform plan
      

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

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

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

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

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

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

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

  1. Подключитесь к топику кластера-приемника с помощью утилиты kafkacat. К имени топика кластера-источника добавьте префикс source: например, топик mytopic будет перенесен на кластер-приемник как source.mytopic.
  2. Убедитесь, что в консоли отображаются сообщения из топика кластера-источника.

Перенос данных с использованием утилиты MirrorMakerПеренос данных с использованием утилиты MirrorMaker

  1. Настройте конфигурацию MirrorMaker.
  2. Запустите репликацию.
  3. Проверьте наличие данных в топике кластера-приемника.

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

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

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

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

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

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

Вручную
Terraform
  1. Создайте кластер-приемник Managed Service for Apache Kafka®:

    • С пользователем-администратором admin-cloud.
    • С включенной настройкой Auto create topics enable.
  2. Создайте новую ВМ Linux для MirrorMaker в той же сети, к которой подключен кластер-приемник. Для подключения к виртуальной машине с локальной машины пользователя, а не из облачной сети Yandex Cloud, включите публичный доступ при ее создании.

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

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

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

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

  5. Скачайте в ту же рабочую директорию файл конфигурации kafka-mirror-maker.tf.

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

    • сеть;
    • подсеть;
    • группа безопасности по умолчанию и правила, необходимые для подключения к кластеру и виртуальной машине из интернета;
    • кластер Managed Service for Apache Kafka® с включенной настройкой Auto create topics enable;
    • пользователь-администратор Apache Kafka® admin-cloud;
    • виртуальная машина с публичным доступом из интернета.
  6. Укажите в файле kafka-mirror-maker.tf:

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

    terraform validate
    

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

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

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

      terraform plan
      

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

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

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

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

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

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

Выполните дополнительные настройкиВыполните дополнительные настройки

  1. Создайте в кластере-источнике пользователя admin-source с правом управления топиками через Admin API.

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

    1. Установите JDK:

      sudo apt update && sudo apt install --yes default-jdk
      
    2. Скачайте и распакуйте архив Apache Kafka® той же версии, которая установлена на кластере-приемнике. Например, для версии 2.8:

      wget https://archive.apache.org/dist/kafka/2.8.0/kafka_2.12-2.8.0.tgz && \
      tar -xvf kafka_2.12-2.8.0.tgz
      
    3. Установите утилиту kafkacat:

      sudo apt update && sudo apt install --yes kafkacat
      

      Убедитесь, что можете с ее помощью подключиться к кластеру-источнику и кластеру-приемнику через SSL.

  3. Настройте межсетевой экран (firewall) и группы безопасности, если это требуется для подключения MirrorMaker к кластеру-приемнику и кластеру-источнику.

Настройте конфигурацию MirrorMakerНастройте конфигурацию MirrorMaker

  1. Подключитесь к ВМ с MirrorMaker по SSH.

  2. Скачайте SSL-сертификат для подключения к кластеру Managed Service for Apache Kafka®.

  3. В домашней директории создайте каталог mirror-maker для хранения сертификатов Java Keystore и конфигураций MirrorMaker:

    mkdir --parents /home/<домашняя_директория>/mirror-maker
    
  4. Выберите пароль для хранилища сертификатов не короче 6 символов, создайте хранилище и добавьте в него SSL-сертификат для подключения к кластеру:

    sudo keytool --noprompt -importcert -alias YandexCA \
       -file /usr/local/share/ca-certificates/Yandex/YandexInternalRootCA.crt \
       -keystore /home/<домашняя_директория>/mirror-maker/keystore \
       -storepass <пароль_хранилища_сертификатов>
    
  5. Создайте в каталоге mirror-maker файл конфигурации MirrorMaker mm2.properties:

    # Kafka clusters
    clusters=cloud, source
    source.bootstrap.servers=<FQDN_брокера_кластера-источника>:9092
    cloud.bootstrap.servers=<FQDN_брокера_1_кластера-приемника>:9091, ..., <FQDN_брокера_N_кластера-приемника>:9091
    
    # Source and target cluster settings
    source->cloud.enabled=true
    cloud->source.enabled=false
    source.cluster.alias=source
    cloud.cluster.alias=cloud
    
    # Internal topics settings
    source.config.storage.replication.factor=<R>
    source.status.storage.replication.factor=<R>
    source.offset.storage.replication.factor=<R>
    source.offsets.topic.replication.factor=<R>
    source.errors.deadletterqueue.topic.replication.factor=<R>
    source.offset-syncs.topic.replication.factor=<R>
    source.heartbeats.topic.replication.factor=<R>
    source.checkpoints.topic.replication.factor=<R>
    source.transaction.state.log.replication.factor=<R>
    cloud.config.storage.replication.factor=<R>
    cloud.status.storage.replication.factor=<R>
    cloud.offset.storage.replication.factor=<R>
    cloud.offsets.topic.replication.factor=<R>
    cloud.errors.deadletterqueue.topic.replication.factor=<R>
    cloud.offset-syncs.topic.replication.factor=<R>
    cloud.heartbeats.topic.replication.factor=<R>
    cloud.checkpoints.topic.replication.factor=<R>
    cloud.transaction.state.log.replication.factor=<R>
    
    # Topics
    topics=.*
    groups=.*
    topics.blacklist=.*[\-\.]internal, .*\replica, __consumer_offsets
    groups.blacklist=console-consumer-.*, connect-.*, __.*
    replication.factor=<M>
    refresh.topics.enable=true
    sync.topic.configs.enabled=true
    refresh.topics.interval.seconds=10
    
    # Tasks
    tasks.max=<T>
    
    # Source cluster authentication parameters. Comment out if no authentication required
    source.client.id=mm2_consumer_test
    source.group.id=mm2_consumer_group
    source.security.protocol=SASL_PLAINTEXT
    source.sasl.mechanism=SCRAM-SHA-512
    source.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="admin-source" password="<пароль>";
    
    # Target cluster authentication parameters
    cloud.client.id=mm2_producer_test
    cloud.group.id=mm2_producer_group
    cloud.ssl.enabled.protocols=TLSv1.2,TLSv1.1,TLSv1
    cloud.ssl.truststore.location=/home/<домашняя_директория>/mirror-maker/keystore
    cloud.ssl.truststore.password=<пароль_хранилища_сертификатов>
    cloud.ssl.protocol=TLS
    cloud.security.protocol=SASL_SSL
    cloud.sasl.mechanism=SCRAM-SHA-512
    cloud.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="admin-cloud" password="<пароль>";
    
    # Enable heartbeats and checkpoints
    source->target.emit.heartbeats.enabled=true
    source->target.emit.checkpoints.enabled=true
    

    Пояснения к конфигурации MirrorMaker:

    • Выполняется односторонняя репликация (параметры source->cloud.enabled = true, cloud->source.enabled = false).
    • В параметре topics указывается список топиков, которые нужно перенести. Также можно указать регулярное выражение для выбора топиков. Для переноса всех топиков укажите .*. В данной конфигурации реплицируются все топики.
    • Названия топиков в кластере-приемнике совпадают с их названиями в кластере-источнике.
    • Параметр <R> — фактор репликации служебных топиков MirrorMaker. Значение этого параметра не должно превышать меньшего между количеством брокеров в кластере-источнике и количеством брокеров в кластере-приемнике.
    • Параметр <M> — фактор репликации по умолчанию, установленный для топиков в кластере-приемнике.
    • Параметр <T> — количество одновременно работающих процессов MirrorMaker. Рекомендуется указывать не менее 2 для равномерного распределения нагрузки репликации. Подробнее см. в документации Apache Kafka®.

    FQDN брокеров Managed Service for Apache Kafka® можно запросить со списком хостов в кластере.

Запустите репликациюЗапустите репликацию

Запустите MirrorMaker на ВМ командой:

<путь_установки_Apache_Kafka>/bin/connect-mirror-maker.sh /home/<домашняя_директория>/mirror-maker/mm2.properties

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

  1. Подключитесь к топику кластера-приемника с помощью утилиты kafkacat. К имени топика кластера-источника добавьте префикс source: например, топик mytopic будет перенесен на кластер-приемник как source.mytopic.
  2. Убедитесь, что в консоли отображаются сообщения из топика кластера-источника.

Подробнее о работе с сервисом MirrorMaker 2.0 см. в документации Apache Kafka®.

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

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

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

    Важно

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

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

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

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

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

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

Предыдущая
Настройка Kafka Connect для работы с Managed Service for Apache Kafka®
Следующая
Перенос данных между кластерами Managed Service for Apache Kafka® с помощью Yandex Data Transfer
Проект Яндекса
© 2025 ООО «Яндекс.Облако»