Amazon RDS PostgreSQL
Потоковая загрузка Doris является экспериментальной функцией и поддерживается начиная с Doris 4.1.5.
Потоковая загрузка Doris поддерживает синхронизацию данных из Amazon RDS PostgreSQL 14 и выше. Перед запуском задачи синхронизации необходимо включить логическую репликацию (Logical Replication) в экземпляре RDS и завершить настройку пользователя синхронизации, разрешений и Publication.
Документ предназначен для администраторов экземпляров RDS PostgreSQL и описывает предварительные шаги, необходимые для потоковой загрузки Doris.
Предварительный контрольный список
Перед началом настройки подтвердите выполнение следующих условий:
| Пункт проверки | Требование |
|---|---|
| Версия RDS PostgreSQL | 14 и выше |
| Операционные разрешения | Разрешения AWS на изменение групп параметров и перезапуск экземпляра |
| Разрешения базы данных | Разрешения на создание пользователей, выдачу прав и создание Publication |
| Окно обслуживания | Запланировано непиковое окно (изменение параметров логической репликации требует перезапуска экземпляра) |
Обзор процесса настройки
Общий процесс настройки выглядит следующим образом:
- Проверить текущее состояние
rds.logical_replication - Создать и настроить пользовательскую группу параметров (если параметр не включен)
- Применить группу параметров к экземпляру и перезапустить его
- Создать пользователя синхронизации Doris и выдать ему права
- Настроить Publication в соответствии с версией Doris
Шаг 1: Проверка текущей конфигурации
Цель: проверить, включена ли логическая репликация в экземпляре RDS, и определить, требуется ли изменять группу параметров.
После подключения к экземпляру RDS выполните следующий SQL-запрос:
SHOW rds.logical_replication;
Выберите дальнейший путь в зависимости от результата:
| Возвращаемое значение | Значение | Следующий шаг |
|---|---|---|
on | Логическая репликация включена | Перейдите к Шагу 4: Создание пользователя синхронизации |
off | Логическая репликация не включена | Перейдите к Шагу 2 |
Шаг 2: Настройка группы параметров
Цель: создать пользовательскую группу параметров и включить rds.logical_replication.
Действия:
-
Войдите в консоль AWS RDS.
-
В левой панели навигации выберите Parameter groups и нажмите Create parameter group.
-
Выберите семейство версий PostgreSQL, соответствующее целевому экземпляру, и создайте новую группу параметров.
-
Измените группу параметров, найдите
rds.logical_replicationи установите для него значение1:
-
Нажмите Save Changes, чтобы сохранить изменения.
Описание ключевого параметра:
| Параметр | Значение | Описание |
|---|---|---|
rds.logical_replication | 1 | Включает логическую репликацию; эквивалентно установке wal_level в значение logical |
Шаг 3: Применение группы параметров и перезапуск
Цель: привязать новую группу параметров к экземпляру RDS и перезапустить его, чтобы конфигурация вступила в силу.
Действия:
- В консоли RDS выберите целевой экземпляр и нажмите Modify.
- В разделе DB parameter group выберите группу параметров, созданную на Шаге 2.
- Выберите Apply immediately, чтобы немедленно применить изменение.
- Перезапустите экземпляр RDS, чтобы конфигурация вступила в силу.
Для применения изменения параметра rds.logical_replication требуется перезапустить экземпляр RDS. Выполняйте эту операцию в непиковое время.
Шаг 4: Создание пользователя синхронизации
Цель: создать учетную запись базы данных, предназначенную для потоковой загрузки Doris, и выдать необходимые права на чтение и репликацию.
1. Создание пользователя
CREATE USER doris_sync PASSWORD '<password>';
2. Предоставление прав доступа к схеме
Ниже в качестве примера используется схема public. При необходимости замените ее целевой схемой:
GRANT USAGE ON SCHEMA "public" TO doris_sync;
GRANT SELECT ON ALL TABLES IN SCHEMA "public" TO doris_sync;
ALTER DEFAULT PRIVILEGES IN SCHEMA "public" GRANT SELECT ON TABLES TO doris_sync;
3. Предоставление прав на репликацию
GRANT rds_replication TO doris_sync;
Amazon RDS PostgreSQL использует роль rds_replication для выдачи прав на репликацию, а не стандартный атрибут PostgreSQL REPLICATION.
Обзор прав:
| Право | Назначение |
|---|---|
USAGE ON SCHEMA | Разрешает доступ к указанной схеме |
SELECT ON ALL TABLES | Разрешает чтение всех существующих таблиц в схеме |
ALTER DEFAULT PRIVILEGES ... SELECT | Автоматически предоставляет право SELECT для таблиц, добавленных в будущем |
rds_replication | Роль, необходимая для выполнения логической репликации в RDS |
Шаг 5: Настройка Publication
По умолчанию создавать Publication вручную не требуется. Если publication_name не задан, Doris с помощью учетной записи синхронизации создает Publication с именем doris_pub_<job_id> и удаляет его при удалении задания. Поэтому учетной записи синхронизации необходимо разрешение на создание Publication.
Если при создании Streaming Job явно задан publication_name, предварительно создайте Publication с тем же именем. Пользовательский Publication должен включать все исходные таблицы, синхронизируемые заданием, а его сопровождение и удаление выполняет пользователь. Например:
CREATE PUBLICATION doris_pub_custom
FOR TABLE public.orders, public.customers;
При создании задания задайте "publication_name" = "doris_pub_custom". Имя может содержать только строчные буквы, цифры и символы подчеркивания, не может начинаться с цифры и ограничено 63 символами.
FAQ
Вопрос 1: Если SHOW rds.logical_replication; возвращает on, нужно ли перезапускать экземпляр?
Нет. Значение on означает, что логическая репликация уже действует, поэтому можно сразу перейти к Шагу 4: Создание пользователя синхронизации.
Вопрос 2: Можно ли использовать Publication с другим именем?
Можно указать пользовательское имя через publication_name, но Publication необходимо создать до создания задания и убедиться, что она включает все синхронизируемые таблицы.
Вопрос 3: Обязательно ли использовать роль rds_replication?
Да. По соображениям безопасности RDS PostgreSQL не разрешает использовать стандартный атрибут PostgreSQL REPLICATION. Необходимо выдать права с помощью GRANT rds_replication.
Вопрос 4: Обязательно ли создавать Publication вручную?
Если publication_name не указан, Doris автоматически создает и управляет Publication по умолчанию. Предварительно создавать Publication требуется только при использовании пользовательской Publication. Подробнее см. Шаг 5.
Устранение неполадок
| Симптом | Возможная причина | Решение |
|---|---|---|
SHOW rds.logical_replication; по-прежнему возвращает off | Группа параметров не привязана к экземпляру или экземпляр не был перезапущен | Проверьте, использует ли экземпляр новую группу параметров, и перезапустите его |
| Ошибка разрешений при создании пользователя | У текущей учетной записи недостаточно прав | Используйте учетную запись администратора с правом создания пользователей |
GRANT rds_replication возвращает ошибку | У текущей учетной записи нет права выдавать эту роль | Используйте учетную запись rds_superuser или другую учетную запись с правом выдачи этой роли |
| Не удается создать Publication по умолчанию | У учетной записи синхронизации нет права создавать Publication | Выдайте учетной записи синхронизации необходимые права или попросите администратора заранее создать пользовательскую Publication и настроить publication_name |
| Пользовательская Publication не существует | Настроен publication_name, но Publication с таким именем не создана | Создайте Publication согласно инструкциям в Шаге 5 или удалите publication_name, чтобы использовать Publication по умолчанию, управляемую Doris |
| Изменения параметров не вступили в силу | Не выбран параметр Apply immediately или экземпляр не был перезапущен | Повторно выполните Шаг 3 |