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 |