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

Восстановление кластера БД при помощи драйвера FUSE

примечание

Исполнять сценарий необходимо от имени пользователя postgres.

Описание сценария

Решение, позволяющее восстанавливать кластер СУБД непосредственно из смонтированного каталога PGDATA (архив CWL), минуя полное восстановление (используя драйвер FUSE).

Подробнее про технологию FUSE

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

Команда copywala fuse задействует механизм FUSE (Filesystem in Userspace, файловая система в пространстве пользователя), монтируя виртуальное представление каталога РК. Система воспринимает этот смонтированный каталог так же, как обычный каталог PGDATA, а все обращения к файловой системе перенаправляются в соответствующие файлы резервной копии. Поскольку изменения записываются лишь в промежуточный кеш, сама резервная копия остается неизменной. Операции осуществляются исключительно в режиме чтения.

Диаграмма: copywala-fuse-diagram.xml :align: center :::

Последовательность выполнения

  1. Остановите текущий экземпляр базы данных:

    sudo su - postgres
    pg_ctl stop
  2. Создайте каталог для последующего монтирования:

    mkdir /mnt/restore_dir
    chmod 700 /mnt/restore_dir
    chown postgres:postgres /mnt/restore_dir
  3. Запустите команду для монтирования архива через CLI copywala:

        copywala fuse  <mount-directory> <archive-uri-or-path> [--cache-swap-size | размер кеша подкачки][--cache-dir | путь к директории с выгружаемым кешем ]

    Для стабильной работы файловой системы, смонтированной через FUSE, важно установить ряд ключевых параметров:

    cache-swap-size – размер данных, выгружаемых из архива CWL и хранимых в оперативной памяти. При превышении указанного объема данные, находящиеся в памяти, выгружаются на диск в директорию, указанную в параметре cache-dir. По окончании работы временные данные автоматически удаляются (по умолчанию 256 МБ)

    Пример запуска команды:

        $ copywala fuse /pgdata/06/data database_backup.cwl
    2025-09-22 12:56:24.313 INF start fuse mounting mount_path=/pgdata/06/data cache_swap_size=268435456 cache_dir=/tmp
  4. Откройте новое окно терминала под пользователем postgres.

  5. Запустите экземпляр базы данных, указывая смонтированную директорию

    pg_ctl start -D <mount-directory>
  6. По завершении использования остановите экземпляр базы данных:

    pg_ctl stop -D <mountpath>
  7. Вернитесь в терминал с командой copywala fuse и завершите ее работу.

Результат

В результате выполнения команды будет обеспечено восстановление базы данных с использованием технологии FUSE.

Исключительные сценарии

  • Не удалось установить подключение к смонтированному каталогу.
  • Недостаточно оперативной памяти.
  • Ошибка в назначении прав доступа к файлам.