Синхронизация CDC PostgreSQL с сопоставлением SQL
Непрерывная загрузка Doris является экспериментальной функцией и поддерживается начиная с Doris 4.1.5.
Синхронизация с сопоставлением SQL реализуется через Job + CDC Stream TVF. Целью является существующая таблица Doris (INSERT INTO tbl SELECT * FROM cdc_stream(...)). SQL в Doris обеспечивает выразительность, необходимую для сопоставления столбцов, фильтрации и преобразования данных, одновременно гарантируя семантику exactly-once. Этот подход подходит для сценариев синхронизации в реальном времени, где данные необходимо обработать перед записью.
Благодаря интеграции возможности чтения Flink CDC Doris считывает журналы изменений (WAL) из PostgreSQL и выполняет полную и инкрементальную синхронизацию из исходной таблицы в целевую. Если вы хотите, чтобы Doris автоматически создавал нижестоящие таблицы и синхронизировал группу таблиц для каждой базы данных, см. CDC PostgreSQL с автоматическим созданием таблиц.
Сценарии использования
- Приём данных одной таблицы в хранилище в реальном времени, если перед записью требуется отбор столбцов, фильтрация или преобразование на основе выражений.
- Целевая таблица Doris уже существует, и вы хотите явно управлять сопоставлением полей с помощью SQL.
- Высокие требования к согласованности, предполагающие семантику exactly-once.
Предварительные условия
Перед созданием задания убедитесь в следующем:
- На стороне PostgreSQL включена логическая репликация. Подробности см. в Руководстве по настройке.
- Текущий пользователь имеет привилегию
Load. - Исходная таблица является таблицей с первичным ключом (в настоящее время поддерживается синхронизация только таблиц с первичным ключом).
- Целевая таблица заранее создана в Doris, и её схема совместима с SQL сопоставления.
Примечания
- Поддерживается семантика exactly-once.
- В настоящее время поддерживается только синхронизация таблиц с первичным ключом.
- Требуется привилегия
Load. - На стороне PostgreSQL должна быть включена логическая репликация. См. Руководство по настройке.
Быстрый старт
Общий рабочий процесс состоит из двух шагов: создание задания непрерывной загрузки и проверка состояния задания.
Шаг 1: создание задания загрузки
Используйте CREATE STREAMING JOB, чтобы создать задание непрерывной загрузки, синхронизирующее public.source_table из PostgreSQL с db1.tbl1 в Doris:
CREATE JOB pg_single_sync
ON STREAMING
DO
INSERT INTO db1.tbl1
SELECT * FROM cdc_stream(
"type" = "postgres",
"jdbc_url" = "jdbc:postgresql://127.0.0.1:5432/postgres",
"driver_url" = "postgresql-42.5.1.jar",
"driver_class" = "org.postgresql.Driver",
"user" = "postgres",
"password" = "postgres",
"database" = "postgres",
"schema" = "public",
"table" = "source_table",
"offset" = "initial"
)
Шаг 2: проверка состояния загрузки
Используйте табличную функцию jobs, чтобы проверить состояние выполнения заданий типа Streaming:
select * from jobs("type"="insert") where ExecuteType = "STREAMING";
Для других распространённых операций (приостановка, возобновление, удаление, просмотр задач и т. д.) см. Обзор непрерывной загрузки.
Справочник параметров
Параметры источника данных
Параметры источника данных настраиваются через TVF cdc_stream(...). Они описывают синхронизируемую таблицу PostgreSQL и поведение чтения.
| Параметр | По умолчанию | Описание |
|---|---|---|
| type | - | Тип источника данных. Укажите postgres. |
| jdbc_url | - | Строка подключения PostgreSQL JDBC. |
| driver_url | - | Путь к jar-файлу драйвера JDBC. Поддерживаются имя файла, локальный абсолютный путь или URL HTTP. Подробнее см. в Обзоре JDBC Catalog. |
| driver_class | - | Имя класса драйвера JDBC. |
| user | - | Имя пользователя базы данных. |
| password | - | Пароль базы данных. |
| database | - | Имя базы данных. |
| schema | - | Имя схемы. |
| table | - | Имя синхронизируемой таблицы. |
| offset | latest | latest: только инкрементальная синхронизация. initial: полная + инкрементальная синхронизация. |
| snapshot_split_size | 40960 | Размер split в строках. При полной синхронизации таблица делится на несколько split для синхронизации. |
| snapshot_parallelism | 1 | Параллелизм этапа полной синхронизации, то есть максимальное количество split, планируемых для одного Task. |
Параметры конфигурации загрузки
Параметры конфигурации загрузки задаются через job_properties задания. Они управляют поведением загрузки и переменными сеанса.
| Параметр | По умолчанию | Описание |
|---|---|---|
| session.* | None | Все переменные сеанса можно настроить в job_properties. Переменные, связанные с загрузкой, см. в Insert Into Select. |
Дополнительные распространённые параметры (например, max_interval) см. в разделе Общие параметры обзора непрерывной загрузки.