Обзор миграции
Apache Doris поддерживает миграцию через внешние Catalog, инструменты CDC и загрузку файлов. Копирование данных таблиц не переносит транзакции исходной системы, индексы, ограничения, процедуры, права доступа или семантику SQL. Сначала определите, нужен ли вам однократный снимок или непрерывная передача обновлений и удалений.
Способы миграции
| Источник | Однократная или пакетная миграция | Непрерывная синхронизация |
|---|---|---|
| PostgreSQL | PostgreSQL JDBC Catalog + INSERT INTO ... SELECT | Flink CDC |
| MySQL | MySQL JDBC Catalog + INSERT INTO ... SELECT | Flink CDC |
| Elasticsearch | ES Catalog + INSERT INTO ... SELECT | Отдельно спроектируйте захват изменений, обработку обновлений и удалений |
| ClickHouse / Greenplum | Соответствующий JDBC Catalog или загрузка файлов | Зависит от исходной системы |
| Hive / Iceberg / Hudi | Соответствующий Catalog для lakehouse + INSERT INTO ... SELECT | Пакетная загрузка по расписанию или подходящий коннектор |
Catalog позволяет выполнять запросы к внешним данным; его создание не копирует данные во внутренние таблицы Doris. Пакетный INSERT INTO ... SELECT не обеспечивает непрерывный захват последующих обновлений или удалений.
Основной порядок действий
- Проверьте доступность источника со всех FE/BE, установку драйверов, права на чтение данных источника и права в Doris на создание Catalog и таблиц и загрузку данных.
- Обеспечьте стабильный снимок данных источника или окно без операций записи. Запросы через Catalog к нескольким таблицам или в нескольких пакетах не образуют глобально согласованный снимок автоматически.
- Проверьте фактическое сопоставление типов с помощью
DESC catalog.database.tableи спроектируйте целевую таблицу, выбрав подходящую модель данных. Не копируйте напрямую ключи, движки или индексы источника. - Выполните небольшую пробную миграцию. Руководства по MySQL и PostgreSQL содержат воспроизводимые примеры создания таблиц, импорта и результатов запросов.
- Импортируйте данные ограниченными диапазонами ключей или времени, фиксируйте обработанные диапазоны и позиции CDC, проверяйте результат, а затем переключайте трафик чтения.
Конфигурация и типы
| Элемент | Что проверить |
|---|---|
| Catalog | Драйверы, адреса подключения, аутентификацию и настройки контроля расположения драйверов; см. JDBC Catalog или ES Catalog |
| Целевая таблица | Модель ключей, секции, бакеты, реплики и порядок применения обновлений |
| Сопоставление типов | Сопоставление зависит от способа импорта, драйвера и версии Doris; сопоставления JDBC отличаются от сопоставлений CDC |
| Временные и двоичные данные | Проверьте часовые пояса, микросекундную точность и сохранение байтов. Некоторые сопоставления JDBC изменились в версии 4.1.5; используйте справочную документацию для установленной версии |
| Инкрементальная синхронизация | Согласование снимка с позицией в журнале, первичные ключи, повторное применение, обновления и удаления |
Проверка и переключение
Для одного и того же снимка источника и ограниченного диапазона сравните количество строк, уникальные ключи, количество значений NULL, суммы числовых значений, минимумы и максимумы. Выборочно сравните точные значения в столбцах с временными метками, десятичными числами, двоичными данными, массивами и полуструктурированными данными. Одного совпадения количества строк недостаточно для подтверждения корректности.
Для непрерывной синхронизации проверьте операции вставки, обновления и удаления, а также задержку и поведение при перезапуске. Переключайте операции чтения приложения только после проверки, сохраняя данные источника и возможность отката.
Ошибки и особенности
- Повторное выполнение пакетного INSERT может привести к дублированию строк, особенно в таблицах Duplicate Key. Перед возобновлением определите стратегию повторного применения данных. Таблица Unique Key не удаляет автоматически строки, удалённые в источнике.
- Изменения в источнике во время выполнения нескольких пакетов могут привести к пропускам или дублированию данных. Используйте согласованный снимок, окно без операций записи или надёжный переход к CDC.
- При наличии неподдерживаемых типов, различий в регистре или изменений точности проверьте внешнюю таблицу с помощью
DESC, выполните явное преобразование и повторите проверку. Не пропускайте несовместимые столбцы без предупреждения. - Синхронный INSERT, асинхронные задания загрузки, Flink и Streaming Jobs используют разные интерфейсы для проверки состояния. Следуйте соответствующей справочной документации по загрузке, а не полагайтесь на
SHOW LOADдля всех методов.
Рекомендации
Начните с небольших репрезентативных таблиц, затем подберите размер пакетов и степень параллелизма с учётом измеренного объёма данных, нагрузки от запросов и доступных ресурсов. До переключения проверьте результаты запросов и семантику обновлений, сохраняйте сведения об обработанных диапазонах и результаты проверок.