Перейти к основному содержимому

pg_checksums

примечание

Эта страница переведена при помощи нейросети GigaChat.

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

Синтаксис

pg_checksums [option ...] [[-D | --pgdata] datadir]

Описание

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

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

Параметры

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

-D directory
--pgdata=directory
Указывает каталог, в котором расположен кластер баз данных.
-c
--check
Выполняет проверку контрольных сумм (по умолчанию).
-d
--disable
Отключает контрольные суммы.
-e
--enable
Включает контрольные суммы.
-f filenode
--filenode=filenode
Проверяет контрольные суммы только в отношении, которому соответствует указанный filenode.
-N
--no-sync
Завершает процесс pg_checksums без ожидания записи файлов на диск, не действует при использовании --check. Ускоряет выполнение, но при последующем сбое операционной системы может привести к повреждению обновленного каталога данных. По умолчанию утилита ждет, пока все файлы будут надежно записаны на диск.

Параметр используется при тестировании и не предназначен для производственной среды.

-P
--progress
Включает вывод сообщений о прогрессе. Эти сообщения будут выводиться при проверке или включении контрольных сумм.
--sync-method=method
Если установлено значение fsync, которое является значением по умолчанию, pg_checksums рекурсивно открывает и синхронизирует все файлы в каталоге данных. Поиск файлов будет следовать символическим ссылкам для каталога WAL и каждого настроенного табличного пространства.

На Linux вместо этого можно использовать syncfs, чтобы попросить операционную систему синхронизировать всю файловую систему, содержащую каталог данных, файлы WAL и каждое табличное пространство.

Этот параметр не имеет эффекта при использовании --no-sync.

-v
--verbose
Включает режим подробного вывода. Список всех проверенных файлов.
-V
--version
Выводит версию pg_checksums и завершается.
-?
--help
Показывает справку о параметрах командной строки утилиты pg_checksums и завершается.

Переменные окружения

Утилита поддерживает переменные окружения:

PGDATA
Задает каталог хранения данных кластера, можно изменить параметром -D.
PG_COLOR
Указывает, использовать ли цвет в диагностических сообщениях. Возможные значения — always, auto и never.

Примечания

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

Если используется репликационная конфигурация с инструментами, которые выполняют прямое копирование блоков файлов отношений (например, pg_rewind), то включение или отключение контрольных сумм может привести к повреждению страниц из-за несоответствия контрольных сумм, если операция не будет выполнена одинаково на всех узлах. Для безопасности при изменении контрольных сумм в репликационной среде рекомендуется остановить все кластеры перед выполнением операции на каждом из них. Также рекомендуется уничтожить старые резервные копии, выполнить операцию на основном сервере и затем создать новые резервные копии.

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