Amazon RDS MySQL
Потоковая загрузка Doris является экспериментальной функцией и поддерживается начиная с Doris 4.1.5.
Потоковая загрузка Doris поддерживает синхронизацию данных из Amazon RDS MySQL. Совместимые версии включают MySQL 5.6, 5.7 и 8.0.x. Перед запуском задачи синхронизации необходимо убедиться, что в экземпляре RDS включён Binlog и журналы изменений записываются в правильном формате.
Этот документ предназначен для пользователей, которым необходимо синхронизировать данные из Amazon RDS MySQL в Doris посредством потоковой загрузки (CDC). В нём приведены все предварительные настройки в порядке их выполнения.
Контрольный список предварительных условий
Перед началом работы подтвердите выполнение следующих условий:
| Проверяемый параметр | Ожидаемое значение | Описание |
|---|---|---|
log_bin | ON | Binlog включён |
binlog_format | ROW | Изменения записываются в построчном режиме |
binlog_row_image | FULL | Записывается полный образ строки |
| Пользователь синхронизации | Создан | Имеет привилегии SELECT, REPLICATION SLAVE и REPLICATION CLIENT |
| Срок хранения Binlog | Не менее 72 часов | Предотвращает преждевременную очистку журналов, которая может прервать синхронизацию |
Если какое-либо из условий не выполнено, настройте их по одному, следуя приведённым ниже шагам.
Шаг 1: Проверка текущей конфигурации Binlog
Цель: проверить текущее состояние Binlog в экземпляре RDS и определить, требуется ли изменить группу параметров.
После подключения к экземпляру RDS выполните следующий SQL-код:
-- 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 и 3.
Шаг 2: Создание и настройка группы параметров
Цель: создать пользовательскую группу параметров в консоли AWS и настроить параметры, связанные с Binlog, в соответствии со значениями, необходимыми для потоковой загрузки Doris.
Выполните следующие действия:
-
Войдите в консоль AWS RDS.
-
На левой панели навигации выберите Parameter groups и нажмите Create parameter group.
-
Выберите соответствующее семейство версий MySQL и создайте новую группу параметров.
-
Отредактируйте группу параметров, найдите
binlog_formatи установите значениеROW:
-
Аналогично найдите
binlog_row_imageи установите значениеFULL. -
Нажмите Save Changes, чтобы сохранить изменения.
Параметры, которые необходимо изменить, приведены ниже:
| Параметр | Целевое значение | Назначение |
|---|---|---|
binlog_format | ROW | Записывает изменения данных на уровне строк, что требуется для синхронизации CDC |
binlog_row_image | FULL | Записывает полные данные строки до и после каждого изменения |
Шаг 3: Применение группы параметров и перезапуск экземпляра
Цель: привязать новую группу параметров к целевому экземпляру RDS и применить конфигурацию посредством перезапуска.
Выполните следующие действия:
- В консоли RDS выберите целевой экземпляр и нажмите Modify.
- В разделе DB parameter group выберите только что созданную группу параметров.
- Выберите Apply immediately, чтобы применить изменение немедленно.
- Перезапустите экземпляр RDS, чтобы конфигурация вступила в силу.
Для применения изменения параметра binlog_format требуется перезапустить экземпляр RDS. Выполняйте эту операцию в непиковые часы.
Шаг 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
Цель: по умолчанию Amazon RDS MySQL удаляет двоичные журналы как можно скорее. Рекомендуется установить срок хранения Binlog не менее 72 часов, чтобы файлы Binlog, используемые для репликации, оставались доступными в случае сбоя.
Используйте хранимую процедуру mysql.rds_set_configuration, чтобы задать срок хранения:
CALL mysql.rds_set_configuration('binlog retention hours', 72);
Если этот параметр не задан или задан слишком короткий интервал, в двоичном журнале могут появиться пропуски, что повлияет на способность Doris возобновить репликацию.
Часто задаваемые вопросы (FAQ)
В1: Нужно ли обязательно перезапускать экземпляр после изменения binlog_format?
Да. binlog_format является статическим параметром, поэтому для применения изменения необходимо перезапустить экземпляр RDS. Выполняйте эту операцию в непиковые часы.
В2: Почему binlog_row_image необходимо установить в FULL?
Потоковой загрузке Doris нужны полные данные строки до и после каждого изменения, чтобы правильно восстановить операции UPDATE и DELETE. Значения MINIMAL или NOBLOB приведут к ошибкам синхронизации или неполным данным.
В3: Можно ли использовать одну и ту же группу параметров для нескольких экземпляров RDS?
Да. Несколько экземпляров RDS одного семейства версий могут использовать одну группу параметров, если им требуется одинаковая конфигурация Binlog.
В4: Можно ли установить более длительный срок хранения Binlog?
Да. Параметр binlog retention hours поддерживает значения от 1 до 168 часов (до 7 дней). Более длительный срок хранения увеличивает окно восстановления, но занимает больше места в хранилище.
Устранение неполадок
| Симптом | Возможная причина | Решение |
|---|---|---|
SHOW VARIABLES LIKE 'log_bin' возвращает OFF | Для экземпляра не включено автоматическое резервное копирование, поэтому Binlog не включён | Включите автоматическое резервное копирование для экземпляра в консоли RDS; после этого Binlog будет включён автоматически |
После изменения binlog_format по-прежнему имеет значение MIXED или STATEMENT | Экземпляр не был перезапущен или привязана неправильная группа параметров | Убедитесь, что привязана новая группа параметров, затем перезапустите экземпляр |
Синхронизация Doris сообщает об ошибке binary log not found | Binlog был очищен | Увеличьте значение binlog retention hours и перезапустите задачу синхронизации Doris |
| Пользователь синхронизации не может подключиться | Неверно задан белый список хостов или пароль | Проверьте, соответствует ли квалификатор хоста в 'doris_sync'@'%' исходящему IP-адресу узла Doris |
| Ошибки недостаточных привилегий | Отсутствуют такие привилегии, как REPLICATION SLAVE | Повторно выполните оператор GRANT из шага 4 |