Облачная платформаAdvanced

Сравнение данных (Сравнение элементов миграции)

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

В этом разделе описывается, как compare migration items, чтобы проверить наличие различий между исходными и целевыми базами данных. Сравнивая объекты миграции, вы можете определить оптимальное время миграции сервиса, чтобы минимизировать простой сервиса.

Сценарии сравнения

Вы можете сравнивать объекты миграции по различным измерениям:

  • Сравнение на уровне объектов: позволяет сравнивать базы данных, индексы, таблицы, представления, хранимые процедуры и функции, а также правила сортировки таблиц. Рекомендуется выполнять сравнение после завершения полной миграции.
  • Сравнение на уровне данных классифицируется на сравнение строк и сравнение значений.
    • Сравнение строк: позволяет сравнивать количество строк в таблицах, подлежащих миграции. Этот метод сравнения рекомендуется, поскольку он быстрый.
    • Сравнение значений: позволяет проверить согласованность данных в мигрированной таблице. Процесс сравнения относительно медленный.
    • Сравнение с выборкой: при большом объёме данных сравнение количества строк и значений занимает много времени. Рекомендуется использовать сравнение с выборкой. Вы можете задать подходящее отношение выборки, чтобы ускорить процесс сравнения.
  • Периодическое сравнение: DRS периодически сравнивает количество строк или объектов в таблице исходной базы данных с таблицей целевой базы данных и отображает результаты сравнения. Чтобы периодически сравнивать строки или объекты, включите comparison policy.

При проверке согласованности данных сначала сравните количество строк. Если количество строк несоответствует, затем можно сравнить данные в таблице, чтобы определить несоответствующие данные.

Ограничения сравнения

  • Создать задачу сравнения вручную можно только в фазе инкрементального выполнения задачи.
  • Во время сравнения элементы сравнения чувствительны к регистру. Если одна из баз данных (исходная или целевая) нечувствительна к регистру, а другая чувствительна, результат сравнения может быть несогласованным.
  • После завершения полной задачи миграции DRS автоматически создаёт задачи сравнения на уровне объектов и строк. Если во время сравнения данных выполняются операции с данными в исходной базе данных, результаты сравнения могут быть несогласованными.
  • Если над исходной базой данных выполнялись операции DDL, необходимо повторно сравнить объекты, чтобы обеспечить точность результатов сравнения.
  • Если данные в целевой базе данных изменяются отдельно, результаты сравнения могут быть несогласованными.
  • Если кодировка символьного типа исходной базы данных аномальна, драйвер базы данных преобразует символьный тип в аномальную кодовую точку во время миграции или сравнения DRS. В результате значения могут совпадать, но байты могут быть несогласованными.
  • В настоящее время сравнение значений поддерживается только для некоторых таблиц без первичных ключей. Для таблиц, не поддерживающих сравнение значений, можно сравнивать количество строк. Таким образом, в зависимости от сценария данные можно сравнивать по строкам или по значениям.
  • В SQL‑запросах, генерируемых DRS для выборки несогласованных данных, используется время UTC. Если в таблице есть поля времени, перед выборкой несогласованных данных необходимо установить временную зону сеанса в UTC+0.
  • Для таблиц без первичных ключей поддерживается только статическое сравнение значений. Динамическое сравнение значений не поддерживается.
  • Задачу DRS нельзя приостанавливать во время сравнения значений. В противном случае задача сравнения может завершиться с ошибкой.
  • Чтобы избежать длительного занятия ресурсов, DRS ограничивает продолжительность сравнения. Если время сравнения превышает порог, задача сравнения останавливается автоматически.
    • После завершения задачи полной миграции DRS автоматически создает задачи сравнения на уровне объектов и строк. Продолжительность сравнения ограничена 30 минутами. По истечении порога задачи сравнения автоматически останавливаются, и задача полной миграции прекращается.
    • Для задачи сравнения строк, созданной вручную в инкрементальной фазе, если исходная база данных является реляционной, продолжительность сравнения строк ограничена 60 минутами. Если исходная база данных нереляционная, например MongoDB, продолжительность сравнения строк ограничена 30 минутами.
  • Чтобы не занимать ресурсы, результаты сравнения задач DRS могут храниться максимум 60 дней. По истечении 60 дней результаты сравнения автоматически удаляются.
  • Для задачи миграции из MySQL виртуальные столбцы в исходной базе данных не поддерживают сравнение значений. Во время сравнения виртуальные столбцы отфильтровываются.
  • Если целевая база данных использует MySQL 5.7, значения с плавающей точкой в JSON теряют завершающие нули после запятой из‑за поведения нормализации типа JSON в этой версии. В результате значения в источнике и целевой базе данных оказываются несогласованными из‑за потери точности.
  • Выполнение операций DDL над таблицей во время сравнения значений может привести к сбою задачи. В этом случае необходимо повторно выполнить сравнение. Рекомендуется минимизировать операции DDL над таблицей во время сравнения.

