PostgreSQL backup to Azure

С появлением облачных хранилищ стало грешным не использовать их возможности по хранению террабайтов данных за копейки, поэтому будем сохранять туда 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": "<storage-account>",
                                "account_key": "<storage-account-key>",
                                "bucket_name": "<bucket-name>"
                        }
                }
        }
}

После этого выполняем service supervisor restart и наблюдаем, как бекапы заливаются в azure blob storage.

Similar Posts

  • Здоровый сон

    Нет, все-таки надо высыпаться, судя по моему организму, у невыспавшегося чела производительность труда стремится к нулю. Я весь день сижу на форуме и в чате и нифига не сделал по работе до сих пор. И наверно не сделаю 🙂 Надо хотя бы идеи позаписывать, которые иногда все-таки меня посещают 🙂 Share this post: Share on…

  • пятница

    сегодняшняя пятница почему-то меня радует как никогда 🙂 Задолбался я на этой неделе воркать, хачю атдахнуть 🙂 Седня буду пить пиво и играть в старкрафт до умопомрачения, тем более что некто должен мне несколько бутылочек, да и дядя Шад тоже, думаю. Кароче привет алкоголизм 🙂 Share this post: Share on X (Twitter) Share on Facebook…

  • Выпивка 2

    Нда… В орехе оказывается был детский лепет 🙂 Вот корпоративная пати – это оно, в общем я больше в такие игры не играю – в смысле стока не пью 🙂Зацените 🙂 а вот что бывает через некоторое время 🙂 На всяк случай замечу – меня здесь нету 🙂 Share this post: Share on X (Twitter)…

  • Прошедшая неделя

    Summary: -Приехали из карпат. Ездили паравозом, большой сборной компанией (человек 60), состоявшей из представителей тростян-кома, сноуборд-ком-уа, мицу-клуба и представителей фирмы элан, в Ивано-Франковск, оттуда в Ясиня из которых на мегатранспорте ГАЗ-66 поднялись на Драгобрат, где тестировали новую коллекцию элановских лыж. После этого я понял, что катаюсь на дровах 🙂 Вечером завалило снегом, на следующее утро…

  • Турция ч.3

    На Болгарию Эфорие-Норд – Дуран-Кулак – Несебър – Бургас – Царево – Малко Търново Граница возникла внезапно, вот мы ехали, а вот хлоп, и оказывается, что то, что мы видим – это не придорожное кафе, а пограничный переход, очень небольшой, на две полосы. Share this post: Share on X (Twitter) Share on Facebook Share on…

  • После военки

    Странное я создание – пришел на военку, хочу спать, значит надо затусоваться где-то и поспать, приваливает счастье в виде отсутствия первой пары – вместо того чтобы воспользоваться моментом я читал книгу – новые главы нового произведения С. Лукьяненко. После 3й пары наш майор-подполковник зовет 2 добровольцев подержать лестницу и разрешает свалить после этого – я…