pg_amcheck
Эта страница переведена при помощи нейросети GigaChat.
pg_amcheck
— проверяет одну или несколько баз данных PostgreSQL на наличие повреждений.
Синтаксис
pg_amcheck [option..] [dbname]
Описание
pg_amcheck
запускает функции проверки повреждений amcheck в одной или нескольких базах данных.
Утилита позволяет выбрать:
- конкретные схемы, таблицы и индексы для проверки;
- вид выполняемых проверок;
- параллельный режим выполнения;
- количество устанавливаемых и используемых соединений.
На данный момент поддерживается проверка обычных и TOAST-таблиц, материализованных представлений, последовательностей и B-tree индексов. Остальные типы отношений игнорируются без вывода сообщений.
Если указан параметр dbname
, то его значение должно содержать только одно имя базы данных. При этом не указывайте другие параметры выбора базы. В противном случае, если применяются другие параметры выбора базы данных, проверке будут подвергнуты все подходящие базы. Если такие параметры не указаны, будет проверена база данных по умолчанию.
К параметрам выбора базы данных относятся:
--all
--database
--exclude-database
--relation
--exclude-relation
--table
--exclude-table
--index
--exclude-index
(в случае использования трехкомпонентного шаблона, например,mydb*.myschema*.myrel*
).
Параметры --schema
и --exclude-schema
могут выступать в качестве фильтров при использовании двухкомпонентного шаблона (например, mydb*.myschema*
).
В dbname
также можно передать строку подключения.
Параметры
Для утилиты pg_amcheck
существуют следующие параметры командной строки:
-a
--all
- Проверяет все базы данных, за исключением тех, которые указаны в параметре
--exclude-database
.
-d pattern
--database=pattern
- Проверяет базы данных, соответствующие указанному шаблону
pattern
, за исключением тех, которые исключены с помощью--exclude-database
. Параметр можно указать несколько раз.
-D pattern
--exclude-database=pattern
- Исключает базы данных, соответствующие указанному шаблону
pattern
. Параметр можно указать несколько раз.
-i pattern
--index=pattern
- Проверяет индексы, соответствующие указанному шаблону
pattern
, если они не исключены иным образом. Параметр можно указать несколько раз.Параметр похож на
--relation
, но применяется только к индексам, а не к другим типам отношений.
-I pattern
--exclude-index=pattern
- Исключить индексы, соответствующие указанному шаблону
pattern
. Параметр можно указать несколько раз.Параметр похож на
--exclude-relation
, но применяется только к индексам, а не к другим типам отношений.
-r pattern
--relation=pattern
- Проверяет отношения, соответствующие указанному шаблону
pattern
, если они не исключены иным образом. Параметр можно указать несколько раз.Шаблоны бывают:
- неквалифицированными (
myrel*
); - квалифицированными схемой (
myschema*.myrel*
); - квалифицированными базой данных и схемой (
mydb*.myschema*.myrel*
). Добавит совпадающие базы данных в список баз данных для проверки.
- неквалифицированными (
-R pattern
--exclude-relation=pattern
- Исключает отношения, соответствующие указанному шаблону
pattern
. Параметр можно указать несколько раз.Как и с
--relation
, шаблоныpattern
могут быть не квалифицированы, квалифицированы схемой или базой данных и схемой.
-s pattern
--schema=pattern
- Проверяет таблицы и индексы в схемах, соответствующих указанному шаблону
pattern
, если они не исключены иным образом. Параметр можно указать несколько раз.Чтобы проверить только таблицы, используйте
--table=SCHEMAPAT.* --no-dependent-indexes
, только индексы — используйте--index=SCHEMAPAT.*
.Можно указывать схему в контексте базы данных, например,
--schema=mydb*.myschema*
, чтобы выбрать схемыmyschema*
в базах данныхmydb*
.
-S pattern
--exclude-schema=pattern
- Исключает таблицы и индексы в схемах, соответствующих указанному шаблону
pattern
. Параметр можно указать несколько раз.Как и с
--schema
, шаблон может быть квалифицирован базой данных.
-t pattern
--table=pattern
- Проверяет таблицы, соответствующие указанному шаблону
pattern
, если они не исключены иным образом. Параметр можно указать несколько раз.Параметр похож на
--relation
, но применяется только к таблицам, материализованным представлениям и последовательностям, не к индексам.
-T pattern
--exclude-table=pattern
- Исключить таблицы, соответствующие указанному шаблону
pattern
. Параметр можно указать несколько раз.Параметр похож на
--exclude-relation
, но применяется только к таблицам, материализованным представлениям и последовательностям, а не к индексам.
--no-dependent-indexes
- По умолчанию таблица проверяется с ее индексами B-tree, даже если они не указаны явно параметром
--index
или--relation
. Параметр отключает эту проверку.
--no-dependent-toast
- По умолчанию таблица проверяется с ее TOAST-таблицей (если есть), даже если она не выбрана явно параметром
--table
или--relation
. Параметр отключает эту проверку.
--no-strict-names
- По умолчанию, если аргумент для
--database
,--table
,--index
или--relation
не соответствует ни одному объекту, это фатальная ошибка. Параметр понижает эту ошибку до предупреждения.
--exclude-toast-pointers
- По умолчанию когда встречается указатель на TOAST, выполняется поиск записи в TOAST-таблице для проверки корректности указателя (довольно медленный процесс). Параметр пропускает эти проверки.
--on-error-stop
- Прекращает обработку текущей таблицы или индекса сразу после выявления повреждений на первой поврежденной странице и переходит к следующему объекту.Внимание!
Параметр применяется только к таблицам, для индексов проверка всегда завершается после обнаружения первой поврежденной страницы.
--skip=option
- Позволяет пропускать определенные страницы во время проверки повреждений таблиц:
all-frozen
— исключает страницы, помеченные как полностью замороженные;all-visible
— исключает страницы, помеченные как полностью видимые;none
— проверяет все страницы (значение по умолчанию).
--startblock=block
- Начинает проверку с указанного номера блока. Если таблица содержит меньше блоков, чем указано, будет выдана ошибка. Применяется только к проверке отдельных таблиц и не влияет на индексы.
--endblock=block
- Завершает проверку на указанном номере блока. Если таблица содержит меньше блоков, чем указано, будет выдана ошибка. Действует только на таблицы, не затрагивает индексы.
Если проверяется и основная, и TOAST-таблица, параметр применяется к обеим, но при проверке TOAST-указателей возможны обращения к блокам за пределами указанного диапазона (если не отключено с помощью
--exclude-toast-pointers
).
--checkunique
Для каждого проверенного индекса с ограничением уникальности убедитесь, что среди дублирующих записей в индексе видима не более одной, используя опцию checkunique
инструмента amcheck
.
--heapallindexed
- Проверяет наличие всех кортежей для каждого индекса режимом
heapallindexed
проверки amcheck.
--parent-check
- Выполняет дополнительную проверку связей родитель-потомок в индексах B-tree функцией
bt_index_parent_check
(по умолчанию используется функцияbt_index_check
, но параметр--rootdescend
неявно выбираетbt_index_parent_check
).
--rootdescend
- Для каждого проверяемого индекса заново выполняет поиск индексных кортежей на уровне листовых страниц, начиная с корневой страницы (
rootdescend
вamcheck
). При включении этого режима автоматически активируется--parent-check
.Этот метод проверки был разработан для тестирования работы индексов B-tree и не всегда эффективно выявляет повреждения на практике, также он требует больше серверных ресурсов и занимает больше времени.
Предупреждение!Дополнительные проверки, выполняемые параметрами
--parent-check
или--rootdescend
, требуют более жестких блокировок на уровне отношений. Эти проверки единственные, которые блокируют одновременные изменения данных командамиINSERT
,UPDATE
иDELETE
.
-h hostname
--host=hostname
- Указывает хост компьютера, на котором запущен сервер. Если значение начинается с косой черты, оно определяет каталог Unix-сокета.
-p port
--port=port
- Указывает TCP-порт или расширение файла локального Unix-сокета для подключения к серверу.
-U
--username=username
- Указывает имя пользователя для подключения.
-w
--no-password
- Отключает запрос на ввод пароля. Если сервер требует аутентификации по паролю и пароль недоступен другими способами, такими как файл
.pgpass
, попытка подключения завершится неудачей. Параметр полезен в пакетных заданиях и сценариях, где нет пользователя, который мог бы ввести пароль.
-W
--password
- Запрашивает пароль перед подключением к основному серверу.
Параметр не является обязательным, поскольку
pg_amcheck
автоматически запросит пароль, если сервер требует аутентификацию паролем. Однако утилита потратит попытку подключения, чтобы выяснить, что сервер хочет пароль. В некоторых случаях стоит ввести-W
, чтобы избежать дополнительной попытки подключения.
--maintenance-db=dbname
- Определяет базу данных или строку подключения, используемую для получения списка проверяемых баз данных.
Если не указаны
--all
или параметры с шаблонами имен баз данных, подключение не требуется, и этот параметр игнорируется. Все параметры из переданной строки (кроме имени базы данных) также применяются при подключении к проверяемым базам. Если параметр не указан, подключение выполняется к базеpostgres
, а при неудаче — кtemplate1
.
-e
--echo
- Отображает в
stdout
все SQL-запросы, отправляемые серверу.
-j num
--jobs=num
- Определяет количество одновременных подключений к серверу. Если указанное значение превышает количество проверяемых объектов, число соединений будет ограничено их количеством (по умолчанию используется одно подключение).
-P
--progress
- Отображает сведения о ходе выполнения проверки, включая:
- количество уже проверенных объектов;
- их общий размер;
- общее число объектов, подлежащих проверке;
- примерный их размер.
-v
--verbose
- Включает расширенный вывод информации. Отображает сообщения о проверке каждого объекта. Повышается детализация сообщений об ошибках сервера.
-V
--version
- Выводит версию
pg_amcheck
и завершается.
--install-missing
--install-missing=schema
- Автоматически устанавливает недостающие расширения, необходимые для проверки баз данных. Если схема не указана, объекты расширения добавляются в
pg_catalog
. В настоящее времяpg_amcheck
требует только расширениеamcheck
.
-?
--help
- Показывает справку о параметрах командной строки утилиты
pg_amcheck
и завершается.
Переменные окружения
pg_amcheck
, как и большинство других утилит PostgreSQL, использует переменные среды, поддерживаемые библиотекой libpq
.
Переменная окружения PG_COLOR
задает использование цвета в диагностических сообщениях. Возможными значениями являются always
, auto
и never
.
Примечания
pg_amcheck
предназначен для работы с PostgreSQL 14.0 и более поздними версиями.