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 X (Twitter) Share on Facebook…

  • ПДД

    Таки приняли! Теперь и у нас смогут пользоваться камерами и фотоаппаратами для фиксации нарушений, эвакуаторы будут работать вполне легально, а штрафы снова смогут брать по месту (но не все, а особо облачённые доверием). Ввели систему контроля систематических нарушений – будут баллы выдавать – набрал 30, отдохни от вождения. За систематическую пьянку на 10 лет общественного…

  • Крым

    Крым весной – это здорово 🙂 И пусть эта весна не очень теплая, там все-равно теплее и приятнее 🙂 Особенно в Ялте, все-таки это уже субтропики. Не очень приятно, правда, приезжать в 4 утра в Симферополь, но зато оттуда в такую рань очень легко выбраться. Приятно ходить по Ялте в 6 утра, когда ты еще…

  • В поисках работы

    Запостил вчера ночью на геймдев-форуме сообщение о поиске работы. Откликнулось целых два человека, один, правда, я так понял хотел просто позвать в “энтузиастическую” разработку, а второй предложил кинуть ему резюме для более детального анализа. Вот интересно, чем это закончится. Я похоже к этому очень серьезно отношусь, весь день на нервах. С другой стороны оно и…

  • Хочу машину-2

    У меня началась 2я итерация приступа под названием “Хочу купить новую машину”, сегодня весь день лазил в нете по доскам обьявлений и форумам – все искал ее, пока не очень успешно, но ничего, я думаю, что еще все впереди, теперь надо начинать задавать вопросы. Обязательно наступит день, когда предложат что-то стоящее и я куплю новый…

  • uwsgi

    Случайно обнаружилось, что в ini конфиге uwsgi важен порядок объявления параметров, поэтому если сначала объявить virtualenv, а потом указать подключение плагина python3, то будет попытка завестись с системным питоном. Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share on Email Share on Reddit