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
.