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

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

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

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

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

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

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

  1. Проверьте доступность соединения с каждого FE/BE, развёртывание драйверов, права на чтение исходных данных и права в Doris на создание каталогов и таблиц и загрузку данных.
  2. Обеспечьте стабильный снимок исходных данных или период без операций записи. Запросы через каталог к разным таблицам или в рамках разных пакетов не образуют глобально согласованный снимок автоматически.
  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 для всех способов.

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

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