Создание соединителя Kafka Connect для мониторинга базы данных MySQL AWS RDS в кластере AWS MSK (управляемая потоковая передача для Apache Kafka)

У меня есть сценарий использования, в котором я должен зафиксировать изменение данных в базе данных AWS RDS MySQL через Kafka connect и опубликовать его по теме Kafka. Для Kafka я использую сервис AWS Managed Streaming для Apache Kafka (MSK). Я создал тему. Я просто оставил с соединительной частью, чтобы потребители могли видеть сообщения / события, потребляя тему.

У меня вопрос: как создать соединитель Kafka Connect для мониторинга базы данных MySQL AWS RDS в кластере управляемой потоковой передачи AWS для Apache Kafka (MSK)?

Я следовал Учебному пособию для Debezium 0.9, чтобы добиться этого, используя контейнеры Docker для экземпляра Kafka и AWS RDS. Я хочу добиться этого, используя AWS Managed Streaming для Apache Kafka (MSK) вместо контейнеров Docker. Я просто хочу использовать контейнеры Docker только на стороне потребителя.

Это вообще возможно или мне нужно для AWS ECS или AWS EKS?

1 ответ

Можно создать соединитель Kafka Connect для мониторинга базы данных AWS RDS MySQL с помощью кластера AWS Managed Streaming for Apache Kafka (MSK), выполнив следующие действия:

  • Кластер AWS MSK и база данных AWS RDS MySQL должны находиться в одном AWS VPC.
  • Группа безопасности для кластера AWS MSK должна существовать с правилом входящего трафика для базы данных MySQL AWS RDS с соответствующим портом.
  • Двоичное ведение журнала должно быть включено иbinlog_formatдолжно быть установлено наROWв базе данных AWS RDS MySQL.
  • Пользователь должен быть создан в базе данных AWS RDS MySQL, которая будет использоваться кластером AWS MSK для подключения к базе данных с необходимыми привилегиями, такими какSELECTиREPLICATION CLIENT.
  • Для подключения к кластеру AWS MSK необходимо установить плагин Kafka Connect AWS. Загрузите его какJARфайл из Confluent Hub, а затем скопируйте его в папкуplugin.pathкаталог в установке Kafka Connect.
  • Файл конфигурации соединителя Kafka Connect должен быть создан с помощью.propertiesрасширение с соответствующими свойствами. Пример файла конфигурации приведен ниже:
            name=<CONNECTOR_NAME>
    connector.class=io.debezium.connector.mysql.MySqlConnector
    database.hostname=<RDS_MYSQL_HOSTNAME>
    database.port=<RDS_MYSQL_PORT>
    database.user=<RDS_MYSQL_USERNAME>
    database.password=<RDS MySQL password>
    database.whitelist=<LIST_OF_DATABASES_TO_MONITOR>
    database.server.id=1
    database.server.name=<DB_SERVER_NAME>
    database.history.kafka.bootstrap.servers=<KAFKA_BROKER_ENDPOINTS>
    database.history.kafka.topic=<KAFA_TOPIC_NAME>
    
  • Рабочий Kafka Connect должен быть запущен с помощью следующей команды:bin/connect-distributed.sh config/<CONNECTOR_CONFIGURATION_FILE_NAME>.properties
  • После этого отправьте конфигурацию соединителя Kafka Connect, выполнив следующую команду:curl -X POST -H "Content-Type: application/json" --data @<CONNECTOR_CONFIGURATION_FILE_NAME>.properties http://localhost:8083/connectors

Примечание. Это общее решение, и вы можете изменить его в соответствии со своим вариантом использования. Также не забудьте заменить следующие заполнители: <CONNECTOR_CONFIGURATION_FILE_NAME>, <CONNECTOR_NAME>, <RDS_MYSQL_HOSTNAME>, <RDS_MYSQL_PORT>, <RDS_MYSQL_USERNAME>, <RDS MySQL password>, <LIST_OF_DATABASES_TO_MONITOR>, <DB_SERVER_NAME>, <KAFKA_BROKER_ENDPOINTS>, и <KAFA_TOPIC_NAME>прежде чем продолжить.

Использованная литература:

Другие вопросы по тегам