Подключение докера к базе данных MySQL

Я новичок в debezium, я пытаюсь подключить свой коннектор kafka к моей уже существующей базе данных MySQL на моем сервере WAMP локально.

Я запустил zookeeper и kafka в соответствии с учебной документацией, а затем запустил коннектор kafka. В моем почтовом человеке я отправил следующий JSON на свой коннектор kafka, но я продолжаю получать неверный ответ на запрос.

Запустить зоопарк

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

Начать Кафку

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

Запустить коннектор Kafka

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 --link zookeeper:zookeeper --link kafka:kafka debezium/connect:0.7

Используя своего почтальона, я отправил следующее

{ "name": "shopcentra-connector", "config": { "connector.class": "io.debezium.connector.mysql.MySqlConnector", "tasks.max": "1", "database.hostname": "127.0.0.1", "database.port": "3306", "database.user": "root", "database.password": "root", "database.server.id": "5444", "database.server.name": "shopcentra", "database.whitelist": "shopcentra", "database.history.kafka.bootstrap.servers": "kafka:9092", "database.history.kafka.topic": "dbhistory.shopcentra", "include.schema.changes": "true" } }

Мой плохой ответ

{
"error_code": 400,
"message": "Connector configuration is invalid and contains the following 1 error(s):\nUnable to connect: Communications link failure\n\nThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.\nYou can also find the above list of errors at the endpoint `/{connectorType}/config/validate`"
}

person DaviesTobi alex    schedule 21.06.2018    source источник
comment
database.hostname": "127.0.0.1"... Это означает, что ваша база данных работает в контейнере подключения, что не так. Вам нужно использовать свой внешний IP-адрес для хоста   -  person OneCricketeer    schedule 21.06.2018
comment
@cricket_007 cricket_007, но у меня работает wamp на локальном хосте, значит ли это, что я не могу подключиться к своему локальному хосту wamp?   -  person DaviesTobi alex    schedule 21.06.2018
comment
Ваш контейнер имеет собственный сетевой стек. Localhost сам по себе, а не ваша среда wamp. Для получения дополнительной информации stackoverflow.com/questions/40746453/ и stackoverflow.com/a/43541681/2308683   -  person OneCricketeer    schedule 21.06.2018
comment
Альтернативой является перенос вашей базы данных WAMP в контейнер Mysql (или запуск всех Apache, PHP и Mysql в качестве контейнеров).   -  person OneCricketeer    schedule 21.06.2018
comment
@cricket_007 cricket_007 хорошо, как мне перенести мою базу данных wamp в контейнер mysql? и Будут ли изменения, внесенные в этот контейнер, отражаться после закрытия контейнера?   -  person DaviesTobi alex    schedule 21.06.2018
comment
См. раздел документации: Где хранить данные — hub.docker.com/_/mysql ... Вы можете найти существующие данные базы данных, тогда, теоретически, вы должны использовать монтирование тома в этот каталог. Или вы можете использовать mysqldump для экспорта/импорта   -  person OneCricketeer    schedule 21.06.2018


Ответы (1)


Если вы используете Docker, вы можете использовать предварительно настроенный образ MySQL debezium/example-mysql. В качестве альтернативы убедитесь, что вы настраиваете экземпляр с пользователем, которому предоставлены соответствующие разрешения:

GRANT SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT  ON *.* TO 'debezium' IDENTIFIED BY 'dbz';

а затем и для каждой базы данных:

`GRANT ALL PRIVILEGES ON demo.* TO 'debezium'@'%';`
person Anderson Couto    schedule 20.08.2020