Разъем Debezium для MySQL.Тема истории БД отсутствует - PullRequest
0 голосов
/ 22 января 2019

Я использую коннектор debezium для захвата изменений из базы данных MySQL и перемещения его в Kafka. Я использую Docker. Контейнер для MySQL, другой для коннектора и еще один для Kafka.

Когда я останавливаю docker (docker-compose down) и запускаю docker еще раз, я обычно получаю следующую ошибку:

org.apache.kafka.connect.errors.ConnectException: The db history topic is missing. You may attempt to recover it by reconfiguring the connector to SCHEMA_ONLY_RECOVERY

Я прочитал решение этой проблемы, которое указано на официальной странице:

https://debezium.io/blog/2018/03/16/note-on-database-history-topic-configuration/

Но я следовал этим шагам и думаю, что моя конфигурация в порядке:

log.retention.bytes = -1
log.retention.hours = 168       
log.retention.minutes = null
log.retention.ms = -1

Обратите внимание, что если я установлю log.retention.ms на -1, то log.retention.minutes и log.retention.hours не будут использоваться (как объясняется в официальной документации), тогда я решил проблемы с размером хранения и временем хранения.

Итак, кто-нибудь знает, почему я получаю эту ошибку?

Edit: Я использую версию 0.8.

Тогда это часть окончательной университетской работы, я думаю, что не могу поделиться полным файлом docker-compose (извините), прежде чем опубликовать его в моем университете, но я могу показать вам важные вещи, связанные с этим проблема. Я не думаю, что это проблема конфигурации, потому что у меня нет ничего особенного в моем docker-compose.

mysql:
    image: mysql/5.7:configured (Little changes like enabling queries...)
environment:
     - MYSQL_ROOT_PASSWORD=debezium
     - MYSQL_USER=mysqluser
     - MYSQL_PASSWORD=mysqlpw
    volumes:
     - "sql_Data:/var/lib/mysql"
     - "sql_LogError:/var/log/mysql"

kafka:
    image: debezium/kafka:0.8
    depends_on:
     - zookeeper
    environment:
     - HOST_NAME=xxxx
     - ADVERTISED_HOST_NAME=xxxx
     - ZOOKEEPER_CONNECT=zookeeper:2181
     - KAFKA_CREATE_TOPICS="events:1:1"
     - KAFKA_LOG_RETENTION_MS=-1
    volumes:
          - "kafka_Data:/kafka/data" 
          - "kafka_Log:/kafka/logs"
          - "kafka_Conf:/kafka/config"

connect:
    image: debezium/connect:0.8
    depends_on:
     - zookeeper
     - kafka
     - mysql
    environment:
     - HOST_NAME=xxxx
     - ADVERTISED_HOST_NAME=xxxx
     - BOOTSTRAP_SERVERS=xxxx:9092
     - GROUP_ID=1
     - CONFIG_STORAGE_TOPIC=my_connect_configs
     - OFFSET_STORAGE_TOPIC=my_connect_offsets
     - STATUS_STORAGE_TOPIC=my_connect_statuses
volumes: 
  sql_Data:
  sql_LogError:
  kafka_Data:
  kafka_Log:
  kafka_Conf:

А остальные части - это только сети или не относящиеся к делу вещи.

1 Ответ

0 голосов
/ 10 апреля 2019

Наконец, после многих дней борьбы с этой проблемой я нашел причину проблемы и ее решение.

В документации по изображению debezium / zookeeper есть ошибки.Как вы видите по этой ссылке:

ссылка на образ debezium / zookeeper в dockerHub

документация содержит 3 тома для сохранения всех данных, необходимых zookeeper.Путь к этим томам установлен:

  1. / zookeeper / data
  2. / zookeeper / logs
  3. / zookeeper / conf

Проблема здесь в том, что второй не так.Согласно его Dockerfile путь ко второму, который используется для сохранения журнала транзакций, должен быть:

  • / zookeeper / txns

, который я покажу в следующемПредставьте себе снимок своего Dockerfile.

enter image description here

...