procheck

procheck — утилита для проверки данных после миграции

Синтаксис

procheck [параметр...]

Описание #

procheck — это утилита для проверки данных с помощью специальных тестов. Она предназначена для использования после миграции данных, выполненной с помощью procopy и prosync. Параметры конфигурации, задаваемые в конфигурационном файле, определяют, как выполняются тесты.

procheck выполняет следующую проверку:

  • Сравнивает значения уникальных идентификаторов в исходной и целевой таблицах.

  • Сравнивает количество строк в таблицах.

  • Сравнивает данные построчно.

  • Сравнивает результаты запроса.

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

Создание файла конфигурации #

Чтобы сгенерировать пример файла конфигурации с именем config_file, выполните следующую команду:

procheck --generate_config config_file

Позже вы можете изменить значения параметров конфигурации.

Запуск проверки БД #

Чтобы запустить проверку БД, заданную в файле конфигурации config_file, выполните следующую команду:

procheck -c config_file

Настройка подключения к БД #

Подключение к базе данных-источнику указывается в разделе source файла конфигурации, а подключение к базе данных-приёмнику — в разделе destination. См. также пример файла конфигурации.

Указание выполняемых тестов #

Тесты, выполняемые procheck, задаются в разделе comparison_rules файла конфигурации. См. также пример файла конфигурации.

Для каждой схемы необходимо указать базы данных-источник и приёмник, а также список тестов.

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

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

Сопоставление имён таблиц между базой данных-источником и приёмником можно определить на уровне схемы с помощью необязательного параметра table-mapping.

Для сопоставления имён столбцов между базой данных-источником и приёмником на уровне схемы используйте параметр column-mapping.

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

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

Типы тестов перечислены в таблице ниже:

Таблица 6.1. Типы тестов procheck

Значение параметра typeОписание
min_idСравнение минимальных значений уникального ключа. Выполняется только для таблиц с уникальным ключом, состоящим из одного столбца.
max_idСравнение максимальных значений уникального ключа. Выполняется только для таблиц с уникальным ключом, состоящим из одного столбца.
minmax_idСравнение минимальных и максимальных значений уникального ключа. Выполняется только для таблиц с уникальным ключом, состоящим из одного столбца.
countСравнение количества строк в таблицах.
queryСравнение результатов пользовательских запросов к базе данных-источнику и базе данных-приёмнику. Запросы указываются в параметрах source_query и destination_query. При написании запросов необходимо обеспечить одинаковый порядок строк и столбцов в результатах. Имена столбцов не учитываются при сравнении. Параметры tables и exclude_tables не применяются к тестам этого типа.
all_rowsСравнение всех строк в таблицах. Для столбцов типов BLOB, CLOB, BYTEA, BFILE, SFILE и TEXT сравниваются значения хеша MD5. Если параметр skip_lobs установлен в значение true, сравнение таких столбцов пропускается. Тест выполняется только при наличии уникального ключа. Если этот ключ числовой и состоит из одного столбца, таблицу можно разбить на порции по значению ключа и сравнивать их параллельно. Максимальное число строк в порции и число порций, обрабатываемых одновременно, задаются параметрами chunk_size и max_parallel_chunks соответственно.
table_listПроверка доступности таблиц в базе данных.
col_typesПроверка совместимости типов данных в базе данных-источнике и базе данных-приёмнике.

Если для таблицы невозможно выполнить тесты из-за отсутствия требуемого ключа, автоматически выполняется тест count. Если тест count уже указан в файле конфигурации для этой таблицы, он не дублируется. Автоматическое выполнение теста count можно отключить с помощью параметра конфигурации skip_auto_count_test.

Задание условий фильтрации строк #

Вы можете задать фильтрацию строк таблицы, по которым будут выполняться тесты. Чтобы задать фильтр для таблиц базы данных-источника, используйте параметр конфигурации source_where. Чтобы задать фильтр для таблиц базы данных-приёмника, используйте параметр destination_where. Оба параметра могут быть заданы как на уровне схемы, так и для отдельного теста. Параметры, заданные для конкретного теста, переопределяют параметры, заданные на уровне схемы. Условие фильтрации должно представлять собой SQL выражение, возвращающее значение типа boolean.

Параметр destination_where необходимо задавать только в том случае, если в фильтре для базы данных-приёмника используются другие имена столбцов, чем в базе данных-источнике. В этом случае необходимо также указать имя таблицы в приёмнике.

Коды возврата #

procheck может завершиться с одним из следующих кодов:

  • 0 — успешное завершение. Все тесты завершились со статусом PASSED.

  • 1 — завершение с ошибкой.

  • 3 — завершение из-за ошибки конфигурации или параметров командной строки.

  • 4 — завершение из-за ошибки доступа к базе данных.

  • 5 — завершение из-за ошибки файлового ввода-вывода.

  • 6 — завершение из-за ошибки ввода-вывода терминала.

  • 7 — нормальное завершение, но как минимум один тест завершился со статусом ERROR.

  • 8 — нормальное завершение, все тесты завершены без ошибок, но как минимум один из них получил статус FAILED.

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

В этом разделе описаны команды procheck. Необязательные параметры заключены в квадратные скобки.

procheck #

procheck -c|--generate_config config_file
[--json] [-v|--version]
[config_options] [output_control_options]

Выполняет тесты, если указана опция -c, и генерирует файл конфигурации procheck, если указана опция --generate_config. Параметр config_file задаёт имя файла конфигурации.

--json

Выводит результаты тестов в формате JSON и сохраняет их в файл config_file_results.json. По умолчанию результаты выводятся в удобочитаемом табличном формате в файл config_file_results.txt.

-v
--version

Выводит версию procheck.

Параметры конфигурации командной строки #

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

-p
--skip_passed_tables

Устанавливает значение параметра skip_passed_tables в true, что означает отсутствие подробной информации о таблицах со статусом PASSED.

-s integer
--chunk_size integer

Устанавливает значение параметра chunk_size.

-g integer
--max_parallel_chunks integer

Устанавливает значение параметра max_parallel_chunks.

-t integer
--max_parallel_tables integer

Устанавливает значение параметра max_parallel_tables.

Параметры командной строки для управления выводом #

В командной строке также можно задать параметры, управляющие отображением информации на экране:

-i

Отображать только информацию о таблицах: список столбцов и их типы.

--no_tui

Не отображать информацию о ходе выполнения тестов.

-q
--quiet

Не отображать информацию о ходе выполнения тестов и их результатах.

Параметр --skip_passed_tables, описанный выше, также влияет на отображение информации.