Влияние на базы данных

  • Сравнение объектов: Системные таблицы исходных и целевых баз данных запрашиваются, занимая около 10 сеансов. База данных не затронута. Однако, если количество объектов велико (например, сотни тысяч таблиц), база данных может быть перегружена.
  • Сравнение строк: Количество строк в исходных и целевых базах данных запрашивается, что занимает около 10 сеансов. Оператор SELECT COUNT не влияет на базу данных. Однако, если таблица содержит большое количество данных (сотни миллионов записей), база данных будет перегружена, и результаты запроса будут возвращаться медленно.
  • Сравнение значений: Запрашиваются все данные в исходных и целевых базах данных, и каждое поле сравнивается. Нагрузка запросов на базу данных приводит к высокому I/O. Скорость запросов ограничена I/O и пропускной способностью сети исходных и целевых баз данных. Сравнение значений занимает один‑два процессора и около 10 сеансов.

Оценочная продолжительность сравнения

  • Сравнение объектов: Обычно результаты сравнения возвращаются в течение нескольких минут, в зависимости от производительности запросов исходной базы данных. Если объём данных велик, сравнение может занять десятки минут.
  • Сравнение строк: Используется метод SELECT COUNT. Скорость запросов зависит от производительности базы данных.
  • Сравнение значений: Если нагрузка на базу данных невысока и сеть работает нормально, скорость сравнения составляет около 5 МБ/с.

Требования

  • Вы вошли в консоль DRS.
  • Задача миграции запущена.

Создание задачи сравнения

