我已经在postgres配置文件中启用了WAL归档。当我重新启动Postgres服务时,WAL恢复不起作用。日志中没有wal恢复条目。
我遵循的步骤是:
Created directory for wal:
mkdir -p /var/lib/pgsql/wals/
mkdir -p /var/lib/pgsql/backups/
chown postgres:postgres -R /var/lib/pgsql/backups/
chown postgres:postgres -R /var/lib/pgsql/wals/
Edited the postgresql.conf with the below changes:
wal_level=archive
archive_mode=on
archive_command = 'test ! -f /var/lib/pgsql/wals/%f && cp %p /var/lib/pgsql/wals/%f'
sudo service postgresql restart 10
sudo su - postgres
pg_basebackup -D /var/lib/pgsql/data #created base backup
tar -C /var/lib/pgsql/data/ -czvf /var/lib/pgsql/backups/pg_basebackup_backup.tar.gz .
删除我的数据库中的两行数据并停止postgres服务
sudo service postgresql stop 10
提取基本备份
tar xvf /var/lib/pgsql/backups/pg_basebackup_backup.tar.gz -C /var/lib/pgsql/data
创建具有以下内容的recovery.conf并重新启动postgres服务
echo "restore_command = 'cp /var/lib/pgsql/wals/%f %p'">/var/lib/pgsql/recovery.conf
cp /var/lib/pgsql/recovery.conf /var/lib/pgsql/data/
sudo service postgresql stop 10
sudo service postgresql start 10
日志中没有wal恢复条目,我删除的两行没有恢复。
发布于 2018-02-22 11:56:29
pg_basebackup可以在备份期间捕获所有WAL段。我通过"-X流“选项将into备份转换为tar格式,所有这些操作都很好。看看这里-- bash备份-bash脚本,用于在Google存储上进行备份和存档。,它工作得很好--我备份数据库4.5+ TB很大,需要将近两天的时间。
恢复在这里描述- 基本备份/ pg-barman -还原tar备份
所有的工作-我们已经发生了事故,当我们必须从这些备份恢复。
发布于 2018-02-22 10:07:26
包含两个已删除行的WAL可能还没有归档。
每当16 MB的WAL段已满或有什么东西强制进行日志切换时,就会运行archive_command
。
要恢复尚未存档的最新更改,必须将pg_wal
的内容复制到还原的基本备份中的pg_wal
目录中。
如果不能丢失事务,还可以考虑流复制或pg_receivewal
。
https://stackoverflow.com/questions/48918154
复制相似问题