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.-sinteger--chunk_sizeintegerУстанавливает значение параметра
chunk_size.-ginteger--max_parallel_chunksintegerУстанавливает значение параметра
max_parallel_chunks.-tinteger--max_parallel_tablesintegerУстанавливает значение параметра
max_parallel_tables.
Параметры командной строки для управления выводом #
В командной строке также можно задать параметры, управляющие отображением информации на экране:
-iОтображать только информацию о таблицах: список столбцов и их типы.
--no_tuiНе отображать информацию о ходе выполнения тестов.
-q--quietНе отображать информацию о ходе выполнения тестов и их результатах.
Параметр --skip_passed_tables, описанный выше, также влияет на отображение информации.