wal-g#

wal-g

wal-g

wal-g — инструмент для восстановления архивных данных в PostgreSQL

WAL-G для PostgreSQL

Вы можете использовать wal-g в качестве инструмента для создания зашифрованных, сжатых резервных копий PostgreSQL (полных и инкрементных) и отправки/получения их в/из хранилища без сохранения на вашей файловой системе.

Если вы предпочитаете использовать Docker Image, вы можете напрямую протестировать wal-g с помощью этой песочницы playground.

О wal-g

Версия: 2.0.1

GitHub

Разработка

Дополнительно:

  • Чтобы собрать с libsodium, установите переменную среды USE_LIBSODIUM.

  • Чтобы собрать с декомпрессором lzo, установите переменную окружения USE_LZO.

Ubuntu

# Install latest Go compiler
sudo add-apt-repository ppa:longsleep/golang-backports 
sudo apt update
sudo apt install golang-go

# Install lib dependencies
sudo apt install libbrotli-dev liblzo2-dev libsodium-dev

# Fetch project and build
go get github.com/wal-g/wal-g
cd ~/go/src/github.com/wal-g/wal-g
make deps
make pg_build
main/pg/wal-g --version

Пользователи также могут установить WAL-G, используя make pg_install. Указание переменной среды GOBIN перед установкой позволяет пользователю указать место установки. По умолчанию, make pg_install помещает скомпилированный бинарный файл в корневой каталог (/).

export USE_LIBSODIUM=1
export USE_LZO=1
make pg_clean
make deps
GOBIN=/usr/local/bin make pg_install

macOS

# brew command is Homebrew for Mac OS
brew install cmake
export USE_LIBSODIUM="true" # since we're linking libsodium later
./link_brotli.sh
./link_libsodium.sh
make install_and_build_pg

Скомпилированный бинарный файл для запуска - main/pg/wal-g

Конфигурация

WAL-G использует обычные переменные среды PostgreSQL для настройки подключения, включая особенности PGHOST, PGPORT, PGUSER, и PGPASSWORD/PGPASSFILE/~/.pgpass.

PGHOST может подключаться через UNIX-сокет. Этот режим предпочтительнее для подключений localhost, установите PGHOST=/var/run/postgresql для его использования. WAL-G будет подключаться через TCP, если PGHOST является IP адресом.

  • WALG_DISK_RATE_LIMIT

Для настройки ограничения скорости чтения диска во время backup-push в байтах в секунду.

  • WALG_NETWORK_RATE_LIMIT Для настройки ограничения скорости загрузки в сеть во время backup-push в байтах в секунду.

Значения параллелизма могут быть настроены с помощью:

  • WALG_DOWNLOAD_CONCURRENCY

Для настройки количества гоупроцедур, используемых во время backup-fetch и wal-fetch, используйте WALG_DOWNLOAD_CONCURRENCY. По умолчанию, WAL-G использует минимальное количества извлекаемых файлов и 10.

  • WALG_PREFETCH_DIR

По умолчанию предварительная выборка WAL сохраняет выбранные данные в каталоге pg_wal. Это гарантирует, что WAL можно легко переместить из места предварительной выборки в каталоге фактического использования WAL. Но это может иметь негативные последствия, если вы используете его с pg_rewind в PostgreSQL 13. PostgreSQL 13 способен вызывать restore_command во время pg_rewind. Предварительно выбранный WAL может вызвать ложную ошибку pg_rewind. Чтобы избежать этого, вы можете либо отключить предварительную выборку во время перемотки (установите WALG_DOWNLOAD_CONCURRENCY = 1), либо поместите папку предварительной выборки wal за пределами PGDATA. Подробности смотрите в this pgsql-hackers thread.

  • WALG_UPLOAD_CONCURRENCY

