С появлением облачных хранилищ стало грешным не использовать их возможности по хранению террабайтов данных за копейки, поэтому будем сохранять туда 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.