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.
-
На левой панели навигации выберите Группы параметров и нажмите Создать группу параметров.
-
Выберите соответствующее семейство версий MySQL и создайте новую группу параметров.
-
Отредактируйте группу параметров, найдите
binlog_formatи установите для него значениеROW:
-
Аналогичным образом найдите
binlog_row_imageи установите для него значениеFULL. -
Нажмите Сохранить изменения.
Ниже приведены параметры, которые необходимо изменить:
| Параметр | Целевое значение | Назначение |
|---|---|---|
binlog_format | ROW | Записывает изменения данных на уровне строк, что требуется для синхронизации CDC |
binlog_row_image | FULL | Записывает полные данные строки до и после каждого изменения |
Шаг 3: Применение группы параметров и перезапуск экземпляра
Цель: привязать новую группу параметров к целевому экземпляру RDS и применить конфигурацию путем перезапуска.
Выполните следующие действия:
- В консоли RDS выберите целевой экземпляр и нажмите Изменить.
- В разделе Группа параметров БД выберите созданную группу параметров.
- Выберите Применить немедленно, чтобы применить изменение сразу.
- Перезапустите экземпляр 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?
Для корректного восстановления операций UPDATE и DELETE потоковой загрузке Doris необходимы полные данные строки до и после каждого изменения. Значения 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 |