Тонкости Kafka Connect и Debezium

Привет! Меня зовут Ильсаф, я инженер данных в MAGNIT OMNI — бизнес-группе ритейлера «Магнит», которая отвечает за развитие омниканального опыта для клиентов. В этой статье я собрал свои практические наблюдения по работе Kafka Connect и Debezium с PostgreSQL: от настройки репликации до мониторинга и бэкфиллинга.

https://habr.com/ru/companies/magnit/articles/1029124/

#kafka #kafka_connect #debezium #cdc #observability

Тонкости Kafka Connect и Debezium

Привет! Меня зовут Ильсаф, я инженер данных в MAGNIT OMNI — бизнес-группе ритейлера «Магнит», которая отвечает за развитие омниканального опыта для клиентов. В этой статье я собрал свои практические...

Хабр

Cказ о том, как мы с Oracle на PostgreSQL переехали

Привет, Хабр! Меня зовут Даша Александрова, я Java‑разработчик. Хочу поделиться опытом миграции данных из Oracle в PostgreSQL без простоя сервисов. Причина миграции — импортозамещение. Теперь немного про сам проект. В его основе — микросервисная архитектура на Java 11/17 и Spring Boot 2/3. В качестве основной базы данных использовалась Oracle с несколькими схемами. В коде сочетаются нативные SQL‑запросы и Hibernate, вся бизнес‑логика живет на уровне приложения — без процедур, триггеров и другой логики в базе. Идентификаторы генерируются через sequence. Проект активно развивается, регулярно выпускаются релизы. Система ориентирована на клиентские приложения — мобильное и веб, при этом нагрузка остается умеренной и не относится к highload‑сценариям. Ключевое нефункциональное требование — выполнить миграцию без простоя системы и без заметного влияния на пользователей . Может возникнуть логичный вопрос: если такие миграции уже делались не раз, почему просто не взять готовое решение? На практике универсального подхода не существует. Где‑то допустим простой на несколько часов, где‑то — нет. В одних системах хватает простого переноса, в других приходится использовать сложные стратегии вроде двойной записи. Многие статьи подробно разбирают инструменты, но их применение в конкретном проекте — это отдельная инженерная задача. К тому же у каждой системы есть свои ограничения и нюансы. Поэтому дальше я разберу конкретный кейс и те решения, которые были приняли по ходу миграции.

https://habr.com/ru/articles/1025336/

#java #postgresql #debezium #cdc #oracle #kafkaconnect #миграция_базы_данных #миграция_данных

Cказ о том, как мы с Oracle на PostgreSQL переехали

Исходные условия и цель переезда Привет, Хабр! Меня зовут Даша Александрова, я Java-разработчик. Хочу поделиться опытом миграции данных из Oracle в PostgreSQL без простоя сервисов. Причина миграции -...

Хабр

[Перевод] Осваиваем replication slots в Postgres: как предотвратить разрастание WAL и другие проблемы в продакшене

Логическая репликация в Postgres редко ломает прод внезапно — чаще она долго и методично копит проблему, пока replication slot удерживает всё больше WAL, потребитель отстаёт, а свободное место на диске начинает таять. В этой статье разбирается именно такая зона риска: как устроена работа replication slots, почему одних базовых настроек здесь недостаточно и какие практики реально помогают держать под контролем WAL, публикации, heartbeats, failover и мониторинг. Материал особенно полезен тем, кто работает с CDC, Debezium и production-инстансами Postgres, где цена ошибки измеряется уже не теорией, а стабильностью системы. Разбор PostgreSQL

https://habr.com/ru/companies/otus/articles/1018444/

#PostgreSQL #replication_slots #логическая_репликация #WAL #CDC #Debezium #pgoutput #failover #мониторинг_Postgres

Осваиваем replication slots в Postgres: как предотвратить разрастание WAL и другие проблемы в продакшене

Содержание Используйте модуль вывода логического декодирования pgoutput Задайте максимальный размер replication slot Включите Heartbeats Используйте публикации на уровне таблиц Используйте фильтры по...

Хабр

Геораспределенное резервирование Postgres при помощи Debezium

Всем привет, меня зовут Николай Голубев, я — техлид из компании HFLabs. Эта статья написана по мотивам моего выступления на конференции

https://habr.com/ru/companies/oleg-bunin/articles/1001862/

#highload #PostgreSQL #базы_данных #высоконагруженные_системы #Debezium #хранение_данных #Kafka #релоцирование

Геораспределенное резервирование Postgres при помощи Debezium

Всем привет, меня зовут Николай Голубев, я — техлид из компании HFLabs. Эта статья написана по мотивам моего выступления на конференции Saint HighLoad++ . Мы с командой развиваем крупнейший в России...

