Перейти к содержанию

Debezium PostgreSQL CDC

Примеры3B · Общие setup/версии · Фактические проверки (архив рабочего проекта)

Тип материала: учебное практическое упражнение. Выполненные и непроверенные шаги указаны отдельно.

Команды выполняются из examples/processing после общего setup; $labPython — interpreter venv. Runtime и documented expected result различаются.

Зависимости и версии

PG17.6 + Debezium image3.3.1.Final + Kafka4.1. Compose, init SQL, connector. Bundled worker identity узнать GET /; не выдавать его автоматически за reference Connect4.1.

Команды запуска

docker compose up -d
Invoke-RestMethod http://localhost:18083/
& $labPython connect/validate_register.py
docker compose exec kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server kafka:9092 --topic banking.public.payment_fact --from-beginning --max-messages 2
Get-Content sql/cdc-changes.sql | docker compose exec -T postgres psql -U demo -d banking
docker compose exec -T postgres psql -U demo -d banking -c "TABLE payment_fact;"

Тестовые данные

Init table p1=100,p2=200; changes update p1=125/version2, insert p3=50, delete p2. Initial SQL выполняется image только на новом volume; повторный up не обнуляет базу.

Ожидаемый результат

Snapshot даёт op=r rows; затем op=u/c/d и delete tombstone в retained Kafka topic. Current source p1=125,p3=50. Connector value содержит Connect schema/envelope, это не flat event input Python consumer. Проверить snapshot/stream status и source position metadata.

Ограничения и статус проверки

Compose config прошёл CLI, но pull/start/PG replication/connector REST НЕ выполнены. Demo user суперпользователь только локальной базы, не production grants. Нет Oracle runtime и ClickHouse sink implementation; walkthroughA documentary. При повторном эксперименте используйте новый изолированный Compose project после остановки предыдущего, без удаления чужих volumes.

Полный журнал ограничений (архив рабочего проекта) хранит NOT_RUN и failed runtime attempts; их нельзя считать выполненными integration tests.