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.