Вы можете следовать процессу сравнения или выбрать метод сравнения в зависимости от вашего сценария обслуживания. Ниже приведены операции, описывающие, как сравнивать элементы миграции, следуя рекомендованному процессу миграции.

  1. На странице Online Migration Management нажмите имя целевой задачи миграции в столбце Task Name/ID.
  2. На вкладке Migration Comparison сравните объекты исходных и целевых баз данных.

    • Создайте задачу Object-Level Comparison для проверки целостности объектов базы данных.

      Нажмите Object-Level Comparison. На вкладке Object-Level Comparison просмотрите результат сравнения каждого элемента сравнения.

      Найдите элемент сравнения, который вы хотите просмотреть, и нажмите View Details в столбце Operation.

    • Создайте задачу Data-Level Comparison (row comparison or value comparison) для сравнения количества строк и значений перенесённых данных.

      1. В панели Before You Start нажмите Validate All Rows/Values.
      2. В отображаемом диалоговом окне Create Comparison Task укажите Comparison Type, Comparison Time и Object. Затем нажмите OK.
        • Comparison Type: сравнивает строки и значения.
          Note
          • После того как задача переходит в инкрементальную фазу, вы можете создать задачу сравнения строк или значений.
          • После завершения полной синхронизации данные в исходной базе данных нельзя изменять. В противном случае результат сравнения будет несогласован.
        • Comparison Time: Вы можете выбрать Start upon task creation или Start at a specified time. Во время синхронизации между исходной и целевой базами данных наблюдается небольшая разница во времени. Может возникнуть несоответствие данных. Рекомендуется выполнять сравнение элементов миграции в непиковые часы для более точных результатов.
        • Flow Control: Вы можете включить управление потоком для некоторых задач сравнения. После включения управления потоком вы можете установить Effective в значение Always или Scheduled и задать Flow Limit конкретным значением. Если выбрать Scheduled, можно задать диапазон времени в соответствии с требованиями сервиса.

        • Compare Incremental Data Only: Вы можете включить сравнение только инкрементных данных для некоторых задач сравнения. Эта функция доступна только при выборе Dynamic для Comparison Method. Кроме того, можно выбрать время начала инкрементных данных.

        • Filter Data: После включения этой функции объекты могут сравниваться на основе настроенных критериев фильтрации.
          Note

          Только задачи миграции MySQL-to-MySQL поддерживают фильтрацию и сравнение данных.

          После включения Filter Data добавьте критерии фильтрации для таблиц, которые будут сравниваться.

          В области Filtering Criteria введите критерии фильтрации и нажмите Verify.

          Note
          • Стандартные SQL‑операторы могут использоваться для фильтрации записей. Каждое выражение не может содержать пакеты, функции, переменные или константы, специфичные для движка базы данных.
          • Введите часть после WHERE в SQL‑операторе (не включая WHERE и точки с запятыми), например, sid > 3 and sname like "G %".
          • Не поддерживаются правила неявного преобразования. Укажите критерий фильтрации с допустимым типом данных. Например, если столбец c в базе данных Oracle использует символы типа varchar2, критерий фильтрации должен быть задан как c > '10', а не c > 10.
          • Критерий фильтрации нельзя задавать для больших объектов, таких как CLOB, BLOB и BYTEA.
          • Не рекомендуется задавать критерий фильтрации для полей приближённых числовых типов, таких как FLOAT, DECIMAL и DOUBLE.
          • Не используйте поля, содержащие специальные символы, в качестве условия фильтрации.
          • Объекты, у которых имена баз данных, схем или таблиц нечувствительны к регистру, нельзя фильтровать и сравнивать.
          • В настоящее время фильтрация на основе условий не поддерживается, если в базе данных более 50 000 таблиц.

          После успешного подтверждения нажмите Generate Processing Rule. Правило отображается.

          Нажмите OK.

        • Object: Вы можете выбрать объекты для сравнения в зависимости от сценариев.
      3. После отправки задачи создания сравнения отображается вкладка Data-Level Comparison. Нажмите , чтобы обновить список и просмотреть результат сравнения указанного типа сравнения.

        Чтобы просмотреть детали сравнения, найдите целевой тип сравнения и нажмите View Results в столбце Operation. На отображённой странице найдите пару исходной и целевой баз данных и нажмите View Details в столбце Operation, чтобы просмотреть подробные результаты сравнения.

        • Для запущенных задач сравнения с включённым управлением потоком вы можете проверить скорость извлечения исходной базы данных и инкрементальную задержку (доступно только для динамического сравнения) на странице списка.

          • Примечание: статистика обновляется каждые 10 секунд по умолчанию.
        • Для выполнения задач сравнения с включённым управлением потоком вы можете нажать View Results, чтобы проверить полный прогресс сравнения, полную скорость извлечения данных, количество несовместимых строк, требующих проверки, и детальный прогресс каждой исходной и целевой таблицы базы данных. Если задача является динамической задачей сравнения, вы также можете проверить задержку инкрементального сравнения, скорость инкрементального сравнения, позицию инкрементального сравнения, количество несовместимых строк, требующих проверки, и количество строк, сравниваемых в секунду.

          • Примечание: статистика обновляется каждые 10 секунд по умолчанию.
        Note
        • Вы можете отменить выполняющуюся задачу в любой момент и просмотреть отчёт о сравнении отменённой задачи сравнения.
        • Вы можете сортировать результаты сравнения строк, отображаемые на текущей странице, по возрастанию или убыванию в зависимости от количества строк в исходной таблице базы данных или в целевой таблице базы данных.
        • Если в столбце Row Differences отображается отрицательное число, количество строк в целевой таблице базы данных превышает количество строк в исходной таблице базы данных. Если в столбце differences отображается положительное число, количество строк в исходной таблице базы данных превышает количество строк в целевой таблице базы данных.

    • Создайте задачу Data-Level Comparison (sampling comparison). При большом объёме данных сравнение количества строк и значений занимает длительное время. Рекомендуется использовать сравнение с выборкой. Вы можете задать подходящее отношение выборки, чтобы выполнить сравнение быстрее.

      On the Data-Level Comparison page, click Create Comparison Task, select Sample for Comparison Type, set Sampling Ratio, Comparison Time, and Object, and click OK.

      Note
      • Только задачи миграции в режиме реального времени из MongoDB в DDS и из DDS в MongoDB поддерживают сравнение с выборкой.
      • Команда $sample, предоставляемая MongoDB, используется для выборки данных: {$sample: { size: \u003cpositive integer N\u003e } }.

        В приведённой выше команде size фиксировано на 1000. Чтобы выполнить сравнение с выборкой MongoDB, предоставляемое DRS, команда $sample выполняется многократно, пока объём выбранных данных не достигнет указанного отношения выборки.

      • В одной задаче сравнения с выборкой команда $sample выполняется многократно. В этом случае одни и те же данные в исходной базе данных могут быть получены несколько раз.
      • Общий объём данных коллекции определяется с помощью estimatedDocumentCount. Это оценочное значение, а не точное. Фактический объём выбранных данных и отношение выборки могут колебаться, что является нормой.
      • Сравнение с выборкой не поддерживает документы, у которых _id имеет тип данных BinData. Документы, у которых _id имеет тип данных BinData, будут отфильтрованы и не будут сравниваться.
      • Если количество несовместимых записей данных в одной задаче сравнения с выборкой MongoDB превышает 10 000, сравнение прекращается. Отображается не более 10 000 несовместимых записей данных.

    • Выполните двойную проверку перед переключением.

      нажмите Double Check During Cutover. В отображаемом диалоговом окне Create Comparison Task укажите Comparison Type, Comparison Time и Object. Затем нажмите OK.

      Для получения подробной информации о том, как просмотреть детали сравнения, см. 2.c.

    • Остановите задачу миграции.

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

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

