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

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

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

Запустить Zookepper

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 Connector

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" } }

My Bad Response

{
"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`"
}
database.hostname": "127.0.0.1" ... Это означает, что ваша база данных работает в контейнере подключения, а это не так. Вам необходимо использовать ваш внешний IP-адрес для хоста
OneCricketeer 21.06.2018 16:22

@ cricket_007, но у меня wamp работает на локальном хосте, значит ли это, что я не могу подключиться к моему локальному хосту wamp?

DaviesTobi alex 21.06.2018 16:39

У вашего контейнера есть собственный сетевой стек. Localhost - это сам по себе, а не ваша вамп-среда. Для получения дополнительной информации stackoverflow.com/questions/40746453/… и stackoverflow.com/a/43541681/2308683

OneCricketeer 21.06.2018 16:42

Альтернативой является перенос базы данных WAMP в контейнер Mysql (или запуск всех Apache, PHP и Mysql в качестве контейнеров).

OneCricketeer 21.06.2018 16:43

@ cricket_007 хорошо, как мне перенести мою базу данных wamp в контейнер mysql? и Отразятся ли изменения, которые я вношу в этом контейнере, после его закрытия?

DaviesTobi alex 21.06.2018 16:48

См. Раздел документации: Где хранить данные - hub.docker.com/_/mysql ... Вы можете найти существующие данные базы данных, а затем, теоретически, вы можете использовать подключение тома к этому каталогу. Или вы можете использовать mysqldump для экспорта / импорта

OneCricketeer 21.06.2018 17:48
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
6
818
1

Ответы 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'@'%';`

Другие вопросы по теме