Postgresql:如何使用 wal-e 进行增量备份
Postgresql: How to take incremental backup with wal-e
我是 postgresql 新手。我已经使用 psycopg2 连接到我的演示数据库并使用 python faker 插入数据。我想使用工具 WAL-E 进行增量备份,并想看看它是如何工作的。但是少数教程并没有那么大的帮助,因为它们不适合天真的用户。
谁能帮忙简单解释一下如何用WAL-E备份数据的步骤?那将是一个很大的帮助!我在 Ubuntu 18.04.
中使用 psql 10.4
谢谢
安装 Python 和依赖项
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 配置以激活存档
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
测试 Wal-e 正在运行
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
我是 postgresql 新手。我已经使用 psycopg2 连接到我的演示数据库并使用 python faker 插入数据。我想使用工具 WAL-E 进行增量备份,并想看看它是如何工作的。但是少数教程并没有那么大的帮助,因为它们不适合天真的用户。
谁能帮忙简单解释一下如何用WAL-E备份数据的步骤?那将是一个很大的帮助!我在 Ubuntu 18.04.
中使用 psql 10.4谢谢
安装 Python 和依赖项
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 配置以激活存档
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
测试 Wal-e 正在运行
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