![](/img/trans.png)
[英]Setting up WAL archiving by passing archive_command on the postgres command line in docker compose
[英]WAL archiving in postgres is not working
我已在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 .
sudo service postgresql stop 10
tar xvf /var/lib/pgsql/backups/pg_basebackup_backup.tar.gz -C /var/lib/pgsql/data
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
日志中沒有沃爾瑪恢復條目,刪除的兩行也沒有恢復。
pg_basebackup可以在備份期間捕獲所有WAL段。 我使用帶有“ -X流”選項的basebackup轉換為tar格式,並且一切正常。 請參閱此處-pg_basebackup-用於在Google存儲上進行備份和歸檔的bash腳本效果非常好-我備份了4.5+ TB的數據庫,需要大約2天的時間。
這里描述了恢復-pg_basebackup / pg-barman –恢復tar備份
所有工作-當我們不得不從這些備份中還原時,我們已經遇到了麻煩。
包含兩行刪除的WAL可能尚未歸檔。
每當16 MB WAL段已滿或由於某種原因迫使日志切換時,都會運行archive_command
。
為了能夠恢復尚未歸檔的最新更改,必須將pg_wal
的內容復制到已還原的基本備份中的pg_wal
目錄中。
如果您承受不起丟失事務的pg_receivewal
,也可以考慮使用流復制或pg_receivewal
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.