Для настройки количества параллельных потоков при загрузке резервной копии используйте WALG_UPLOAD_CONCURRENCY. По умолчанию, WAL-G использует 16 потоков.

  • WALG_UPLOAD_DISK_CONCURRENCY

Для настройки количества параллельных потоков, считывающих данные с диска во время backup-push, используется параметр wal_concurrency. По умолчанию, WAL-G использует 1 поток.

  • TOTAL_BG_UPLOADED_LIMIT (например, 1024) Переопределяет number of WAL files to upload during one scan. По умолчанию будет загружено не более 32 файлов WAL.

  • WALG_SENTINEL_USER_DATA

Этот параметр позволяет инструментам автоматизации резервного копирования добавлять дополнительную информацию в файл JSON-маркер во время backup-push. Этот параметр может использоваться, например, для задания пользовательских имен для резервных копий. Примечание: UserData должен быть допустимой строкой JSON.

  • WALG_PREVENT_WAL_OVERWRITE

Если этот параметр указан, во время wal-push WAL-G будет проверять наличие WAL перед его загрузкой. Если другой файл уже архивирован под тем же именем, WAL-G вернет ненулевой код выхода, чтобы предотвратить удаление WAL PostgreSQL.

  • WALG_DELTA_MAX_STEPS

Дельта-бэкап - это разница между ранее созданной резервной копией и текущим состоянием. WALG_DELTA_MAX_STEPS определяет, сколько дельта-резервных копий может быть между полными резервными копиями. По умолчанию равно 0. Процесс восстановления автоматически получит все необходимые дельта-копии и базовую резервную копию и составит допустимую восстановленную резервную копию (вам все равно нужны WAL-файлы после начала последней резервной копии для восстановления согласованного кластера). Вычисление дельты основано на ModTime файловой системы и номере LSN страниц в файле данных.

  • WALG_DELTA_ORIGIN

Для настройки базы для следующего дельта-бэкапа (только если не превышено значение WALG_DELTA_MAX_STEPS). WALG_DELTA_ORIGIN может быть LATEST (цепочка инкрементов), LATEST_FULL (для баз, где волатильная часть компактна и цепочка не имеет значения - дельты перезаписывают друг друга). По умолчанию установлено значение LATEST.

  • WALG_TAR_SIZE_THRESHOLD

Для настройки размера одного резервного пакета (в байтах). Меньший размер обеспечивает более мелкую гранулярность и более оптимальное, быстрое восстановление. Однако это также увеличивает количество запросов к хранилищу, поэтому может стоить вам много денег. Размер по умолчанию - 1 ГБ (1 << 30 - 1 байт).

  • WALG_TAR_DISABLE_FSYNC

Отключить вызов fsync после записи файлов при извлечении tar-архивов.

  • WALG_PG_WAL_SIZE

Для настройки размера сегмента wal, если он отличается от значения по умолчанию в postgres, равного 16 МБ

  • WALG_UPLOAD_WAL_METADATA

Чтобы загрузить метаданные, связанные с wal-файлами. WALG_UPLOAD_WAL_METADATA может быть INDIVIDUAL (генерирует метаданные для всех wal-журналов) или BULK (генерирует метаданные для набора wal-файлов). Пример файла метаданных (000000020000000300000071.json)

{
    "000000020000000300000071": {
    "created_time": "2021-02-23T00:51:14.195209969Z",
    "date_fmt": "%Y-%m-%dT%H:%M:%S.%fZ"
    }
}

Если значение параметра равно NOMETADATA или не указано, то будет использовано значение по умолчанию (без генерации метаданных wal).

  • WALG_ALIVE_CHECK_INTERVAL

Для контроля того, как часто WAL-G будет проверять, работает ли Postgres во время backup-push. Если проверка не пройдет, backup-push прекращает работу.

Примеры: - 0 - отключить проверки активности (значение по умолчанию) - 10s - проверять каждые 10 секунд - 10m - проверять каждые 10 минут

  • WALG_STOP_BACKUP_TIMEOUT

Таймаут для вызова pg_stop_backup(). По умолчанию таймаут отсутствует.

Примеры: - 0 - отключить тайм-аут (значение по умолчанию) - 10s - тайм-аут в 10 секунд - 10m - тайм-аут в 10 минут

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

извлечение-резервной-копии

При получении базовых резервных копий пользователь должен передать имя резервной копии и путь к каталогу для извлечения. Если этот каталог не существует, WAL-G создаст его и все зависимые подкаталоги.

wal-g backup-fetch ~/extract/to/here example-backup

WAL-G также может получить последнюю резервную копию с помощью:

wal-g backup-fetch ~/extract/to/here LATEST

WAL-G может получить резервную копию с определенными UserData (хранящимися в метаданных резервной копии) с помощью флага --target-user-data или переменной WALG_FETCH_TARGET_USER_DATA:

wal-g backup-fetch /path --target-user-data "{ \"x\": [3], \"y\": 4 }"

Обратная распаковка дельты

Бета-функция: WAL-G может распаковывать дельта-копии в обратном порядке для улучшения эффективности загрузки.

Чтобы активировать эту функцию, выполните одно из следующих действий:

  • Установите переменную среды WALG_USE_REVERSE_UNPACK.

  • добавьте флаг –reverse-unpack

wal-g backup-fetch /path LATEST --reverse-unpack

Пропуск избыточных архивов

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

  1. Опционально. Увеличивает вероятность пропуска архива, но может привести к более медленному созданию резервной копии. Включите режим компоновщика tar-архивов с оценкой для backup-push.

  2. Включите пропуск избыточных архивов резервных копий во время операции восстановления резервной копии. Выполните одно из следующих действий:

  • Установите переменные среды WALG_USE_REVERSE_UNPACK и WALG_SKIP_REDUNDANT_TARS.

  • Добавьте флаги --reverse-unpack и --skip-redundant-tars.

wal-g backup-fetch /path LATEST --reverse-unpack --skip-redundant-tars

резервное-копирование-отправить

При загрузке резервных копий в хранилище, пользователь должен передать каталог данных Postgres в качестве аргумента.

wal-g backup-push $PGDATA

WAL-G будет проверять, что аргумент команды, переменная окружения PGDATA и настройка конфигурации PGDATA совпадают, если они установлены.

Если резервное копирование запускается с резервного сервера, WAL-G будет отслеживать временную шкалу сервера. Если происходит повышение или изменение временной шкалы во время резервного копирования, данные будут загружены, но не завершены, и WAL-G завершится с ошибкой. Журналы будут содержать необходимую информацию для завершения резервного копирования, которое затем можно использовать, если вы ясно понимаете риски.

backup-push также можно запустить с флагом --permanent, который пометит резервную копию как постоянную и предотвратит ее удаление при выполнении команды delete.

Удаленное резервное копирование

WAL-G backup-push позволяет использовать два варианта потоковой передачи данных:

  1. Запускаясь непосредственно на сервере базы данных от имени пользователя postgres, wal-g может читать файлы базы данных из файловой системы. Этот вариант обеспечивает высокую производительность и дополнительные возможности, такие как дельта-резервное копирование.

Для загрузки резервных копий в S3 в потоковом варианте 1, пользователь должен передать путь, содержащий резервную копию, запущенную Postgres, как в:

wal-g backup-push /backup/directory/path
  1. В качестве альтернативы, WAL-G может передавать данные резервного копирования через протокол postgres BASE_BACKUP. Это позволяет WAL-G передавать данные резервного копирования через слой tcp, позволяет работать удаленно и позволяет WAL-G работать как отдельный пользователь linux. WAL-G требует подключения к базе данных с привилегиями репликации. Обратите внимание, что протокол BASE_BACKUP не позволяет многопоточную передачу данных, и что в настоящее время не реализована дельта-резервное копирование.

