procheck — утилита для проверки данных после миграции
procheck [параметр...]
procheck — это утилита для проверки данных с помощью специальных тестов. Она предназначена для использования после миграции данных, выполненной с помощью procopy и prosync. Параметры конфигурации, задаваемые в конфигурационном файле, определяют, как выполняются тесты.
procheck выполняет следующую проверку:
Сравнивает значения уникальных идентификаторов в исходной и целевой таблицах.
Сравнивает количество строк в таблицах.
Сравнивает данные построчно.
Сравнивает результаты запроса.
Чтобы сгенерировать пример файла конфигурации с именем файл_конфигурации, выполните следующую команду:
procheck --generate_config config_fileили
procheck --generate_config_db файл_конфигурацииПозже вы можете изменить значения параметров конфигурации.
Чтобы запустить проверку БД, заданную в файле конфигурации 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 -c|--generate_configфайл_конфигурации| --generate_config_dbфайл_конфигурации[--source_snapshot_idидентификатор] [--destination_snapshot_idидентификатор] [--json] [-v|--version] [параметры_конфигурации] [параметры_управления_выводом]
Выполняет тесты, если указан параметр -c, и генерирует файл конфигурации procheck, если указан параметр --generate_config. Здесь файл_конфигурации задаёт имя файла конфигурации. Если же задан параметр --generate_config_db, создаётся файл конфигурации с правилами сравнения, соответствующими структуре данных источника.
--source_snapshot_id, --destination_snapshot_idПроверять данные из снимка данных в источнике или приёмнике, заданного идентификатором. Применимо только для PostgreSQL/Postgres Pro.
--jsonВыводит результаты тестов в формате JSON и сохраняет их в файл . По умолчанию результаты в формате простого текста сохраняются в файл файл_конфигурации_results.json и выводятся на терминал.файл_конфигурации_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, описанный выше, также влияет на отображение информации.