PostgreSQL歸檔日志 手動觸發歸檔 select pg_switch_xlog()


(轉,做記錄)

一 環境信息
--1.1 PostgreSQL 版本
9.3.0

--1.2 postgresql.conf
wal_level = hot_standby
archive_mode = on
archive_command = 'test ! -f /archive/pg93/archive_active || cp %p /archive/pg93/%f'

--1.3 歸檔目錄
[pg93@redhatB pg93]$ pwd
/archive/pg93

[pg93@redhatB pg93]$ ll
total 32M
-rw-------. 1 pg93 pg93 16M Oct 16 11:05 00000001000000000000007A
-rw-------. 1 pg93 pg93 16M Oct 16 11:07 00000001000000000000007B
-rw-rw-r--. 1 pg93 pg93 0 Oct 16 11:05 archive_active --歸檔標識文件
備注:歸檔目錄為 "/archive/pg93",歸檔腳本為 archive_command 設置的內容,回到本文的問題:
什么情況下會觸發歸檔? 經觀察只要發生了 WAL 日志切換時,就會觸發歸檔,更進一步分析,
目前想到了以下三種切換 WAL 日志的方法。

方法一:手動切換 WAL 日志
PostgreSQL 提供 pg_switch_xlog() 函數可以手工切換 WAL 日志,如下:

--手動歸檔
[pg93@redhatB ~]$ psql
shpsql (9.3.0)
Type "help" for help.

postgres=# select pg_switch_xlog();
pg_switch_xlog
----------------
0/87000000
(1 row)
備注:執行 pg_switch_xlog() 后,WAL 會切換到新的日志,這時會將老的 WAL日志歸檔,這里歸檔到
/archive/pg93 目錄。

方法二:WAL 日志寫滿后觸發歸檔
WAL 日志被寫滿后會觸發歸檔,文檔在說明配置參數 archive_command 時的第一句說就說明了這點,
WAL 日志文件默認為 16MB,這個值可以在編譯 PostgreSQL 時通過參數 "--with-wal-segsize" 更改,編
譯后不能修改。

方法三:設置 archive_timeout

另外可以設置archive 超時參數 archive_timeout ,假如設置 archive_timeout=60 ,那么每 60 s ,
會觸發一次 WAL 日志切換,同時觸發日志歸檔,這里有個隱含的假設: 當前 WAL 日志中仍有未歸檔的 WAL



自己的實際配置:

  wal_level = archive
  archive_mode = on
  archive_command = 'test ! -f /usr/local/pgsql/archive_xlog/%f && cp %p /usr/local/pgsql/archive_xlog/%f'




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM