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

  • Ghost in the shell:SAC 2nd GIG

    Начал смотреть второй сезон сериала, мне показалось или он действительно стал более атмосферным киберпанком? Вообще пока нравится, прикольно так, затягивает зрелище, первый сезон не было такого желания смотреть как сейчас второй. Начинает мешать работать 🙂 Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share on Email Share on Reddit

  • Автомобиль

    Я наконец-то заимел возможность ездить на машине, вы думаете я стал крутым мачо, который может теперь перемещаться по городу со скоростью света и никуда не опаздывать? ХРЕН!!! Потому что это советский автомобиль, а это значит, что дня 3-4 ты ездишь, а потом столько же ты снова ездишь, но на обычном транспорте, потому что машина не…

  • Новый релиз техно-демо игры

    Наконец добил физику, теперь она намного лучше, чем та пародия, которая была раньше. Теперь это целый физический симулятор с обнаружением коллизий 🙂 лежит тут Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share on Email Share on Reddit

  • starcraft II beta

    Вчера утром в почте я обнаружил инвайт на бета-тест второго старкрафта. Очень приятная неожиданность, ну очень! 🙂 Вечером я до него наконец-то добрался и сел чуток “потестить”. Итак, в бете доступен только мультиплеер, работает автоматическая система подбора противника по уровню профессионализма, можно обойтись без неё, но я до этого пока не добрался, поставил себе новичка…

  • Снова пьянка

    На выходные ездили на дачу к нашей малой, формально – праздновать защиту магистров, реально – просто “погулять”. На этот раз было прикольнее чем прошлые пьянки – там есть футбольное поле. Мы посидели на пляже и пошли играть в футбол. Хорошая игра, тем более на фоне ЧМ 🙂 Отбегались так, что когда вернулись назад, то и…