BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс Современная архитектура хранилища данных » Использование плагина PostgreSQL pgoutput для сбора данных об изменениях с помощью Debezium в Azure

Использование плагина PostgreSQL pgoutput для сбора данных об изменениях с помощью Debezium в Azure

В этой статье мы вкратце расскажем о том, как работает плагин pgoutput. Я не буду повторять множество деталей и использую контейнерные версии (с помощью Docker Compose) для Kafka connect, Kafka (и Zookeeper), чтобы все было максимально просто. Итак, единственное, что Вам нужно, это Azure PostgreSQL, который Вы можете настроить с помощью различных опций, включая Azure Portal, Azure CLI, Azure PowerShell, ARM.

Ресурсы доступны на GitHub — https://github.com/abhirockzz/debezium-postgres-pgoutput

 

Использование правильного publication.autocreate.mode

При использовании плагина pgoutput важно, чтобы Вы использовали соответствующее значение для publication.autocreate.mode. Если Вы используете all_tables (по умолчанию), Вам нужно убедиться, что публикация создана заранее для конкретной таблицы (таблиц), которую Вы хотите настроить для захвата данных об изменениях. Если публикация не найдена, коннектор попытается создать ее с помощью CREATE PUBLICATION <имя_публикации> ДЛЯ ВСЕХ ТАБЛИЦ, что приведет к неудаче из-за отсутствия разрешений.

Два других варианта работают, как и ожидалось:

  • disabled: необходимо убедиться, что публикация создана заранее. Коннектор не будет пытаться создать публикацию, если при запуске не обнаружится, что она существует - он выбросит исключение и остановится.
  • filtered: вы можете (по желанию) выбрать создание публикации заранее. Если публикация не будет найдена, коннектор создаст новую публикацию для всех таблиц, соответствующих текущей конфигурации фильтра.

 

Все это было описано здесь:

 https://debezium.io/documentation/reference/1.3/connectors/postgresql.html#postgresql-on-azure

 

Предлагаю попробовать разные сценарии

Исходный вариант:

git clone https://github.com/abhirockzz/debezium-postgres-pgoutput && cd debezium-postgres-pgoutput

 

Запустите контейнеры Kafka, Zookeeper и Kafka Connect:

export DEBEZIUM_VERSION=1.2
docker-compose up

 

Первое включение контейнеров может занять некоторое время.

Когда все контейнеры будут запущены, подключитесь к Azure PostgreSQL, создайте таблицу и вставьте в нее данные следующим образом:

psql ​-h <DBNAME>.postgres.database.azure.com -p 5432 -U <DBUSER>@<DBNAME> -W -d postgres --set=sslmode=requirepsql -h abhishgu-pg.postgres.database.azure.com -p 5432 -U abhishgu@abhishgu-pg -W -d postgres --set=sslmode=requireCREATE TABLE inventory (id SERIAL, item VARCHAR(30), qty INT, PRIMARY KEY(id));

 

 

Если для параметра publication.autocreate.mode установлено значение filtered

Это хорошо работает с Azure PostgreSQL - для этого не требуются права суперпользователя, поскольку коннектор создает публикацию для определенной таблицы (таблиц) на основе значений фильтра/*списка.

Обновите файл конфигурации коннектора (pg-source-connector.json), указав в нем сведения о Вашем экземпляре Azure PostgreSQL, а затем создайте коннектор.

Чтобы создать коннектор:

curl -X POST -H "Content-Type: application/json" --data @pg-source-connector.json http://localhost:8083/connectors

 

Обратите внимание на журналы (в терминале docker compose):

Creating new publication 'mytestpub' for plugin 'PGOUTPUT'   [io.debezium.connector.postgresql.connection.PostgresReplicationConnection]

Once the connector starts, check the publications in PostgreSQL:

pubname  | schemaname | tablename
-----------+------------+-----------  
ytestpub | public     | inventory

 

Работает?

Вставьте несколько записей в таблицу inventory:

psql -h <DBNAME>.postgres.database.azure.com -p 5432 -U <DBUSER>@<DBNAME> -W -d postgres --set=sslmode=requireINSERT INTO inventory (item, qty) VALUES ('apples', '100');
INSERT INTO inventory (item, qty) VALUES ('oranges', '42');select * from inventory;

 

Коннектор должен передавать события изменений из PostgreSQL WAL (журнал опережающей записи) в Kafka. Проверьте сообщения в соответствующей теме Kafka:

//exec into the kafka docker container
docker exec -it debezium-postgres-pgoutput_kafka_1 bashcd bin && ./kafka-console-consumer.sh --topic myserver.public.inventory --bootstrap-server kafka:9092 --from-beginnin

 

Вы должны увидеть несколько полезных нагрузок событий журнала изменений (соответствующих двум INSERT).

Да, они достаточно подробные, поскольку схема включена в полезную нагрузку.

Измените publication.autocreate.mode на disabled

Для этого режима нам нужна публикация, созданная заранее. Поскольку у нас уже есть одна (mytestpub), просто используйте ее. Все, что Вам нужно сделать, это обновить publication.autocreate.mode в pg-source-connector.json на disabled.

Создайте коннектор заново:

//delete
curl -X DELETE localhost:8083/connectors/inventory-connector//create curl -X POST -H "Content-Type: application/json" --data @pg-source-connector.json http://localhost:8083/connectors

 

Протестируйте его от конца до конца, выполнив те же шаги, что и в предыдущем разделе, - все должно работать отлично!

Для подтверждения обновите publication.name в конфигурации коннектора на несуществующее. Коннектор не запустится из-за отсутствия публикации (как и ожидалось)

Попробуйте publication.autocreate.mode = all_tables

Установите publication.autocreate.mode на all_tables, publication.name на несуществующее (например, testpub1) и создайте коннектор:

curl -X POST -H "Content-Type: application/json" --data @pg-source-connector.json http://localhost:8083/connectors

 

(как и ожидалось) Он завершится с ошибкой, подобной этой:

....
 INFO Creating new publication 'testpub1' for plugin 'PGOUTPUT' (io.debezium.connector.postgresql.connection.PostgresReplicationConnection:127) ERROR WorkerSourceTask{id=inventory-connector-0} Task threw an uncaught and unrecoverable exception (org.apache.kafka.connect.runtime.WorkerTask:179) io.debezium.jdbc.JdbcConnectionException: ERROR: must be superuser to create FOR ALL TABLES publication ....

 

Обратите внимание, что для создания публикации FOR ALL TABLES необходимо быть суперпользователем - как уже говорилось ранее, CREATE PUBLICATION <publication_name> FOR ALL TABLES; не удалось из-за отсутствия прав суперпользователя.

Как я уже говорил, Вам нужно обойти эту проблему, создав публикацию вручную только для определенных таблиц.

 

Очистка

Для очистки удалите экземпляр Azure PostgreSQL с помощьюaz postgres server delete и удалите контейнеры:

az postgres se​rver delete -g <resource group> -n <server name>docker-compose down -v

 

 

Узнать стоимость решенияЗапросить видео презентацию

← Предыдущая статья
Анализ изменения данных с помощью Debezium и Apache Pinot
Следующая статья →
Дашборд Grafana: мониторинг работы коннектора Debezium - MySQL
Запросить видео презентацию Запросить доступ к демо стенду online Узнать стоимость лицензий

Задать вопрос

loading...

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  • Нашей компанией был реализован проект автоматизации конвейера данных на базе СПО ETL-инструмента Apache NiFi для клиента ООО «Императорский Монетный Двор» в части актуализации данных, передаваемых из Системы Oracle в Anaplan.

  • Компания «Бизон-Трейд» является официальным дилером ведущих мировых производителей сельскохозяйственной техники (Fendt, Valtra, Lemken и др.) на Юге России. Входит в состав агрохолдинга «Бизон», основанного в 1994 году. Имеет 8 филиалов в Краснодарском и Ставропольском краях, Ростовской области.

  • ЭГИС - международная фармацевтическая компания, основанная в 1907 году в Венгрии. Компания имеет представительства более чем в 60 странах мира, в том числе в России. Компания ЭГИС является одним из ведущих производителей дженерических лекарственных средств в Центральной и Восточной Европе. Её деятельность охватывает все звенья производственно-сбытовой фармацевтической цепочки.

  • «Балтийский лизинг» — первая компания в России, получившая лицензию № 0001 от Министерства экономики РФ на лизинговую деятельность, лицензия зарегистрирована 2 сентября 1996 года. «Балтийский лизинг» работает на российском рынке 33 года: компания представлена 79 филиалами по всей стране, сегодня в штате более 1300 сотрудников. За последние десять лет компания профинансировала имущество для 80 000 клиентов.

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.