qhb_checksums

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


Синтаксис

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

Описание

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

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

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


Параметры

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

-D каталог
--pgdata=каталог
Задает каталог, в котором хранится кластер базы данных.

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

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

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

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

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

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

-v
--verbose
Включить режим подробного вывода. Выводит список всех проверенных файлов.

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

-h
--help
Показать справку об аргументах командной строки 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 для отображения хода выполнения.