#google-cloud-pubsub #dataflow #debezium
#google-cloud-pubsub #поток данных #debezium
Вопрос:
Я ссылаюсь на этот документ для выполнения mysql (установленного на локальном компьютере) для потоковой передачи данных pubsub с использованием debezium connector.
Мой файл свойств выглядит следующим образом
databaseName=testdb
databaseUsername=root
databaseAddress=localhost
databasePort=3306
gcpProject=GCP_project_name
databasePassword=password
whitelistedTables=instance-name.testdb.testtab
singleTopicMode=true
gcpPubsubTopicPrefix=debeziumTest
databaseManagementSystem=mysql
Я уже создал тему в pubsub с именем «debeziumTest».
Но проблема в том, что когда я запускаю sudo mvn exec:java -pl cdc-embedded-connector -Dexec.args="/path/to/properties-file"
, он работает без каких-либо ошибок:
но в pubsub нет данных, загруженных.
Комментарии:
1. как вы узнали, что имя вашего экземпляра называется «instance-name»
2. Это имя хоста моего экземпляра.
3. Не уверен, что вы все еще работаете над этой проблемой, но пока она запущена, вы пытались вносить изменения в свою базу данных MySQL, например, выполнять некоторые вставки / обновления / удаления DML? Был бы заинтересован в вашем ответе. Я столкнулся с той же проблемой.
4. Я бы предложил добавить / настроить файл log4j.properties в src /main /resources, чтобы получить некоторый вывод журнала. Возможно, вы найдете там несколько подсказок.
Ответ №1:
На основании документации обновления таблиц передаются в раздел, соответствующий этому формату — $ {PREFIX} $ {DB_INSTANCE}.$ {DATABASE}.$ {TABLE}
В вашем случае, я считаю, вам следует создать тему с именем — «debeziumTestinstance-name.testdb.testtab»
Возможно, это не единственная проблема, основанная на предупреждениях, которые я вижу в журналах, которыми вы поделились.
Комментарии:
1. Я использую режим с одной темой. Итак, согласно документу, мы должны указать полное название темы в параметре «gcpPubsubTopicPrefix». Упомянутый вами формат названия темы предназначен для режима нескольких тем
2. Мой плохой, не видел опцию режима с одной темой. Я использовал debezium с Kafka Connect и столкнулся с проблемами с названиями тем. Поэтому я подумал, что это может быть и здесь.
3. Dhruv, вы убедились, что binlog включен в базе данных MySQL и внесенные изменения (например, выполнение запроса update или insert в таблице базы данных MySQL) записываются в binlog, чтобы Debezium мог получить изменения?
4. ДА.. все события сохраняются в файлах mysql-bin.
5. перейдите к этой же проблеме. Ребята, есть прогресс в этом?
Ответ №2:
Похоже, проблема связана с вашими таблицами белого списка.
Согласно документации, которую вы должны использовать ${instance}.${database}.${table}
, для вашего данного примера это должно быть whitelistedTables=testdb.databaseName.testTab
(если testTab — ваше имя таблицы)