簡體   English   中英

Postgres中的WAL歸檔不起作用

[英]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 .

刪除數據庫中的兩行數據並停止了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

日志中沒有沃爾瑪恢復條目,刪除的兩行也沒有恢復。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM