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

orioledb_filedump

orioledb_filedump — утилита для автономного (offline) дампа и (опционально) декодирования дисковых страниц B-дерева OrioleDB и метаданных контрольных точек OrioleDB.

Предназначена в качестве аналога pg_filedump PostgreSQL для OrioleDB: можно указать пути к исходным файлам данных в orioledb_data/ и исследовать их содержимое без запуска сервера базы данных.

Использование​

orioledb_filedump [-adfhikz] [-R start [end]] [-K keytypes] [-D tupletypes]
[-S blocksize] [-s segsize] [-n segnumber]
[-M mapfile] [-O offset[:len]] [-W depth] file

Общие флаги​

  • -a: вывод абсолютных смещений в файле;
  • -d: только шестнадцатеричный дамп (без семантической интерпретации);
  • -f: форматированный дамп с интерпретацией;
  • -h: справка/версия;
  • -i: подробная информация на уровне элементов;
  • -k: проверка значений page_version / compress_version на диске.

Специфичные для OrioleDB флаги​

  • -c file: интерпретация file как orioledb_data/control (CheckpointControl);
  • -m file: интерпретация file как файла карты контрольной точки (CheckpointFileHeader);
  • -M mapfile: загрузка CheckpointFileHeader из mapfile (устанавливает нижнюю ссылку корня B-дерева);
  • -O offset[:len]: дамп одной логической страницы по offset с длиной экстента len;
  • -W depth: обход B-дерева, начиная с нижней ссылки корня из -M (-1 = без ограничений, 0 = только корень, 1 = один уровень ниже корня и т. д.);
  • -t: попытка следовать по указателям TOAST при декодировании значений varlena (-D);
  • -z: обработка файла данных как страниц, сжатых алгоритмом ZSTD на диске.

Декодирование ключей и кортежей (-K / -D)​

-K types декодирует ключи B-дерева (разделительные ключи и ключи кортежей листовых страниц).

-D types декодирует полезную нагрузку кортежей листовых страниц.

Оба флага принимают разделенный запятыми список типов атрибутов, использующий ту же систему обозначений, что и -D в pg_filedump (например: int, text, uuid, timestamp, tid/ctid, ~ и т. д.).

Кортежи OrioleDB могут иметь фиксированный или переменный формат в зависимости от раскладки страницы/кортежа; при сбоях декодирования столбцов переменной длины следует скорректировать список типов (используя соответствующие varcharN / charN при необходимости).

Примеры​

Дамп B-дерева, начиная от карты контрольной точки​

orioledb_filedump -f -i -K int -D int,text \
-M /path/to/orioledb_data/<datoid>/<relnode>-<chkp>.map \
-W 1 \
/path/to/orioledb_data/<datoid>/<relnode>

Дамп одной страницы по известной нижней ссылке (требуется длина экстента)​

orioledb_filedump -f -i -K int -D int,text \
-O 123456:8 \
/path/to/orioledb_data/<datoid>/<relnode>

Дамп файлов контрольной точки и карты​

orioledb_filedump -c /path/to/orioledb_data/control
orioledb_filedump -m /path/to/orioledb_data/<datoid>/<relnode>-<chkp>.map

Ограничения​

  • Автономная проверка данных на диске требует корректного указания -z и (для -O) корректной длины экстента. Для экстентов переменной длины со сжатием последовательное сканирование файла данных может обеспечить неоднозначное выравнивание по логическим страницам; предпочтительны -M/-W (на основе нижних ссылок) или -O при известной длине экстента.
  • Для сжатых файлов (-z) форматированный последовательный дамп без границ страниц не поддерживается. Использовать -M ... -W ... (предпочтительно) или -O offset:len.