Overview
WAL-G это инструмент для архивации и восстановления PostgreSQL, MySQL/MariaDB, and MS SQL Server (beta for MongoDB and Redis)
Installation
Готовые бинари можно найти тут - https://github.com/wal-g/wal-g/releases
Будем разбирать на примере последнего на текущий момент wal-g для postgres под ubuntu
https://github.com/wal-g/wal-g/releases/download/v2.0.1/wal-g-pg-ubuntu-20.04-amd64
Как можно заметить, имя релиза строится по следующему шаблону wal-g-DBNAME-OSNAME
Если тебе нужен wal-g под другую систему то смотри тут как собрать - https://wal-g.readthedocs.io/#development
Есть autocompletion: wal-g help completion
Итак, качаем бинарь, кладем в /usr/local/bin/wal-g
и даем ему права на исполнение
wget https://github.com/wal-g/wal-g/releases/download/v2.0.1/wal-g-pg-ubuntu-20.04-amd64
chmod ug+x wal-g-pg-ubuntu-20.04-amd64
mv wal-g-pg-ubuntu-20.04-amd64 /usr/local/bin/wal-g
Можем считать что установили
Configuration
Есть два способа сконфигурировать wal-g:
- Переменные окружения
- Конфигурационный файл
Через флаг --config /path
можно указать путь до конфига
We support every format that the viper package supports: JSON, YAML, envfile and others.
Every configuration variable mentioned in the following documentation can be specified either as an environment variable or a field in the config file.
Storage
Указывает куда wal-g должен складывать бэкапы. См. https://wal-g.readthedocs.io/STORAGES/
Compression
WALG_COMPRESSION_METHOD
- указывает какой метод компрессии использовать для бэкапов. Доступные варианты: lz4
, lzma
, zstd
, brotli
По умолчанию lz4
. Потому что это самый быстрый метод, но он имеет плохую степень сжатия. LZMA медленнее, но он сжимает в 6 раз сильнее чем LZ4. Brotli и ZSTD это хороший компромис между сжатием и скоростью, они сжимают в три раза сильнее чем LZ4
Encryption
YC_CSE_KMS_KEY_ID
,YC_SERVICE_ACCOUNT_KEY_FILE
- для настройки шифрования через Yandex Cloud KMSWALG_LIBSODIUM_KEY
,WALG_LIBSODIUM_KEY_PATH
,WALG_LIBSODIUM_KEY_TRANSFORM
- для настройки шифрования через libsodiumWALG_GPG_KEY_ID
,WALG_PGP_KEY
,WALG_PGP_KEY_PATH
,WALG_PGP_KEY_PASSPHRASE
- для настройки шифрования через GPG
Monitoring
WALG_STATSD_ADDRESS
- позволяет включить паблишинг метрик в statsd или statsd_exporter. Метрики будут засылаться по UDP. Порт по умолчанию - 9125
Profiling
Профилирование позволяет находить узкие места в работе wal-g
PROFILE_SAMPLING_RATIO
- число от 0 до 1 указывающее вероятность того что будет включен профилировщик. Если установлено значение 1, он всегда будет работать. Это позволяет осуществлять вероятностную выборку вызовов. Поскольку процессы WAL-G могут создаваться несколько раз в секунду (например, wal-g wal-push), мы не хотим профилировать их всеPROFILE_MODE
- какой профиль собираем, может быть одним из: cpu, mem, mutex, block, threadcreation, trace, goroutine. По умолчанию - cpuPROFILE_PATH
- директория в которую надо сложить профили. По умолчанию -$TMPDIR
Rate limiting
WALG_NETWORK_RATE_LIMIT
- задает ограничение трафика для операций backup-push
/backup-fetch
. Задается в байтах в секунду
Database-specific options
Есть множество db-specific опций, смотри их в https://wal-g.readthedocs.io/#databases
Usage
Следующие команды поддерживаются для всех типов баз данных
-
backup-list
- выводит список доступных бэкапов--pretty
- выводит в виде таблицы--json
- выводит в json, если добавить флаг--pretty
то будет красивый json--detail
- обогащает дополнительной инфой, можно добавить флаги--pretty
и/или--json
-
delete
- удаляет бэкапы и WAL'ы перед ними. По умолчанию ничего не сделает, если действительно хочешь удалить то нужно добавить в конец флаг--confirm
. Бэкапы помеченные как 'permanent' не будут удалены
delete
может работать в четырех режимах:retain
,before
,everything
иtarget
Они позволяют удалять либо все кроме определенного кол-ва наисвежайших, либо все до определенного бэкапа, либо все, либо конкретный бэкап
Подробности смотри в https://wal-g.readthedocs.io/#delete
Storage tools
Группа команд wal-g st
позволяет осуществлять прямое взаимодействие с сконфигурированными стораджами
Подробности в https://wal-g.readthedocs.io/StorageTools
Databases
PostgreSQL
Информация об установке, конфигурации и использовании
MySQL/MariaDB
Информация об установке, конфигурации и использовании
SQLServer
Информация об установке, конфигурации и использовании
Mongo [Beta]
Информация об установке, конфигурации и использовании
FoundationDB [Work in progress]
Информация об установке, конфигурации и использовании
Redis [Beta]
Информация об установке, конфигурации и использовании
Greenplum [Work in progress]
Информация об установке, конфигурации и использовании
Development
О том как собрать из исходников https://wal-g.readthedocs.io/#development
No Comments