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.
-
На левой панели навигации выберите Группы параметров и нажмите Создать группу параметров.
-
Выберите семейство версий PostgreSQL, соответствующее целевому экземпляру, и создайте новую группу параметров.
-
Измените группу параметров, найдите
rds.logical_replicationи установите для него значение1:
-
Нажмите Сохранить изменения.
Описание ключевого параметра:
| Параметр | Значение | Описание |
|---|---|---|
rds.logical_replication | 1 | Включает логическую репликацию; эквивалентно установке wal_level в значение logical |
Шаг 3: Применение группы параметров и перезапуск
Цель: привязать новую группу параметров к экземпляру RDS и перезапустить его, чтобы конфигурация вступила в силу.
Шаги:
- В консоли RDS выберите целевой экземпляр и нажмите Изменить.
- В разделе Группа параметров БД выберите группу параметров, созданную на шаге 2.
- Выберите Применить немедленно, чтобы сразу применить изменение.
- Перезапустите экземпляр 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, на которую подписывается Doris.
Выполните следующий SQL-запрос:
CREATE PUBLICATION dbz_publication FOR ALL TABLES;
В настоящее время Doris поддерживает только Publication с именем dbz_publication, и ее необходимо создать с параметром FOR ALL TABLES. Пользовательские имена Publication и указание только части таблиц пока не поддерживаются.
Примечание: Если пользователь синхронизации имеет привилегии суперпользователя, например роль
rds_superuser, Doris автоматически создаст эту Publication при запуске задачи, поэтому вручную выполнять этот шаг не нужно.
FAQ
В1: Если SHOW rds.logical_replication; возвращает on, нужно ли все равно перезапускать экземпляр?
Нет. Значение on означает, что логическая репликация уже действует, поэтому можно сразу перейти к шагу 4: Создание пользователя синхронизации.
В2: Можно ли использовать Publication с другим именем?
Нет. В настоящее время Doris поддерживает только Publication с именем dbz_publication, и ее необходимо создать с параметром FOR ALL TABLES.
В3: Обязательно ли использовать роль rds_replication?
Да. По соображениям безопасности RDS PostgreSQL не разрешает использовать стандартный атрибут PostgreSQL REPLICATION. Необходимо предоставить привилегии с помощью GRANT rds_replication.
В4: Обязательно ли создавать Publication вручную?
Не обязательно. Если пользователь синхронизации имеет привилегии суперпользователя, например rds_superuser, Doris автоматически создаст dbz_publication, поэтому шаг 5 можно пропустить.
Устранение неполадок
| Симптом | Возможная причина | Решение |
|---|---|---|
SHOW rds.logical_replication; по-прежнему возвращает off | Группа параметров не привязана к экземпляру или экземпляр не был перезапущен | Проверьте, использует ли экземпляр новую группу параметров, и перезапустите его |
| При создании пользователя возникает ошибка прав доступа | У текущей учетной записи недостаточно привилегий | Используйте учетную запись администратора с правом создания пользователей |
GRANT rds_replication возвращает ошибку | Текущая учетная запись не имеет права предоставлять эту роль | Используйте учетную запись rds_superuser или другую учетную запись с правом выдачи этой роли |
| Задача Doris сообщает, что Publication не существует | dbz_publication не создана или недостаточно привилегий | Вручную выполните шаг 5 или предоставьте пользователю синхронизации привилегии суперпользователя |
| Изменения параметров не вступают в силу | Не выбран параметр Применить немедленно или экземпляр не был перезапущен | Повторно выполните шаг 3 |