Перейти к содержимому
Последнее обновление

Обзор миграции

Apache Doris поддерживает миграцию через внешние Catalog, инструменты CDC и загрузку файлов. Копирование данных таблиц не переносит транзакции исходной системы, индексы, ограничения, процедуры, права доступа или семантику SQL. Сначала определите, нужен ли вам однократный снимок или непрерывная передача обновлений и удалений.

Способы миграции​

ИсточникОднократная или пакетная миграцияНепрерывная синхронизация
PostgreSQLPostgreSQL JDBC Catalog + INSERT INTO ... SELECTFlink CDC
MySQLMySQL JDBC Catalog + INSERT INTO ... SELECTFlink CDC
ElasticsearchES Catalog + INSERT INTO ... SELECTОтдельно спроектируйте захват изменений, обработку обновлений и удалений
ClickHouse / GreenplumСоответствующий JDBC Catalog или загрузка файловЗависит от исходной системы
Hive / Iceberg / HudiСоответствующий Catalog для lakehouse + INSERT INTO ... SELECTПакетная загрузка по расписанию или подходящий коннектор

Catalog позволяет выполнять запросы к внешним данным; его создание не копирует данные во внутренние таблицы Doris. Пакетный INSERT INTO ... SELECT не обеспечивает непрерывный захват последующих обновлений или удалений.

Основной порядок действий​

  1. Проверьте доступность источника со всех FE/BE, установку драйверов, права на чтение данных источника и права в Doris на создание Catalog и таблиц и загрузку данных.
  2. Обеспечьте стабильный снимок данных источника или окно без операций записи. Запросы через Catalog к нескольким таблицам или в нескольких пакетах не образуют глобально согласованный снимок автоматически.
  3. Проверьте фактическое сопоставление типов с помощью DESC catalog.database.table и спроектируйте целевую таблицу, выбрав подходящую модель данных. Не копируйте напрямую ключи, движки или индексы источника.
  4. Выполните небольшую пробную миграцию. Руководства по MySQL и PostgreSQL содержат воспроизводимые примеры создания таблиц, импорта и результатов запросов.
  5. Импортируйте данные ограниченными диапазонами ключей или времени, фиксируйте обработанные диапазоны и позиции 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 для всех методов.

Рекомендации​

Начните с небольших репрезентативных таблиц, затем подберите размер пакетов и степень параллелизма с учётом измеренного объёма данных, нагрузки от запросов и доступных ресурсов. До переключения проверьте результаты запросов и семантику обновлений, сохраняйте сведения об обработанных диапазонах и результаты проверок.