G.1. pgpro_datactl — управление файлами данных Postgres Pro Enterprise

G.1.1. Обзор

Утилита pgpro_datactl предоставляет инструменты для управления файлами данных Postgres Pro Enterprise и включает в себя модуль для работы с CFS (Compressed File Storage, сжатая файловая система). Этот модуль предлагает следующую функциональность:

  • Получение метаданных сжатых файлов, включая алгоритм сжатия и их расположение.

  • Распаковка файлов CFS для дальнейшего анализа.

  • Перепаковка сжатых файлов и изменение их уровня сжатия.

  • Предотвращение потенциальных сбоев, вызванных повреждёнными файлами.

G.1.2. Установка

pgpro_datactl поставляется вместе с Postgres Pro Enterprise в виде отдельного пакета pgpro-datactl-ent-14 (подробные инструкции по установке приведены в Главе 17).

G.1.3. Команды

pgpro_datactl поддерживает следующие команды:

G.1.3.1. Важные замечания

Перед запуском этих команд ознакомьтесь со следующими особенностями их работы:

  • Операции repack и unpack требуют остановки кластера Postgres Pro Enterprise. Это необходимо для того, чтобы избежать повреждения данных и обеспечить целостность файлов.

  • При использовании параметра --in-place с командой repack следует учитывать следующее:

    • Табличное пространство будет перезаписано непосредственно в процессе работы.

    • Все существующие данные в целевом табличном пространстве будут заменены.

G.1.3.2. unpack

pgpro_datactl unpack --source=исходный_путь --target=целевой_путь
[--calg=алгоритм_сжатия] [--zero-on-error] [--log-level=уровень_сообщений] [--help]

Распаковывает файлы CFS.

-s=исходный_путь
--source=исходный_путь

Указывает путь к сжатому файлу или каталогу.

Примечание

Путь должен находиться в каталоге с именем PG_версия_дата, содержащем файл pg_compression.

-t=целевой_путь
--target=целевой_путь

Указывает путь к каталогу, в который будут помещены распакованные файлы.

Если исходный и целевой каталоги совпадают, файлы распаковываются с расширением .dec.

-c=алгоритм_сжатия
--calg=алгоритм_сжатия

Указывает используемый алгоритм сжатия. Если параметр не указан, команда unpack возьмёт это значение из файла pg_compression.

--zero-on-error

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

--log-level=уровень_сообщений

Устанавливает уровень сообщений. Возможные значения: debug, info, warning и error.

Пример:

pgpro_datactl unpack -s /path/to/archive.cfs -t /path/to/destination -c zstd

В этом примере unpack извлекает файл archive.cfs, сжатый алгоритмом zstd, в каталог /path/to/destination.

G.1.3.3. probe

pgpro_datactl probe --source=исходный_путь [--log-level=уровень_сообщений] [--help]

Анализирует указанный файл и определяет следующее:

  • Тип сжатия. Алгоритм сжатия zlib или zstd.

  • Уровень фрагментации. Анализирует соответствующий файл *.cfm (при его наличии) и сообщает процент неиспользуемого пространства в физическом файле.

  • Принадлежность файла к CFS. Проверяет наличие связанного файла *.cfm, что указывает на принадлежность файла к архиву CFS.

-s=исходный_путь
--source=исходный_путь

Указывает путь к нужному файлу.

--log-level=уровень_сообщений

Устанавливает уровень сообщений. Возможные значения: debug, info, warning и error.

Пример вывода:

Probing path: /data/sample.dat
Has cfm file: Yes
pg_compression: zstd
Actual compression: zstd
Fragmentation: 5%

В этом примере файл сжат алгоритмом zstd, является частью архива CFS и имеет уровень фрагментации пять процентов.

G.1.3.4. info

pgpro_datactl info --source=исходный_путь [--log-level=уровень_сообщений] [--help]

Анализирует файл и отображает следующую информацию:

  • Физический и виртуальный размер файла, а также используемое им пространство в байтах.

  • Включён ли сборщик мусора (GC).

  • Наличие и доступность файла *.cfm.

-s=исходный_путь
--source=исходный_путь

Указывает путь к нужному файлу.

--log-level=уровень_сообщений

Устанавливает уровень сообщений. Возможные значения: debug, info, warning и error.

Пример вывода:

Physical size: 10485760
Virtual size: 9437184
Used size: 7864320
GC active: Yes

G.1.3.5. repack

pgpro_datactl repack --source=исходный_путь --t-calg=целевой_алгоритм_сжатия --target=целевой_путь
[--calg=алгоритм_сжатия] [--clevel=уровень_сжатия]
[--zero-on-error] [--log-level=уровень_сообщений] [--help]

Меняет алгоритм сжатия и/или уровень сжатия файлов CFS.

Возвращает следующую информацию:

  • Идентификатор алгоритма сжатия

  • Уровень сжатия

  • Результат копирования: 1 (завершено) или 0 (не завершено).

Если операция была прервана, при повторном выполнении команды с теми же параметрами сжатия (значения --t-calg и --calg) перепаковка продолжится с момента прерывания благодаря наличию соответствующего каждому файлу данных файла .status.

-s=исходный_путь
--source=исходный_путь

Указывает путь к сжатому файлу или каталогу.

Примечание

Путь должен находиться в каталоге с именем PG_версия_дата, содержащем файл pg_compression.

--t-calg=целевой_алгоритм_сжатия

Указывает целевой алгоритм сжатия. Если параметр опущен, файлы будут распакованы.

-t=целевой_путь
--target=целевой_путь

Указывает путь к каталогу для перепакованных файлов.

-c=алгоритм_сжатия
--calg=алгоритм_сжатия

Указывает текущий алгоритм сжатия. Если параметр не указан, команда repack возьмёт это значение из файла pg_compression.

--log-level=уровень_сообщений

Устанавливает уровень сообщений. Возможные значения: debug, info, warning и error.

--clevel=уровень_сжатия

Определяет уровень сжатия для выбранного алгоритма. Значение по умолчанию — 1.

--zero-on-error

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

--in-place

Если указать этот параметр без целевого_пути, перепакованные файлы будут размещены в исходном каталоге.

Предупреждение

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

G.1.3.6. ground

pgpro_datactl ground --source=исходный_путь --block-num=номер_блока
[--calg=алгоритм_сжатия] [--log-level=уровень_сообщений] [--help]

Заменяет нулями указанные повреждённые блоки, которые могут появиться при распаковке.

-s=исходный_путь
--source=исходный_путь

Указывает путь к нужному файлу.

--block-num=номер_блока

Указывает номер блока, который нужно заменить.

-c=алгоритм_сжатия
--calg=алгоритм_сжатия

Определяет текущий алгоритм сжатия. Если значение не соответствует алгоритму сжатия табличного пространства CFS, операция завершится ошибкой.

--log-level=уровень_сообщений

Устанавливает уровень сообщений. Возможные значения: debug, info, warning и error.

Пример:

pgpro_datactl ground -s /path/to/archive.cfs --block-num 4 --calg pglz

В этом примере команда ground заменяет блок номер 4 нулём и использует алгоритм pglz для его сжатия.

G.1.3.7. stat

pgpro_datactl stat --source=исходный_путь --cfs
[--log-level=уровень_сообщений] [--help]

Собирает статистику табличного пространства и выводит результат в виде CSV-файла.

Эта команда не вносит изменений в файлы (режим только для чтения). Блокировки не устанавливаются.

-s=исходный_путь
--source=исходный_путь

Указывает путь к сжатому файлу или каталогу.

Примечание

Путь должен находиться в каталоге с именем PG_версия_дата, содержащем файл pg_compression.

--cfs

Указывает тип табличного пространства.

Примечание

В настоящее время реализована поддержка только типа CFS.

--log-level=уровень_сообщений

Устанавливает уровень сообщений. Возможные значения: debug, info, warning и error.