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.