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