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 использует его для дедупликации данных в назначении: существующие строки с тем же ключом будут обновлены, а новые строки будут вставлены.