Periodic Comparison

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

  1. На странице Online Migration Management нажмите имя целевой задачи миграции в столбце Task Name/ID.
  2. Выберите Migration Comparison.
  3. Нажмите вкладку Periodic Comparison и нажмите Modify Comparison Policy.
  4. В диалоговом окне Modify Comparison Policy включите периодическое сравнение, укажите частоту сравнения, интервал времени, время действия и тип сравнения, затем нажмите Yes.

    Note
    • После включения периодического сравнения DRS сравнивает количество строк или объектов в запланированное время. Вы можете просмотреть результаты сравнения на вкладке Data-Level Comparison или Object-Level Comparison.
    • После отключения периодического сравнения можно просматривать только исторические результаты сравнения.
    • Изменения настроек политики сравнения вступают в силу со следующего сравнения и не влияют на текущие задачи периодического сравнения.
    • Во время периодического сравнения будут читаться исходная и целевая базы данных. Выполняйте сравнение в непиковые часы.
    • Во время периодического сравнения ультра‑большие таблицы (те, которые содержат более 100 млн строк) автоматически исключаются. Вы можете использовать сравнение на уровне данных для выборочной проверки таких больших таблиц. Не рекомендуется сравнивать такие большие таблицы периодически.
    • Если вы выбираете Weekly для Comparison Frequency и выбираете все дни (с понедельника по воскресенье) для Comparison Time, частота сравнения будет автоматически изменена на Daily.

Quick Comparison

Чтобы ускорить и упростить процесс миграции, DRS предоставляет функцию быстрой проверки. Вы можете напрямую выполнять сравнение в списке задач миграции. Эта функция может использоваться для сравнения всех объектов миграции только когда выполняются задачи инкрементальной миграции.

  1. На странице Online Migration Management найдите целевую задачу миграции и нажмите Compare в столбце Operation.
  2. На странице Create Comparison Task выберите Start upon task creation или Start at a specified time и нажмите Yes, чтобы запустить задачу сравнения.

Viewing a Comparison Task

  1. На странице Online Migration Management найдите целевую задачу миграции и нажмите View в столбце Operation.
  2. On the Migration Comparison tab, view the data comparison result.

Data Repair

Если в результате сравнения статических значений обнаружены несогласованные данные, вы можете выбрать несогласованные таблицы на странице деталей сравнения для восстановления данных. Результат восстановления данных включает SQL‑операторы восстановления, которые можно выполнить в целевой базе данных. После восстановления вы можете просмотреть детали SQL‑операторов восстановления несогласованных строк на странице деталей прогресса восстановления. Вы также можете экспортировать и загрузить все несогласованные SQL‑операторы, сгенерированные в этом сравнении, и вручную выполнить их в целевой базе данных в соответствии с требованиями сайта. Существуют следующие ограничения на восстановление данных:

  1. Восстановление данных доступно в ограниченном режиме. В настоящее время поддерживаются только задачи MySQL‑to‑MySQL.
  2. Если восстанавливаемый SQL‑оператор является INSERT или UPDATE, все столбцы несогласованной строки отображаются на странице деталей SQL‑оператора восстановления. Значения столбцов являются текущими значениями соответствующих столбцов в исходной базе данных.
  3. Исторические задачи сравнения могут не подлежать восстановлению из‑за отсутствия информации о восстановлении. Необходимо выполнить сравнение повторно, а затем восстановить несогласованные данные.
  4. Для каждой задачи отображаются только детали прогресса восстановления, относящиеся к последнему восстановлению данных.
  5. Максимальный размер отдельной несогласованной строки составляет 4 MB. Если размер превышает 4 MB, соответствующие операторы repair SQL не будут сгенерированы.
  6. В операторах repair SQL, генерируемых DRS, поле типа времени основано на времени UTC. Если в таблице есть поля времени, установите часовой пояс сеанса в часовой пояс UTC+0 перед выполнением операторов repair SQL в целевой базе данных. В следующей таблице перечислены операторы SQL для установки часового пояса сеанса для каждого типа базы данных.
  7. Будьте осторожны при выполнении операторов DELETE в операторах repair SQL.
  8. Восстановление данных недоступно в результате сравнения таблиц без первичных ключей.
Table 1 операторы SQL для установки часового пояса сеанса в часовой пояс UTC+0 для каждого типа базы данных

Тип базы данных

SQL часового пояса

MYSQL

SET session time_zone='+00:00';