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

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 и более поздними версиями.

Смотрите также

amcheck