PostgreSQL backup to Azure

Nov 30, 2016 21:33


С появлением облачных хранилищ стало грешным не использовать их возможности по хранению террабайтов данных за копейки, поэтому будем сохранять туда Continuous Archive данных из PostgreSQL.

В нашем случае действие происходит на базе Ubuntu 14, PostgreSQL 9.5 установлен локально.
Первым шагом нам необходимо установить сам pghoard и supervisor, т.к. systemd нет, а запускать демона с системой нужно.

Текущая версия pghoard 1.4 в pypi нам не подходит (в ней нету поддержки новых модулей azure-storage), поэтому инсталлировать её нужно из репозитория, а поскольку pghoard работает только с третьим питоном, то делаем это с помощью pip3
UPDATE:
предварительно нужно установить модули:

azure azure-storage==0.33
и проапгрейдить requests до версии 2.10+
END UPDATE

pip3 install git+https://github.com/ohmu/pghoard apt-get install supervisor
Для автозапуска демона создаём конфигурационный файл pghoard.conf с минимально необходимым контентом и кладём его в /etc/supervisor/conf.d/

[program:pghoard] user = postgres # Запускать нужно от имени postgres, иначе не удастся подключиться к СУБД group = postgres directory = /var/lib/pghoard command = /usr/local/bin/pghoard /var/lib/pghoard/pghoard.json autostart=true autorestart=true environment=HOME="/var/lib/postgresql" # Должен быть HOME пользователя postgres (туда записывается пароль и потом оттуда считывается)
Создаём пользователя в postgresql для выполнения репликации:
psql -c "CREATE USER pghoard PASSWORD 'hoardpassword' REPLICATION"

И вносим в /etc/postgresql/9.5/main/pg_hba.conf запись, разрешающую выполнять репликацию:
host replication pghoard 127.0.0.1/32 md5

В конфигурационный файл postgresql.conf нужно внести изменения, разрешающие выполнять репликацию:

max_wal_senders = 2 wal_level = archive # 'hot_standby' or 'logical' are also ok
Перезапускаем postgresql и настраиваем pghoard на работу с Azure:

{ "backup_location": "/var/lib/pghoard", "backup_sites": { "mysite": { "nodes": [ { "host": "127.0.0.1", "password": "hoardpassword", "port": 5432, "user": "pghoard" } ], "object_storage": { "storage_type": "azure", "account_name": "", "account_key": "", "bucket_name": "" } } } }
После этого выполняем service supervisor restart и наблюдаем, как бекапы заливаются в azure blob storage.

Originally published at . You can comment here or there.

uncategorized, azure, postgresql, backup

Previous post Next post
Up