方法:
pg10.0之前:
select pg_switch_xlog();
pg10.0之后:
select pg_switch_wal();
備注:執(zhí)行 pg_switch_xlog() 后,WAL 會切換到新的日志,這時會將老的 WAL日志歸檔。
除了手動觸發(fā)歸檔,還有什么情況下,pg會進(jìn)行歸檔?
兩種情況:
①WAL 日志寫滿后觸發(fā)歸檔。
wal日志被寫滿后會觸發(fā)歸檔,wal日志默認(rèn)是16MB,這個值可以在編譯PostgreSQL時通過參數(shù)"--with-wal-segsize"設(shè)置,編譯后不能修改。
②archive_timeout時間控制。
可以設(shè)置archive超時參數(shù) archive_timeout ,假如設(shè)置archive_timeout=60,那么每 60s , 會觸發(fā)一次 WAL 日志切換,同時觸發(fā)日志歸檔,這里有個隱含的假設(shè): 當(dāng)前 WAL 日志中仍有未歸檔的WAL。
補充:postgresql開啟歸檔日志
步驟一:
修改postgresql的配置文件(postgresql.conf)
wal_level=hot_standby
archive_mode =on
archive_command ='DATE=`date +%Y%m%d`;DIR="/home/postgres/arch/$DATE";(test -d $DIR || mkdir -p $DIR) cp %p $DIR/%f'
ps:%p 是指相對路徑 %f是指文件名
步驟二:
創(chuàng)建歸檔路徑
mkdir -p /home/postgres/arch
chown -R postgres:postgres /home/postgres/arch
步驟三:
重啟數(shù)據(jù)庫
步驟四:
驗證歸檔是否正常
postgres=# checkpoint;
CHECKPOINT
postgres=# select pg_switch_xlog();
pg_switch_xlog
----------------
1/760000E8
(1 row)
postgres@ubuntu:~$ cd /home/postgres/data/data_1999/arch/
postgres@ubuntu:~/data/data_1999/arch$ ls
20150603
postgres@ubuntu:~/data/data_1999/arch$ cd 20150603/
postgres@ubuntu:~/data/data_1999/arch/20150603$ ls
000000010000000100000074 000000010000000100000075 000000010000000100000076
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- pgsql查詢優(yōu)化之模糊查詢實例詳解
- Postgresql 存儲過程(plpgsql)兩層for循環(huán)的操作
- pgsql之create user與create role的區(qū)別介紹
- pgsql之pg_stat_replication的使用詳解
- pgsql 如何刪除仍有活動鏈接的數(shù)據(jù)庫
- pgsql的UUID生成函數(shù)實例
- pgsql 實現(xiàn)分頁查詢方式