prosync

prosync — утилита для проигрывания изменений из базы данных-источника в базе данных-приёмнике другого типа

Синтаксис

prosync config generate [параметр...]

prosync init [параметр...]

prosync run [параметр...]

prosync complete [параметр...]

Описание #

prosync — это утилита для захвата изменений (CDC, Change Data Capture) из базы данных-источника и воспроизведения этих изменений в базе данных-приёмнике другого типа.

prosync не отвечает за:

  • Перенос схемы базы данных.

  • Перенос данных, отсутствующих в файлах журналов.

  • Проверку данных после их переноса.

Поддерживаемые операции #

  • DML: INSERT, UPDATE, DELETE

  • DDL: TRUNCATE

Использование #

Перенос базы данных #

prosync участвует в переносе «горячей» базы данных (за подробностями обратитесь к Разделу 4.5).

Подготовка к переносу «горячей» базы данных #

Чтобы подготовиться к переносу «горячей» базы данных, выполните следующие шаги:

  1. Подготовьте и настройте базу данных-приёмник для переноса:

    • Создайте необходимые схемы и таблицы.

    • Удалите или отключите триггеры.

  2. Сгенерируйте файл конфигурации:

    prosync config generate -o имя_файла
  3. Обновите файл конфигурации, указав нужные значения.

  4. Получите значение CURRENT_SCN из базы данных-источника и укажите его в параметре prosync_options.start_scn в файле конфигурации:

    prosync init -f имя_файла -u

    Ключ -u выполнит это автоматически, но рекомендуется вручную убедиться, что значение в файле конфигурации соответствует значению на экране.

Перенос «горячей» базы данных #

Выполните перенос следующим образом:

  1. Запустите загрузку данных с помощью procopy:

    procopy load -f имя_файла
  2. После завершения загрузки запустите проигрывание изменений с помощью prosync:

    prosync run -f имя_файла
  3. Дождитесь, пока разница между значениями Parsing SCN и Oracle latest SCN уменьшится до допустимого уровня. При переносе «горячей» базы данных особенно важно добиться того, чтобы эта разница уменьшалась:

    Parsing SCN          3671057
    Oracle latest SCN    4995972
    
  4. Отключите нагрузку на базу данных-источник и дождитесь, пока значения Parsing SCN и Oracle latest SCN практически перестанут меняться. Затем остановите prosync.

    Примечание

    В Oracle изменения происходят постоянно, даже если никто не вносит явных изменений в данные, поэтому значение Oracle latest SCN непрерывно увеличивается. По этой причине разница между Parsing SCN и Oracle latest SCN никогда не будет равной нулю.

Исключение столбцов из задач типа Table #

При выполнении задач типа Table (за подробностями обратитесь к Подразделу «Типы задач») в рамках переноса данных с использованием prosync не исключайте (через параметры exclude_columns или include_columns) столбцы, которые LogMiner использует в качестве ключей строк. В противном случае команды DELETE или UPDATE могут затронуть сразу несколько строк.

Для таблиц без ключей (куч) нельзя исключать ни один столбец, так как LogMiner использует всю строку для идентификации.

Примечание

Эти правила не применяются, если перенос данных выполняется только с помощью procopy.

Замечания для источников PostgreSQL/Postgres Pro #

При миграции БД PostgreSQL/Postgres Pro требуется слот репликации для проигрывания изменений, выполняемого prosync. Поэтому:

  • Перед запуском команды prosync run, выполняющей проигрывание изменений, выполните команду init, которая создаст слот репликации.

  • По завершении работы run выполните команду complete, которая очистит слот репликации.

Справка по командной строке #

Данный раздел описывает команды prosync. Необязательные параметры заключены в квадратные скобки.

config generate #

prosync config generate [-f|--format json|yaml]
[-o|--output имя_файла] [-c|--source_config]

Создаёт файл конфигурации для prosync.

-f json|yaml
--format json|yaml

Указывает формат файла конфигурации: JSON или YAML. По умолчанию используется YAML.

-o имя_файла
--output имя_файла

Указывает имя файла конфигурации. По умолчанию файл выводится в стандартный поток вывода (stdout).

-c
--source-config

Использовать файл конфигурации procopy в качестве основы для файла конфигурации prosync и дополнить его недостающими параметрами.

init #

prosync init -f|--file имя_файла [-u|--update-config]

Получает текущее значение SCN из базы данных-источника.

-f имя_файла
--file имя_файла

Имя файла конфигурации, в котором заданы параметры подключения.

-u
--update-config

Использовать файл конфигурации procopy в качестве основы и дополнить его недостающими параметрами.

run #

prosync run -f|--file имя_файла
[--log-level error|warn|info|debug] [--dry-run|--read-only]
[-c|--clear] [--with-table-stats]

Запускает проигрывание изменений из базы данных-источника в базе данных-приёмнике.

Если значение prosync_options.start_scn в файле конфигурации меньше, чем в самом старом из доступных файлов журнала в БД-источнике, команда выведет сообщение об ошибке с указанием минимального доступного csn.

-f имя_файла
--file имя_файла

Имя файла конфигурации, в котором заданы параметры подключения.

--log-level error|warn|info|debug

Уровень детализации сообщений. По умолчанию используется уровень info.

--dry-run

Отключает запись в базу данных-приёмник. prosync выполнит все действия, кроме записи. Этот флаг полезен для оценки производительности записи без её фактического выполнения.

--read-only

Отключает всю логику prosync, кроме чтения из базы данных-источника. Этот флаг полезен для оценки производительности чтения.

-c
--clear

Очищает экран перед каждой новой выдачей статистики. При включении этого режима рекомендуется перенаправить вывод журналов в файл, например:

prosync run ... -c 2>prosync.log
--with-table-stats

Выводит расширенную статистику по таблицам.

complete #

prosync complete [-f имя_файла]

Очищает слот репликации, используемый командой run. Имя слота определяется параметрами в файле конфигурации (по умолчанию config.yaml).