Чтобы передать резервные данные, не указывайте каталог данных. И чтобы установить имя хоста для сервера postgres, вы можете использовать переменную среды PGHOST или аргумент WAL-G –pghost.

# Inline
PGHOST=srv1 wal-g backup-push

# Export
export PGHOST=srv1
wal-g backup-push

# Use commandline option
wal-g backup-push --pghost srv1

Опция удаленного резервного копирования также может быть использована для: * Запуска Postgres на нескольких хостах (репликация потокового воспроизведения), и резервного копирования с помощью WAL-G, используя конфигурацию для нескольких хостов: wal-g backup-push --pghost srv1,srv2 * Запуска Postgres на хосте Windows и резервного копирования с помощью WAL-G на хосте Linux: PGHOST=winsrv1 wal-g backup-push * Планирования WAL-G в качестве CronJob в Kubernetes

Режим оценки компоновщика

В режиме компоновщика рейтинга, WAL-G размещает файлы с похожими частотами обновлений в одних и тех же tarballs во время создания резервной копии. Это должно увеличить эффективность backup-fetch пропуска избыточных архивов. Обратите внимание, что хотя компоновщик рейтинга позволяет сохранять больше данных, это может привести к замедлению создания резервной копии по сравнению с компоновщиком tarball по умолчанию.

Чтобы активировать эту функцию, выполните одно из следующих действий:

  • Установите переменную среды WALG_USE_RATING_COMPOSER.

  • добавьте флаг –rating-composer

wal-g backup-push /path --rating-composer

Режим копирования компоновщика

В режиме копирования компоновщика, WAL-G выполняет полное резервное копирование и копирует неизмененные tar-файлы из предыдущего полного резервного копирования. В случае отсутствия предыдущего полного резервного копирования используется обычный компоновщик.

Чтобы активировать эту функцию, выполните одно из следующих действий:

  • Установите переменную среды WALG_USE_COPY_COMPOSER.

  • добавьте флаг –copy-composer

wal-g backup-push /path --copy-composer

Резервное копирование без метаданных

По умолчанию, WAL-G отслеживает метаданные файлов, которые были скопированы. Если было скопировано миллионы файлов (обычно в случае с сотнями баз данных и тысячами таблиц в каждой базе данных), отслеживание только этой метаданных потребовало бы гигабайт памяти.

Если включена опция --without-files-metadata или WALG_WITHOUT_FILES_METADATA, то WAL-G не отслеживает метаданные файлов, которые были созданы резервной копией. Это значительно снижает использование памяти на экземплярах с более чем 100 тыс. файлов.

Ограничения

  • Нельзя использовать с rating-composer, copy-composer

  • Не может быть использовано с delta-from-user-data, delta-from-name, add-user-data

Чтобы активировать эту функцию, выполните одно из следующих действий:

  • Установите переменную среды WALG_WITHOUT_FILES_METADATA.

  • Добавьте флаг --without-files-metadata.

wal-g backup-push /path --without-files-metadata

Создание дельты из конкретной резервной копии

При создании дельта-резервной копии (WALG_DELTA_MAX_STEPS > 0) по умолчанию WAL-G использует последнюю резервную копию в качестве базы. Это поведение можно изменить с помощью следующих флагов:

  • Флаг --delta-from-name или переменная окружения WALG_DELTA_FROM_NAME для выбора резервной копии с указанным именем в качестве базы для дельта-бэкапа

  • --delta-from-user-data флаг или WALG_DELTA_FROM_USER_DATA переменная окружения для выбора резервной копии с указанными пользовательскими данными в качестве базы для дельта-бэкапа

Примеры:

wal-g backup-push /path --delta-from-name base_000000010000000100000072_D_000000010000000100000063
wal-g backup-push /path --delta-from-user-data "{ \"x\": [3], \"y\": 4 }"

