Postgresql: как сделать инкрементное резервное копирование с помощью Wal-e - PullRequest
0 голосов
/ 05 июля 2018

Я новичок в postgresql. Я подключился к своей демонстрационной базе данных с помощью psycopg2 и вставил данные с помощью python faker. Я хочу сделать инкрементное резервное копирование с помощью инструмента WAL-E и хочу посмотреть, как оно на самом деле работает. Но несколько учебных пособий не очень помогают, так как они не для наивных пользователей.

Может кто-нибудь помочь объяснить шаги просто, как сделать резервную копию данных с помощью WAL-E? Это было бы отличной помощью! Я использую psql 10.4 в Ubuntu 18.04.

Спасибо

1 Ответ

0 голосов
/ 04 декабря 2018

Установить Python & Dependencies

apt-get install python-dev python-virtualenv libevent-dev pv lzop daemontools
sudo apt-get install -y python3-pip
sudo apt-get install build-essential libssl-dev libffi-dev
sudo apt-get install -y python3-venv

Создание и активация виртуальной среды

Sudo python3 -m venv /opt/wal-e
source /opt/wal-e/bin/activate

Установка Wal-e

sudo /opt/wal-e/bin/pip install wal-e[aws]

Переменные среды установки

umask u=rwx,g=rx,o=
mkdir -p /etc/wal-e.d/env
sudo -i -u root
echo "Your AWS Secret Key" > /etc/wal-e.d/env/AWS_SECRET_ACCESS_KEY
echo "Your AWS Access Key" > /etc/wal-e.d/env/AWS_ACCESS_KEY_ID
echo 'Your AWS Region > /etc/wal-e.d/env/AWS_REGION
echo 's3://some-bucket/directory/or/whatever' > /etc/wal-e.d/env/WALE_S3_PREFIX
sudo chown -R root:postgres /etc/wal-e.d

Изменить Postgres Config для активации архивирования

sudo nano /etc/postgresql/10/main/postgresql.conf
wal_level = replica
archive_mode = on
archive_command = '/usr/bin/envdir /etc/wal-e.d/env /opt/wal-e/bin/wal-e wal-push %p'
archive_timeout = 60
sudo systemctl restart postgresql

Тест Валь-е работает

sudo -i -u postgres
/usr/bin/envdir /etc/wal-e.d/env /opt/wal-e/bin/wal-e backup-list

Теперь перенесите вашу первую базовую резервную копию на S3

/usr/bin/envdir /etc/wal-e.d/env /opt/wal-e/bin/wal-e backup-push /var/lib/postgresql/10/main

Теперь установите Cron для обычного резервного копирования

sudo -i -u postgres 

mkdir logs
touch backup.log
touch deletebackup.log

crontab -e

00 00 * * * /usr/bin/envdir /etc/wal-e.d/env /opt/wal-e/bin/wal-e backup-push /var/lib/postgresql/10/main > ~/logs/backup.log 2>&1
00 00 * * * /usr/bin/envdir /etc/wal-e.d/env  /opt/wal-e/bin/wal-e delete --confirm retain 1 > ~/logs/deletebackup.log 2>&1
...