qhb_checksums

qhb_checksums — включить, выключить или проверить контрольные суммы данных в кластере базы данных QHB

Синтаксис

qhb_checksums [флаг...] [параметр...] --pgdata каталог_данных

В этом синтаксисе термины «флаг» и «параметр» объединены:

qhb_checksums [параметр...] [[ -D | --pgdata ]каталог_данных]

Описание

Утилита qhb_checksums позволяет проверить, включить или выключить контрольные суммы данных в кластере QHB. Перед запуском qhb_checksums сервер должен быть остановлен в штатном режиме. При проверке контрольных сумм код завершения равен нулю, если ошибок нет, и отличен от нуля, если обнаружена хотя бы одна ошибка контрольной суммы. При включении или выключении контрольных сумм ненулевой код завершения означает, что выполнить операцию не удалось.

У всех файлов таблиц есть заголовок, по умолчанию в нем в поле с контрольной суммой стоит значение 0, также в общем файле ControlFile «версия контрольных сумм» равна 0 (выключено). При первом запуске нужно включить контрольные суммы с помощью флага --enable, который установит версию контрольных сумм на 1 и изменит поле контрольной суммы во всех заголовках файлов таблиц базы данных (директории global, base, pg_tblspc). Если нужно проверить правильность контрольных сумм в файлах, программа запоминает значение контрольной суммы из файла, обнуляет его, считает новое, сравнивает и возвращает на место старое значение (если оно не совпало с подсчитанным, выводится ошибка с указанием ее расположения). Если нужно выключить контрольные суммы, программа меняет значение версии контрольных сумм на 0 и ничего не делает с файлами таблиц.

При проверке контрольных сумм сканируется каждый файл в кластере. При включении контрольных сумм каждый файл в кластере перезаписывается на месте. Выключение контрольных сумм обновляет только файл pg_control.

Параметры

-D каталог
--pgdata=каталог
Задает каталог, в котором хранится кластер базы данных (равнозначно указанию переменной среды, например: PGDATA=/tmp/qhb-data/).

-f файловый_узел
--filenode=файловый_узел
Проверить контрольные суммы только в отношении с указанным файловым_узлом.

Флаги

Принимаются также следующие параметры командной строки:

-c
--check
Запускает проверку контрольных сумм. Это режим по умолчанию, если не указан никакой другой.

-d
--disable
Выключает контрольные суммы.

-e
--enable
Включает контрольные суммы.

-h
--help
Показать справку об аргументах командной строки qhb_checksums и завершиться.

-N
--no-sync
По умолчанию qhb_checksums ожидает, пока все файлы не будут надежно записаны на диск. Этот параметр позволяет qhb_checksums завершаться быстрее, без ожидания, но в последующем сбой операционной системы может привести к повреждению каталога данных. В целом, этот параметр полезен для тестирования, но при создании производственной инсталляции его применять не следует.

-P
--progress
Включает вывод сообщений о прогрессе выполнения. Эти сообщения будут выводиться при проверке или включении контрольных сумм.

-v
--verbose
Выводить подробные сообщения, в том числе список всех проверенных файлов. Уровень отладки по умолчанию — Warn.

-V
--version
Вывести версию qhb_checksums и завершиться.

Переменные среды

PGDATA
Задает каталог, в котором хранится кластер базы данных; можно переопределить с помощью параметра -D.

PG_COLOR
Указывает, использовать ли цвета в диагностических сообщениях. Возможные значения: always (всегда), auto (автоматически) и never (никогда).

Примечания

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

При использовании репликации, которая выполняется путем непосредственного копирования блоков отношений на уровне файлов (например, с помощью qhb_rewind), включение или выключение контрольных сумм может привести к повреждению страниц в виде расхождения контрольных сумм, если эта операция не будет выполнена согласованно на всех узлах. Поэтому в таких случаях рекомендуется остановить все кластеры, для того чтобы одновременно переключить их в другой режим. Еще один безопасный метод — удаление всех резервных серверов, выполнение нужной операции на основном и последующее создание ведомых серверов заново.

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

Обработка ошибок

Ошибка Possibly encrypted block проявляется либо при шифровке файла, либо при очень серьезном его повреждении, подразумевая MismatchBlockChecksum.

Примеры

Включить контрольные суммы, в конце выводится статистика с количеством обработанных блоков и файлов, любая ошибка приводит к остановке и выходу с кодом 1:

qhb_checksums -e

Проверить уже включенные контрольные суммы; отношение к статистике и ошибкам такое же, как у --enable:

qhb_checksums -с

Выключить контрольные суммы, несмотря на любые ошибки, кроме Permission denied на /global/pg_control:

qhb_checksums -d

Примечание
--enable, --check и --disable — три главных аргумента, к которым могут быть применены следующие флаги:

  • --verbose для вывода отладочной информации;
  • --no-sync для выключения сброса изменений на диск;
  • --progress для отображения хода выполнения.