PostgreSQL
Renta поддерживает загрузку данных из баз данных PostgreSQL с использованием эффективных стратегий репликации, включая захват изменений данных (CDC). Это позволяет синхронизировать данные с минимальной задержкой и нагрузкой на исходную базу данных.
Предварительные требования
Для подключения PostgreSQL к Renta убедитесь в наличии следующего:
- Сетевой доступ.
Разрешите подключения с IP-адресов Renta к вашему экземпляру PostgreSQL. - Права пользователя.
Пользователь базы данных с привилегиямиREPLICATIONиSELECT(скрипты приведены ниже).
Настройка для конкретных вендоров
Для работы WAL-based CDC необходимо включить плагин wal2json. Renta использует wal2json для потоковой передачи изменений из вашей базы данных.
Пожалуйста, следуйте инструкциям ниже, чтобы включить wal2json для вашего провайдера базы данных:
Настройка базы данных
Для репликации данных из PostgreSQL необходимо настроить параметры базы данных и создать пользователя с соответствующими правами. Следующие шаги помогут вам настроить CDC на основе WAL (рекомендуется) и предоставить доступ Renta.
Создание пользователя и предоставление прав
Выполните следующие SQL-команды в вашей базе данных, чтобы создать специального пользователя для Renta и предоставить необходимые права.
-- 1. Создание пользователя
CREATE USER <user_name>
WITH REPLICATION
IN ROLE cloudsqlsuperuser -- Включите эту строку только для Google Cloud SQL
LOGIN PASSWORD '<password>';
-- 2. Разрешение подключения к базе данных
GRANT CONNECT ON DATABASE "<database_name>" TO <user_name>;
GRANT CREATE ON DATABASE "<database_name>" TO <user_name>;
-- 3. Доступ к схеме
GRANT USAGE ON SCHEMA <schema_name> TO <user_name>;
-- 4. Права доступа к таблицам (текущим и будущим)
GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <user_name>;
ALTER DEFAULT PRIVILEGES IN SCHEMA <schema_name>
GRANT SELECT ON TABLES TO <user_name>;
-- 5. Смена владельца таблицы (если требуется)
-- Замените '<schema_name>.<table_name>' на имя вашей конкретной таблицы
ALTER TABLE <schema_name>.<table_name> OWNER TO <user_name>;Настройка уровня WAL (только для CDC)
Для работы WAL-based CDC необходимо включить логическую репликацию в вашем экземпляре PostgreSQL. Если вы планируете использовать Checkpoint-based или Offset/Limit-based репликацию, этот раздел можно пропустить.
-
Откройте файл конфигурации
postgresql.conf. -
Установите параметр
wal_levelв значениеlogical:wal_level = logical -
Перезапустите экземпляр PostgreSQL для применения изменений.
Если вы используете управляемую базу данных (например, AWS RDS или Google Cloud SQL), вы можете изменить этот параметр в консоли управления провайдера. Обычно требуется перезапуск.
После того как вы создали и настроили пользователя базы данных, вы можете перейти к шагу добавления источника в Renta.
Добавление источника PostgreSQL в Renta
Следуйте этим шагам, чтобы добавить PostgreSQL в качестве источника в Renta.
Перейдите в раздел Connections > Sources (Подключения > Источники) в левой боковой панели.

- Нажмите Add source (Добавить источник).
- В каталоге найдите и выберите PostgreSQL в категории Database.
Откроется форма настройки подключения.

Заполните данные подключения:
| Поле | Описание |
|---|---|
| Source name | Отображаемое имя для этого подключения в Renta. |
| Hostname | Введите полное имя хоста сервера PostgreSQL. |
| Port | Введите номер порта (по умолчанию: 5432). |
| Database name | Введите имя базы данных PostgreSQL, к которой вы хотите подключиться. |
| User | Введите имя пользователя для доступа к базе данных PostgreSQL. |
| Password | Введите пароль, связанный с пользователем базы данных. |
Нажмите Save (Сохранить), чтобы завершить.

После сохранения ваш источник PostgreSQL появится в списке источников и будет готов к использованию в пайплайнах.

Настройка пайплайна
После подключения источника PostgreSQL выполните следующие шаги для настройки пайплайна данных.
- Выберите таблицы.
Выберите таблицы, которые вы хотите реплицировать. - Выберите колонки.
Укажите, какие колонки должны быть включены в синхронизацию. - Выберите режим загрузки.
Выберите одну из стратегий репликации, описанных выше.
Стратегии репликации
Renta предлагает три метода репликации, адап тированных под различные размеры таблиц и требования к согласованности.
| Критерий | Offset-based | Checkpoint-based | WAL-based CDC |
|---|---|---|---|
| Поддерживаемые назначения | Всегда | Назначения с поддержкой Merge | Назначения с поддержкой Merge |
| Механизм | Полное чтение (постранично) | Инкрементальное чтение (по курсору) | PostgreSQL WAL (wal2json) |
| Хранение прогресса | Нет (полное чтение) | Курсор (timestamp/ID) | LSN (Log Sequence Number) |
| Поддержка удалений | Да (через перезапись) | Нет | Да (флаг is_delete) |
| Рекомендуемый размер | До 1 млн строк | Любой | Любой |
Offset/limit-based replication
Самый простой метод, который читает таблицу страницами по 10 000 строк. Он не сохраняет состояние между запусками, что означает, что при каждой синхронизации выполняется полное чтение таблицы.
- Подходит для.
Небольших таблиц, где допустима полная перезапись данных. - Примечание.
Хотя этот метод позволяет идентифицировать удаления (путем сравнения снимка источника с пунктом назначения), он неэффективен для больших наборов данных.
Checkpoint-based replication
Инкрементальный метод, который отслеживает прогресс с помощью колонки «контрольной точки» (обычно это метка времени, такая как updated_at, или автоинкрементный ID). Renta загружает только те строки, значение в которых больше последнего записанного чекпоинта.
- Подходит для.
Больших таблиц, где нужно синхронизировать только новые или измененные строки и не требуется отслеживать жесткие удаления (hard deletes). - Требование.
Наличие монотонно возрастающей колонки для использования в качестве курсора.
PostgreSQL WAL-based CDC
Самый продвинутый метод, который использует журнал упреждающей записи PostgreSQL (WAL) для фиксации всех изменений (INSERT, UPDATE, DELETE) практически в реальном времени.
- Подходит для.
Больших, высоконагруженных таблиц, где практически важен захват удалений и минимальная задержка. - Требования.
- Параметр
wal_levelустановлен в значениеlogical. - Включен плагин
wal2json. - Таблицы должны иметь п ервичный ключ (Primary key).
- Параметр
Настройка специфических параметров стратегии
В зависимости от выбранного режима загрузки, необходимо настроить конкретные параметры.
Для Checkpoint-based replication
- Set checkpoint column (Колонка чекпоинта).
Выберите колонку, используемую для отслеживания прогресса репликации. Это должно быть монотонно возрастающее значение (например,created_at,updated_atили автоинкрементныйid). Renta использует это для идентификации новых или измененных строк с момента последней синхронизации. - Set merge key (Ключ слияния).
Выберите уникальный идентификатор для каждой строки (обычно первичный ключ). Renta использует его для дедупликации данных в назначении: существующие строки с тем же ключом будут обновлены, а новые строки будут вставлены.

Для WAL-based CDC
- Выберите PostgreSQL WAL-based CDC.
Выберите этот метод в выпадающем списке Ingestion mode. - Set merge key (Ключ слияния).
Выберите первичный ключ таблицы. Поскольку CDC захватывает все изменения (активности), Renta нуждается в этом ключе для корректного применения операцийUPDATEиDELETEв хранилище назначения, чтобы зеркалировать состояние источника.

Для Offset-based replication
- Выберите Offset/Limit-based Replication.
Выберите этот метод в выпадающем списке Ingestion mode. - Set sorting (grouping) key (Ключ сортировки).
Выберите колонку для определения порядка чтения. Хотя этот метод сканирует таблицу полностью, детерминированный порядок сортировки обеспечивает последовательное перелистывание страниц. Обычно первичный ключ является лучшим выбором.

Планирование синхронизации
После настройки источника PostgreSQL вы можете управлять тем, когда и как часто происходит синхронизация данных. Renta предоставляет гибкие возможности планирования для соответствия требованиям вашего конвейера данных.
Renta поддерживает автоматическое расписание, запуск через API и интеграцию с внешними оркестраторами (Airflow, Dagster, Prefect). Подробнее см. в документации по расписанию.
Ready to get started?
Build your data pipeline today or get a personalized demo. Start free!
Need help?
Get expert support to ensure your project succeeds. We're here to help!
Feature requests?
Help shape our product! Share your ideas for new features and integrations.