При использовании вышеуказанных флагов в сочетании с настройкой WALG_DELTA_ORIGIN, логика WALG_DELTA_ORIGIN применяется к указанному резервному копированию. Например:

list of backups in storage:
base_000000010000000100000040  # full backup
base_000000010000000100000046_D_000000010000000100000040  # 1st delta
base_000000010000000100000061_D_000000010000000100000046  # 2nd delta
base_000000010000000100000070  # full backup

export WALG_DELTA_ORIGIN=LATEST_FULL
wal-g backup-push /path --delta-from-name base_000000010000000100000046_D_000000010000000100000040

wal-g logs:
INFO: Selecting the backup with name base_000000010000000100000046_D_000000010000000100000040 as the base for the current delta backup...
INFO: Delta will be made from full backup.
INFO: Delta backup from base_000000010000000100000040 with LSN 140000060.

Проверка контрольной суммы страниц

Для включения проверки контрольных сумм страниц во время резервного копирования-передачи, используйте флаг --verify или установите переменную среды WALG_VERIFY_PAGE_CHECKSUMS. Если найдены поврежденные номера блоков (в настоящее время не более 10), они будут записаны в резервную копию в формате json, например:

...
"/base/13690/13535": {
"IsSkipped": true,
"MTime": "2020-08-20T21:02:56.690095409+05:00",
"IsIncremented": false
},
"/base/16384/16397": {
"CorruptBlocks": [
1
],
"IsIncremented": false,
"IsSkipped": false,
"MTime": "2020-08-21T19:09:52.966149937+05:00"
},
...

извлечение-wal

При получении архивов WAL из S3 пользователь должен передать имя архива и имя файла для загрузки. Этот файл не должен существовать, так как WAL-G создаст его для вас.

WAL-G также будет предварительно загружать файлы WAL перед запрошенным файлом WAL. Эти файлы будут кешироваться в каталоге ./.wal-g/prefetch. Кешированные файлы, старше недавно запрошенного файла WAL, будут удалены из кеша, чтобы предотвратить его разрастание. Если файл запрашивается с помощью wal-fetch, это также удалит его из кеша, но вызовет выполнение кеша новым файлом.

wal-g wal-fetch example-archive new-file-name

Обратите внимание: wal-fetch завершится с кодом ошибки 74 (EX_IOERR: ошибка ввода/вывода, см. sysexits.h для получения дополнительной информации), если файл WAL недоступен в репозитории. Все остальные ошибки приводят к коду выхода 1 и должны остановить PostgreSQL, а не завершить восстановление PostgreSQL. Для PostgreSQL это должен быть любой код ошибки между 126 и 255, который можно получить с помощью простого оболочечного скрипта. Пожалуйста, смотрите https://github.com/wal-g/wal-g/pull/1195 для получения дополнительной информации.

wal-push

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

wal-g wal-push /path/to/archive

wal-show

Показать информацию о папке хранения WAL. wal-show показывает все временные линии сегментов WAL, доступные в хранилище, отображает доступные резервные копии для них, и проверяет их на отсутствующие сегменты.

  • если в диапазоне нет пропусков (отсутствующих сегментов), конечный статус будет OK

  • Если найдены отсутствующие сегменты, конечный статус будет LOST_SEGMENTS.

wal-g wal-show

По умолчанию, команда wal-show отображает доступные резервные копии для каждой временной линии. Чтобы отключить это, добавьте флаг --without-backups.

По умолчанию вывод wal-show представлен в виде таблицы в формате обычного текста. Чтобы получить подробный вывод в формате JSON, добавьте флаг --detailed-json.

wal-verify

Выполните серию проверок, чтобы убедиться, что хранилище сегментов WAL находится в рабочем состоянии. Доступные проверки:

