Я пытался перехватить mysql изменения в потребителе консоли kafka, следуя этому учебнику
В mysql файле конфигурации my.cnf
, я добавил server-id
как 0
[найдено по этой команде: mysqld --verbose --help
]. Таким образом, при создании соединителя следующим образом:
curl -i -X POST -H "Accept:application/json" \
-H "Content-Type:application/json" http://localhost:8083/connectors/ \
-d '{
"name": "mysql-connector8",
"config": {
"connector.class": "io.debezium.connector.mysql.MySqlConnector",
"database.hostname": "localhost",
"database.port": "3306",
"database.user": "debezium",
"database.password": "dbz",
"database.server.id": 1,
"database.server.name": "tigerhrm",
"database.history.kafka.bootstrap.servers": "localhost:9092",
"database.history.kafka.topic": "dbhistory.demo3" ,
"include.schema.changes": "true",
"tasks.max":1
}
}'
, когда я устанавливаю server.id = 0, как установлено в моем файле my.cnf
, это выдает ошибку, но при изменении любого случайного числа соединитель создается, но дает последующая ошибка:
[2020-02-06 11: 58: 25,190] ИСПОЛЬЗОВАНИЕ ИНФОРМАЦИИ flyDB
(io.debezium.connector. mysql .SnapshotReader: 803) [2020-02- 06 11: 58: 25,191] INFO CREATE TABLE oauth_access_token
(token_id
varchar (255) DEFAULT NULL, token
blob, authentication_id
varchar (255) NOT NULL, user_name
varchar (255) DEFAULT NULL,
client_id
varchar (255) DEFAULT NULL, authentication
blob,
refresh_token
varchar (255) DEFAULT NULL, ПЕРВИЧНЫЙ КЛЮЧ (authentication_id
)) ДВИГАТЕЛЬ = InnoDB DEFAULT CHARSET = latin1 (io.debezium. соединитель. mysql .SnapshotReader: 803) [2020-02-06 11: 58: 25,192] ИНФОРМАЦИЯ Шаг 7: фиксация транзакции (io.debezium.connector. mysql .SnapshotReader: 611) [2020-02-06 11 : 58: 25,193] ИНФОРМАЦИЯ Шаг 8: снятие глобальной блокировки чтения для включения MySQL записи (io.debezium.connector. mysql .SnapshotReader: 625) [2020-02-06 11: 58: 25,193] ИНФОРМАЦИЯ Запись в MySQL таблицы мешают d в общей сложности 00: 00: 00.684 (io.debezium.connector. mysql .SnapshotReader: 635) [2020-02-06 11: 58: 25,193] ОШИБКА Сбой из-за ошибки: прерывание моментального снимка из-за ошибки при последней выполняется 'UNLOCK TABLES': com / mysql / jdbc / CharsetMapping (io.debezium.connector. mysql .SnapshotReader: 162) org. apache .kafka.connect.errors.ConnectException: com / mysql / jdbc / CharsetMapping at io.debezium.connector. mysql .AbstractReader.wrap (AbstractReader. java: 183) в io.debezium.connector. mysql .AbstractReader.failed (AbstractReader. java: 161) в io.debezium. соединитель. mysql .SnapshotReader.execute (SnapshotReader. java: 665) в java .lang.Thread.run (Thread. java: 748) Причина: java .lang.NoClassDefFoundError: com / mysql / jdbc / CharsetMapping на io.debezium.connector. mysql .MySqlValueConverters.charsetFor (MySqlValueConverters. java: 300) на io.debezium.connector. mysql .MySqlValueConverters.converters.contersters.verters.converters. ) в io.debezium.relational.TableSchemaBuilder.createValueConverterFor (TableSchemaBuilde r. java: 330) по адресу io.debezium.relational.TableSchemaBuilder.convertersForColumns (TableSchemaBuilder. java: 259) по адресу io.debezium.relational.TableSchemaBuilder.createKeyGenerator (TableSchemabemen64). .relational.TableSchemaBuilder.create (TableSchemaBuilder. java: 127) в io.debezium.connector. mysql .MySqlSchema.lambda $ applyDdl $ 3 (MySqlSchema. java: 365) в java .lang. forEach (Iterable. java: 75) в io.debezium.connector. mysql .MySqlSchema.applyDdl (MySqlSchema. java: 360) в io.debezium.connector. mysql .SnapshotReader.lambda $ выполнить $ 9 (SnapshotReader. java: 422) в io.debezium.jdb c .JdbcConnection.query (JdbcConnection. java: 389) в io.debezium.jdb c .JdbcConnection.query (JdbcConnection. * 1077 : 344) в io.debezium.connector. mysql .SnapshotReader.execute (SnapshotReader. java: 420) ... еще 1
, где oauth_access_token
- это таблица в моей базе данных [существует несколько дБ]. Проверка состояния разъемов Я получил это:
curl -s "http://localhost:8083/connectors" | jq '.[]' | xargs -I {mysql-connector} curl -s "http://localhost:8083/connectors/mysql-connector/status" | jq -c -M '[.name,.connector.state,.tasks[].state] |
join(":|:")' | column -s : -t | tr -d \" | sort
mysql-connector | RUNNING | FAILED
mysql-connector | RUNNING | FAILED
mysql-connector | RUNNING | FAILED
mysql-connector | RUNNING | FAILED
mysql-connector | RUNNING | FAILED
mysql-connector | RUNNING | FAILED
mysql-connector | RUNNING | FAILED
mysql-connector | RUNNING | FAILED
, последний столбец - это статус их задачи. и, следовательно, никаких изменений в базе данных не обнаружено в topi c, где должна быть создана topi c с именами таблиц, существующих в db. Как решить эту проблему?
Добавить: когда я удаляю эту таблицу из базы данных, возникает ошибка для другой таблицы и она продолжается! Все службы работают на моем локальном компьютере с Ubuntu. .
Любая помощь очень ценится!