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