Создание соединителя 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>
прежде чем продолжить.
Использованная литература:
- Коннектор Debezium для MySQL
- Коннектор Debezium для MySQL — пример настройки коннектора MySQL
- Коннектор Debezium для MySQL — Создание пользователя
- Файлы журнала базы данных MySQL
- Добро пожаловать в Руководство разработчика Amazon MSK
- Как использовать Kafka Connect — начало работы
- Запуск Kafka Connect