Хабр
Vandaag #Debezium-corvee. Deze logical replication tool pompt op basis van events data over vanuit twee databases naar een derde. Alle databases worden binnen #Rancher als 1 master en 2 slaves in #pods ondergebracht. #Kubernetes brengt die naar eigen inzicht down en daarna weer up. Het correcte replication slot, op basis waarvan Debezium onthoudt waar hij gebleven was, wordt zo bij wijze van balletje-balletje heen en weer geschoven en hij blijkt dan steeds onder het verkeerde bekertje te kijken.

Note to self: do not kill a postgres process running ALTER TABLE in a throwaway database thinking it was the application while running pg_upgrade. It was pg_upgrade, not the app.

The "quick" rollback worked in terms of service (9 minutes of downtime) but it was an operational nightmare:

- outdated internal documentation
- very long Ansible loops
- unexpected errors when starting Debezium connectors that were stopped (why "stop/resume" and not "stop/start"?)
- pg_basebackup error: could not read COPY data: server closed the connection unexpectedly

And you, how's your week so far?

#postgresql #debezium #pg_upgrade #ansible

Паттерн Transactional Outbox на примере двух микросервисов на java

Всем привет! В данной статье будет описан один из возможных вариантов реализации паттерна outbox transactional. План данной статьи такой. Вначале немного теории, а потом на примере двух микросервисов будет показала реализация данного паттерна с помощью debezium и kafka. Данная статья будет полезна для новичков, которые не встречались с данным паттерном. Весь код микросервисов будет доступен по ссылкам. Но вначале немного теории. Самый главный вопрос зачем нужен данный паттерн и какую он решает задачу. Паттерн Outbox – используется в распределенных транзакциях, то есть в транзакциях, которые проходят и затрагивают несколько микровервисов, для обеспечения гарантированной доставки сообщения от одного микросервиса до другого. Данный паттерн используется там, где очень критично чтобы сообщение не потерялось, даже при сбоях в системе. Outbox паттерн получил распространение именно в микросервисной архитектуре, где нет возможности с помощью одной аннотации обеспечить транзакционность какого-то метода и возможный откат всей транзакции в рамках нескольких микросервисов. Теперь перейдем к практике. Допустим у нас имеется два микросервиса: order-servic, в котором клиент заказывает какой-то товар и bank-service, в котором происходит оплата за этот товар. Весь код микросервисов будет доступен по ссылкам. Задача в том, чтобы при заказе товара обязательно произошло списание денег за него или если денег недостаточно или возникла ошибка на стороне банка микросервис по заказам узнал об этом. Для реализации этого паттерна я буду использовать debezium и kafka.

https://habr.com/ru/articles/991934/

#java #паттерны_проектирования #outbox #outboxпаттерн #transactional_outbox #kafkaconnect #debezium

Паттерн Transactional Outbox на примере двух микросервисов на java

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

Хабр

CDC своими руками: Kafka + Debezium в домашней лаборатории

Третья статья цикла о построении CDC-пайплайна с нуля. Сегодня — самое интересное: захватываем изменения из PostgreSQL и отправляем в Kafka. И разбираемся, почему WAL может съесть весь диск, даже если данные не меняются.

https://habr.com/ru/articles/990902/

#kafka #debezium #cdc #devops #data_engineering

CDC своими руками: Kafka + Debezium в домашней лаборатории

Третья статья цикла о построении CDC-пайплайна с нуля. Сегодня — самое интересное: захватываем изменения из PostgreSQL и отправляем в Kafka. И разбираемся, почему WAL может съесть весь диск, даже если...

Хабр

PostgreSQL для CDC-пайплайна: настраиваем logical replication за 30 минут

Вторая статья цикла «CDC Pipeline в домашней лаборатории». В первой мы сделали Telegram-бота для парсинга банковских скриншотов. Теперь подготовим PostgreSQL к тому, чтобы Debezium мог захватывать изменения в реальном времени.

https://habr.com/ru/articles/988114/

#postgresql #cdc #debezium #logical_replication #devops

PostgreSQL для CDC-пайплайна: настраиваем logical replication за 30 минут

Вторая статья цикла «CDC Pipeline в домашней лаборатории». В первой мы сделали Telegram-бота для парсинга банковских скриншотов. Теперь подготовим PostgreSQL к тому, чтобы Debezium мог захватывать...

Хабр
See how Debezium powers row-level change capture while SeaTunnel enhances it with Kafka-free streaming and schema evolution support. https://hackernoon.com/inside-seatunnel-cdcs-debezium-integration-embedded-engine-offsets-and-checkpoints #debezium
Inside SeaTunnel CDC’s Debezium Integration: Embedded Engine, Offsets, and Checkpoints | HackerNoon

See how Debezium powers row-level change capture while SeaTunnel enhances it with Kafka-free streaming and schema evolution support.