Настройте Debezium для подключения к данному экземпляру mySQL - PullRequest
0 голосов
/ 26 мая 2020

Допустим, я получу несколько MySQL экземпляров и мне придется передавать данные в реальном времени. Поэтому для этого я запустил несколько служб в контейнере Docker, используя перечисленные ниже команды, которые подключают меня к образцу базы данных инвентаризации, и когда я выполняю любые команды DML в клиенте командной строки MySQL, он может отслеживать эти изменения данных.

Но какие изменения требуются или эквивалентные команды для подключения к фактической базе данных MySQL и передавать то же самое в окне наблюдателя.

docker run -it --rm --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 debezium/zookeeper:1.1

docker run -it --rm --name kafka -p 9092:9092 --link zookeeper:zookeeper debezium/kafka:1.1

docker run -it --rm --name mysql -p 3308:3308 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw debezium/example-mysql:1.1

docker run -it --rm --name mysqlterm --link mysql --rm mysql:5.7 sh -c "exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"debezium""

docker run -it --rm --name connect -p 8083:8083 -e GROUP_ID=1 -e CONFIG_STORAGE_TOPIC=my_connect_configs -e OFFSET_STORAGE_TOPIC=my_connect_offsets -e STATUS_STORAGE_TOPIC=my_connect_statuses --link zookeeper:zookeeper --link kafka:kafka --link mysql:mysql debezium/connect:1.1

curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" localhost:8083/connectors/ -d "{ \"name\": \"inventory-connector\", \"config\": { \"connector.class\": \"io.debezium.connector.mysql.MySqlConnector\", \"tasks.max\": \"1\", \"database.hostname\": \"mysql\", \"database.port\": \"3306\", \"database.user\": \"debezium\", \"database.password\": \"dbz\", \"database.server.id\": \"184054\", \"database.server.name\": \"dbserver1\", \"database.whitelist\": \"inventory\", \"database.history.kafka.bootstrap.servers\": \"kafka:9092\", \"database.history.kafka.topic\": \"dbhistory.inventory\" } }"

docker run -it --rm --name watcher --link zookeeper:zookeeper --link kafka:kafka debezium/kafka:1.1 watch-topic -a -k dbserver1.inventory.customers

Предположим, что MySQL детали подключения, как показано ниже :

Host address of MySQL : XXX.XXX.X.XXX
Databse/Schema : YYYYY
Username : ZZZZZ
Password : PPPPP
port : 3306

Мы будем очень благодарны за любые выводы / объяснения!

1 Ответ

0 голосов
/ 26 мая 2020

Когда вы настраиваете свой коннектор с помощью этого

curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" localhost:8083/connectors/ -d "{ \"name\": \"inventory-connector\", \"config\": { \"connector.class\": \"io.debezium.connector.mysql.MySqlConnector\", \"tasks.max\": \"1\", \"database.hostname\": \"mysql\", \"database.port\": \"3306\", \"database.user\": \"debezium\", \"database.password\": \"dbz\", \"database.server.id\": \"184054\", \"database.server.name\": \"dbserver1\", \"database.whitelist\": \"inventory\", \"database.history.kafka.bootstrap.servers\": \"kafka:9092\", \"database.history.kafka.topic\": \"dbhistory.inventory\" } }"

, вы изменяете его, чтобы включить детали вашей фактической исходной базы данных, например,

curl -i -X PUT -H  "Content-Type:application/json" \
    http://localhost:8083/connectors/source-mysql-01/config \
    -d '{
    "connector.class": "io.debezium.connector.mysql.MySqlConnector",
    "tasks.max": "1",
    "database.hostname": "XXX.XXX.X.XXX",
    "database.port": "3306",
    "database.user": "ZZZZZ",
    "database.password": "PPPPP",
    "database.server.id": "184054",
    "database.server.name": "dbserver1",
    "database.whitelist": "YYYYY",
    "database.history.kafka.bootstrap.servers": "kafka:9092",
    "database.history.kafka.topic": "dbhistory.YYYYY"
}'

Обратите внимание, что я также изменил на a PUT вместо POST, потому что это означает, что вы можете повторно запустить команду, чтобы изменить существующий соединитель с тем же именем (и создать его, если он не существует).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...