integrity - гарантирует наличие последовательности WAL-сегментов согласно истории кластера, чтобы WAL-G мог выполнять восстановление в точку во времени для резервной копии. По сути, он проверяет наличие всех WAL-сегментов в диапазоне [самый старый сегмент резервной копии, текущий сегмент кластера) в хранилище. Если резервные копии не найдены, будет выполнено сканирование диапазона [1, текущий сегмент кластера).

Диаграмма G.1. ИллюстрацияСтатусаСегмента

SegmentStatusIllustration

В выводе проверки целостности, существуют четыре статуса сегментов WAL:

  • FOUND сегменты присутствуют в хранилище WAL

  • MISSING_DELAYED сегменты отсутствуют в хранилище WAL, но, вероятно, Postgres еще не пытался архивировать их с помощью archive_command

  • MISSING_UPLOADING сегменты - это сегменты, которые отсутствуют в хранилище WAL, но кажется, что они находятся в процессе загрузки в хранилище

  • MISSING_LOST сегменты отсутствуют в хранилище WAL и не являются ни MISSING_UPLOADING, ни MISSING_DELAYED

ProbablyUploading размер диапазона сегментов берется из настройки WALG_UPLOAD_CONCURRENCY.

ProbablyDelayed размер диапазона сегментов контролируется с помощью настройки WALG_INTEGRITY_MAX_DELAYED_WALS.

Вывод состоит из: 1. Статус проверки integrity: * OK, если нет отсутствующих сегментов * WARNING, если есть некоторые отсутствующие сегменты, но они не являются MISSING_LOST * FAILURE, если есть некоторые отсутствующие сегменты MISSING_LOST 2. Список, показывающий WAL-сегменты в хронологическом порядке, сгруппированные по временной шкале и статусу.

timeline - проверяет, является ли текущая временная шкала кластера больше или равной любой из временных шкал WAL-сегментов хранилища. Эта проверка полезна для обнаружения конфликтов "split-brain". Обратите внимание, что эта проверка работает правильно только если создано новое хранилище или существующее очищено при восстановлении из резервной копии или выполнении pg_upgrade.

Вывод состоит из: 1. Статус проверки timeline: * OK, если текущий идентификатор timeline совпадает с наивысшим идентификатором timeline, найденным в хранилище * WARNING, если не удалось определить, совпадает ли текущий идентификатор timeline с наивысшим в хранилище * FAILURE, если текущий идентификатор timeline не равен наивысшему идентификатору timeline, найденному в хранилище 2. Текущий идентификатор timeline. 3. Наивысший идентификатор timeline, найденный в папке хранения WAL.

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

wal-g wal-verify [space separated list of checks]
# For example:
wal-g wal-verify integrity timeline # perform integrity and timeline checks
wal-g wal-verify integrity # perform only integrity check

По умолчанию вывод wal-verify является обычным текстом. Чтобы включить вывод в формате JSON, добавьте флаг --json.

Пример вывода в виде обычного текста:

[wal-verify] integrity check status: OK
[wal-verify] integrity check details:
+-----+--------------------------+--------------------------+----------------+--------+
| TLI | START                    | END                      | SEGMENTS COUNT | STATUS |
+-----+--------------------------+--------------------------+----------------+--------+
|   3 | 00000003000000030000004D | 0000000300000004000000F0 |            420 |  FOUND |
|   4 | 0000000400000004000000F1 | 000000040000000800000034 |            836 |  FOUND |
+-----+--------------------------+--------------------------+----------------+--------+
[wal-verify] timeline check status: OK
[wal-verify] timeline check details:
Highest timeline found in storage: 4
Current cluster timeline: 4

Пример вывода в формате JSON:

{
   "integrity":{
      "status":"OK",
      "details":[
         {
            "timeline_id":3,
            "start_segment":"00000003000000030000004D",
            "end_segment":"0000000300000004000000F0",
            "segments_count":420,
            "status":"FOUND"
         },
         {
            "timeline_id":4,
            "start_segment":"0000000400000004000000F1",
            "end_segment":"000000040000000800000034",
            "segments_count":836,
            "status":"FOUND"
         }
      ]
   },
   "timeline":{
      "status":"OK",
      "details":{
         "current_timeline_id":4,
         "highest_storage_timeline_id":4
      }
   }
}

