Amazon Aurora PostgreSQL
Непрерывная загрузка Doris является экспериментальной функцией и поддерживается начиная с Doris 4.1.5.
Непрерывная загрузка Doris поддерживает синхронизацию данных из Amazon Aurora PostgreSQL-Compatible Edition 14 или более поздней версии. Перед синхронизацией на стороне кластера Aurora необходимо включить логическую репликацию (Logical Replication) и настроить необходимые разрешения. Этот документ предназначен для DBA и инженеров по работе с данными и содержит полный набор шагов предварительной настройки.
Контрольный список предварительных условий
Перед началом настройки подтвердите следующую информацию:
| Пункт проверки | Требование |
|---|---|
| Версия Aurora PostgreSQL | 14 или более поздняя |
| Разрешения на операции | Разрешение изменять группы параметров кластера в консоли AWS RDS |
| Разрешения базы данных | Разрешения на создание пользователей, выдачу привилегий и создание Publication |
| Окно обслуживания | Допустим перезапуск экземпляра записи Aurora (после изменения параметров логической репликации требуется перезапуск) |
Процесс настройки
Весь процесс настройки состоит из 5 шагов:
- Проверить текущий статус конфигурации логической репликации
- Настроить группу параметров кластера
- Применить группу параметров кластера и перезапустить экземпляр
- Создать пользователя синхронизации Doris и выдать ему привилегии
- Настроить Publication с учётом версии Doris
Если на шаге 1 выяснится, что логическая репликация уже включена, можно сразу перейти к шагу 4, чтобы создать пользователя синхронизации.
Шаг 1: проверка текущей конфигурации
Назначение: определить, включена ли логическая репликация в кластере Aurora, и решить, требуется ли изменять группу параметров.
Подключитесь к экземпляру записи Aurora и выполните следующий SQL:
SHOW rds.logical_replication;
Выберите дальнейшее действие на основе возвращаемого значения:
| Возвращаемое значение | Значение | Следующее действие |
|---|---|---|
on | Логическая репликация включена | Перейдите к шагу 4: создание пользователя синхронизации |
off | Логическая репликация не включена | Продолжите с шага 2: настройка группы параметров кластера |
Шаг 2: настройка группы параметров кластера
Назначение: создать DB Cluster Parameter Group с включённой логической репликацией для использования кластером Aurora.
Действия:
-
Войдите в консоль AWS RDS.
-
На левой панели навигации выберите Parameter groups и нажмите Create parameter group.
-
Установите тип DB Cluster Parameter Group и выберите соответствующее семейство версий Aurora PostgreSQL.
-
Измените созданную группу параметров кластера, найдите
rds.logical_replicationи установите для неё значение1:
-
Нажмите Save Changes, чтобы сохранить изменения.
Описание ключевого параметра:
| Параметр | Рекомендуемое значение | Описание |
|---|---|---|
rds.logical_replication | 1 | Включает логическую репликацию; 0 означает отключение |
Шаг 3: применение группы параметров кластера и перезапуск
Назначение: привязать созданную группу параметров к целевому кластеру Aurora и применить конфигурацию после перезапуска экземпляра записи.
Действия:
- В консоли RDS выберите целевой кластер Aurora и нажмите Modify.
- В разделе DB cluster parameter group выберите группу параметров кластера, созданную на шаге 2.
- Выберите Apply immediately.
- Перезапустите экземпляр записи Aurora, чтобы применить конфигурацию.
Для применения изменения параметра rds.logical_replication требуется перезапустить экземпляр записи Aurora. Выполняйте эту операцию в часы низкой нагрузки.
Шаг 4: создание пользователя синхронизации
Назначение: создать отдельную учётную запись для непрерывной загрузки Doris и выдать минимально необходимые привилегии для чтения данных и выполнения репликации.
-
Создайте отдельного пользователя:
CREATE USER doris_sync PASSWORD '<password>'; -
Выдайте разрешения на чтение схемы и таблиц (на примере схемы
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; -
Выдайте разрешение на репликацию:
GRANT rds_replication TO doris_sync;
Описание привилегий:
| Привилегия | Назначение |
|---|---|
USAGE ON SCHEMA | Разрешает доступ к указанной схеме |
SELECT ON ALL TABLES | Разрешает чтение данных из всех существующих таблиц схемы |
ALTER DEFAULT PRIVILEGES ... GRANT SELECT | Автоматически выдаёт разрешения на чтение таблиц, созданных позднее в этой схеме |
rds_replication | Роль, необходимая для выполнения логической репликации в Aurora PostgreSQL |
Шаг 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 символами.
Часто задаваемые вопросы
Q1: SHOW rds.logical_replication; возвращает on. Что ещё нужно сделать?
Изменять группу параметров кластера или перезапускать экземпляр не требуется. Сразу перейдите к шагу 4: создание пользователя синхронизации.
Q2: Поддерживаются ли Aurora PostgreSQL 13 и более ранние версии?
Нет. Для непрерывной загрузки Doris требуется Aurora PostgreSQL 14 или более поздняя версия.
Q3: Можно ли использовать Publication с пользовательским именем?
Можно указать пользовательское имя через publication_name, но Publication необходимо создать до создания задания и убедиться, что она включает все синхронизируемые таблицы.
Q4: Обязательно ли использовать учётную запись superuser для синхронизации?
Нет. Если publication_name не указан, Doris автоматически создаёт Publication по умолчанию и управляет ею. Предварительно создавать Publication нужно только при использовании пользовательской Publication.
Устранение неполадок
| Симптом | Возможная причина | Решение |
|---|---|---|
SHOW rds.logical_replication; по-прежнему возвращает off | Новая группа параметров не привязана к кластеру или экземпляр записи не перезапущен | Убедитесь, что DB cluster parameter group переключена на новую группу параметров, и перезапустите экземпляр записи |
| Не удаётся создать пользователя или выдать привилегии | У текущей учётной записи недостаточно привилегий | Войдите с учётной записью, имеющей rds_superuser или эквивалентные привилегии, и выполните операцию |
GRANT rds_replication завершается ошибкой | Текущая версия Aurora слишком старая или кластер не является Aurora PostgreSQL | Обновите до Aurora PostgreSQL 14 или более поздней версии |
| Не удаётся создать Publication по умолчанию | У учётной записи синхронизации нет разрешения на создание Publication | Выдайте учётной записи синхронизации необходимые привилегии или попросите администратора заранее создать пользовательскую Publication и настроить publication_name |
| Пользовательская Publication отсутствует | Настроен publication_name, но Publication с таким именем не создана | Создайте Publication согласно шагу 5 или удалите настройку publication_name |