Amazon Aurora MySQL
Потоковая загрузка Doris является экспериментальной функцией и поддерживается начиная с Doris 4.1.5.
Потоковая загрузка Doris поддерживает Amazon Aurora MySQL-Compatible Edition версий 5.6, 5.7 и 8.0.x. Поскольку Aurora MySQL по умолчанию не включает Binlog, перед синхронизацией данных необходимо выполнить предварительные действия в кластере Aurora: включить и настроить Binlog, создать пользователя синхронизации и задать период хранения Binlog.
Этот документ предназначен для пользователей, планирующих подключить данные Aurora MySQL к потоковой загрузке Doris. В нём описан полный процесс настройки.
Контрольный список предварительных проверок
Перед подключением к Doris убедитесь, что кластер Aurora соответствует следующим условиям:
| Элемент проверки | Ожидаемое значение | Способ проверки |
|---|---|---|
| Включён ли Binlog | log_bin = ON | SHOW VARIABLES LIKE 'log_bin'; |
| Формат Binlog | binlog_format = ROW | SHOW VARIABLES LIKE 'binlog_format'; |
| Образ строки Binlog | binlog_row_image = FULL | SHOW VARIABLES LIKE 'binlog_row_image'; |
| Пользователь синхронизации | Существует выделенная учетная запись с правами репликации | Выполните SHOW GRANTS FOR ...; |
| Период хранения Binlog | Не менее 72 часов | CALL mysql.rds_show_configuration; |
Если выполнены все условия, можно сразу перейти к настройке потоковой загрузки Doris. Если какое-либо условие не выполнено, выполните настройку по приведённым ниже шагам.
Шаг 1: Проверьте текущую конфигурацию Binlog
Подключитесь к экземпляру записи Aurora и выполните следующий SQL, чтобы проверить состояние Binlog:
-- Check if binlog is enabled
SHOW VARIABLES LIKE 'log_bin';
-- Check binlog format
SHOW VARIABLES LIKE 'binlog_format';
-- Check binlog row image
SHOW VARIABLES LIKE 'binlog_row_image';
Выберите дальнейший путь в зависимости от результатов:
- Если выполнены все три условия (
log_bin = ON,binlog_format = ROWиbinlog_row_image = FULL), сразу перейдите к Шагу 4: Создание пользователя синхронизации. - В противном случае перейдите к Шагу 2, чтобы включить Binlog через группу параметров кластера.
Шаг 2: Настройте группу параметров кластера
Aurora MySQL не позволяет напрямую изменять параметры во время выполнения; их необходимо изменять через DB Cluster Parameter Group.
Порядок действий:
-
Войдите в консоль AWS RDS.
-
На левой панели навигации выберите Parameter groups и нажмите Create parameter group.
-
В качестве типа выберите DB Cluster Parameter Group, а затем выберите семейство версий Aurora MySQL, соответствующее целевому кластеру.
-
Отредактируйте созданную группу параметров кластера, найдите
binlog_formatи установите значениеROW:
-
Найдите
binlog_row_imageи установите значениеFULL. -
Нажмите Save Changes, чтобы сохранить изменения.
Ниже приведены основные параметры, которые необходимо изменить:
| Параметр | Рекомендуемое значение | Описание |
|---|---|---|
binlog_format | ROW | Для синхронизации CDC требуется журналирование на уровне строк |
binlog_row_image | FULL | Гарантирует, что Binlog содержит полный образ всех столбцов |
Шаг 3: Примените группу параметров кластера и перезапустите экземпляр
Созданную группу параметров необходимо привязать к целевому кластеру, а экземпляр записи перезапустить, чтобы изменения вступили в силу.
- В консоли RDS выберите целевой кластер Aurora и нажмите Modify.
- В разделе DB cluster parameter group выберите группу параметров кластера, созданную в Шаге 2.
- Установите флажок Apply immediately, чтобы применить изменения немедленно.
- Перезапустите экземпляр записи Aurora, чтобы конфигурация вступила в силу.
Изменение параметра binlog_format требует перезапуска экземпляра записи Aurora. Выполняйте эту операцию в период низкой нагрузки.
После перезапуска снова выполните SQL из Шага 1, чтобы проверить результат. Все три параметра должны соответствовать ожидаемым значениям.
Шаг 4: Создайте пользователя синхронизации
Создайте выделенную учетную запись для потоковой загрузки Doris, чтобы упростить управление привилегиями и аудит.
-
Создайте пользователя:
CREATE USER 'doris_sync'@'%' IDENTIFIED BY '<password>'; -
Предоставьте привилегии, необходимые для синхронизации:
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'doris_sync'@'%';
Описание необходимых привилегий:
| Привилегия | Назначение |
|---|---|
SELECT | Чтение данных бизнес-таблиц на этапе полной загрузки |
REPLICATION SLAVE | Чтение потока Binlog в качестве клиента репликации |
REPLICATION CLIENT | Запрос метаданных, например позиций файлов Binlog |
Шаг 5: Настройте период хранения Binlog
Aurora по умолчанию довольно быстро освобождает Binlog, из-за чего после прерывания может оказаться невозможно возобновить репликацию. Рекомендуется установить период хранения Binlog не менее 72 часов, чтобы двоичные журналы оставались доступными в случае сбоя.
Используйте хранимую процедуру mysql.rds_set_configuration, чтобы задать его:
CALL mysql.rds_set_configuration('binlog retention hours', 72);
Для проверки текущей конфигурации можно использовать следующий SQL:
CALL mysql.rds_show_configuration;
Если этот параметр не задан или задан на слишком короткий срок, в двоичных журналах могут появиться пропуски, что повлияет на способность Doris возобновить репликацию.
Часто задаваемые вопросы
В1: Почему после изменения binlog_format значение по-прежнему не ROW?
О: Aurora MySQL не позволяет напрямую изменять параметры во время выполнения. Необходимо создать и привязать DB Cluster Parameter Group, как описано в Шаге 2, а затем перезапустить экземпляр записи, чтобы изменение вступило в силу. Изменение группы параметров по умолчанию не сработает.
В2: Нужно ли выполнять проверки и настройку на экземпляре записи?
О: Да. Binlog создаётся только на экземпляре записи Aurora, поэтому все проверки SQL и создание пользователя синхронизации следует выполнять на экземпляре записи.
В3: Как влияет слишком большое значение binlog retention hours?
О: Это потребляет больше места в хранилище. Рекомендуется задавать значение с учётом фактического окна восстановления после сбоя; минимум — 72 часа.
Устранение неполадок
| Признак | Возможная причина | Решение |
|---|---|---|
log_bin по-прежнему OFF | Пользовательская группа параметров кластера не привязана или экземпляр записи не перезапущен | Выполните Шаг 3, чтобы привязать группу параметров и перезапустить экземпляр записи |
binlog_format не равен ROW | Изменена группа параметров экземпляра, а не группа параметров кластера | Установите binlog_format = ROW в DB Cluster Parameter Group |
| При синхронизации Doris сообщается, что файл Binlog не найден | binlog retention hours слишком мало, и Binlog уже освобождён | Используйте mysql.rds_set_configuration, чтобы увеличить период хранения как минимум до 72 часов |
| Не удаётся аутентифицировать пользователя синхронизации | Ограничение хоста пользователя или недостаточные привилегии | Убедитесь, что хост пользователя — '%' или IP-адрес исходящего трафика Doris BE, и что предоставлены REPLICATION SLAVE, REPLICATION CLIENT |