получение-wal

Установите переменную окружения WALG_SLOTNAME для определения используемого слота (по умолчанию используется walg). Имя слота может состоять только из следующих символов: [0-9A-Za-z_]. При загрузке архивов WAL на S3, пользователь должен указать абсолютный путь к месту, где расположен архив.

wal-g wal-receive

маркер-резервного-копирования

Резервные копии могут быть помечены как постоянные, чтобы предотвратить их удаление при выполнении команды delete. Постоянность резервной копии может быть изменена с помощью этой команды, передавая имя резервной копии (которое можно получить с помощью wal-g backup-list --pretty --detail --json), которая пометит именованную резервную копию и все предыдущие связанные резервные копии как постоянные. Обратное действие также возможно с помощью флага -i.

wal-g backup-mark example-backup -i

catchup-push

Чтобы создать инкрементную резервную копию catchup, пользователь должен передать путь к главному каталогу Postgres и LSN реплики, для которой создается резервная копия.

Шаги: 1) Остановите реплику 2) Получите LSN реплики (например, используя команду pg_controldata) 3) Начните загрузку инкрементальной резервной копии на мастере.

wal-g catchup-push /path/to/master/postgres --from-lsn replica_lsn

catchup-fetch

Чтобы принять инкрементное резервное копирование catchup, созданное с помощью catchup-push, пользователь должен передать путь к реплицируемому каталогу Postgres и имя резервной копии.

wal-g catchup-fetch /path/to/replica/postgres backup_name

copy

Эта команда поможет изменить хранилище и переместить набор резервных копий туда или записать резервные копии на магнитную ленту. Например, wal-g copy --from=config_from.json --to=config_to.json скопирует все резервные копии.

Флаги:

  • -b, --backup-name string Копировать конкретный резервную копию

  • -f, --from string Конфигурация хранилища, откуда следует скопировать резервную копию

  • -t, --to string Конфигурация хранилища, куда следует скопировать резервную копию

  • -w, --without-history Копировать резервную копию без истории (wal файлы)

удалить мусор

Удаляет устаревшие архивы WAL и остаточные файлы резервных копий из хранилища, например, неудачные резервные копии или частично удаленные. Будут удалены все не постоянные объекты до самой ранней не постоянной резервной копии. Эта команда полезна, когда резервные копии удаляются командой delete target.

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

wal-g delete garbage           # Deletes outdated WAL archives and leftover backups files from storage
wal-g delete garbage ARCHIVES      # Deletes only outdated WAL archives from storage
wal-g delete garbage BACKUPS       # Deletes only leftover (partially deleted or unsuccessful) backups files from storage

восстановление-wal

Восстанавливает отсутствующие сегменты WAL, которые будут необходимы для выполнения pg_rewind из хранилища. Текущая версия поддерживает только локальные кластеры.

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

wal-g wal-restore path/to/target-pgdata path/to/source-pgdata

Резервное копирование pgBackRest (бета-версия)

pgbackrest список-резервных-копий

Список резервных копий pgbackrest.

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

wal-g pgbackrest backup-list [--pretty] [--json] [--detail]

pgbackrest резервное копирование-получение

Получить резервную копию pgbackrest. В настоящее время работает только с полными резервными копиями, инкрементные и дифференциальные резервные копии не поддерживаются.

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

wal-g pgbackrest backup-fetch path/to/destination-directory backup-name

pgbackrest извлечение wal

Получить файл wal из резервной копии pgbackrest

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

wal-g pgbackrest wal-fetch example-archive new-file-name

pgbackrest показать-wal

Показать wal-файлы из резервной копии pgbackrest

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

wal-g pgbackrest wal-show