postgresql如何維護WAL日誌/歸檔日誌

來源:互聯網
上載者:User

標籤:-o   arch   targe   nbsp   nim   amp   16進位   segment   如何   

WAL日誌介紹

  wal全稱是write ahead log,是postgresql中的online redo log,是為了保證資料庫中資料的一致性和事務的完整性。而在PostgreSQL 7中引入的技術。它的中心思想是“先寫日誌後寫資料”,即要保證對資料庫檔案的修改應放生在這些修改已經寫入到日誌之後,同時,在PostgreSQL 8.3以後又加入了WalWriter日誌寫進程,可以保證事務提交記錄不是在提交時同步寫入到磁碟,而是非同步寫入,這樣就極大的減輕了I/O的壓力。所以說WAL日誌很重要。對保證資料庫中資料的一致性和事務的完整性。

  PostgreSQL的WAL記錄檔在pg_xlog目錄下,一般情況下,每個檔案為16M大小:000000010000000000000010檔案名稱為16進位的24個字元組成,每8個字元一組,每組的意義如下:

  • 時間軸:英文為timeline,是以1開始的遞增數字,如1,2,3...
  • LogId:32bit長的一個數字,是以0開始遞增的數字,如0,1,2,3...
  • LogSeg:32bit長的一個數字,是以0開始遞增的數字,如0,1,2,3...

wal日誌跟online redo log一樣,其個數,也不是無限的。歸檔日誌就出現了。

WAL日誌維護
1. 參數max_wal_size/min_wal_size  9.5以前: (2 + checkpoint_completion_target) * checkpoint_segments + 1  9.5:PostgreSQL 9.5 將廢棄checkpoint_segments 參數, 並引入max_wal_size 和 min_wal_size 參數,    通過max_wal_size和checkpoint_completion_target 參數來控制產生多少個XLOG後觸發檢查點,    通過min_wal_size和max_wal_size參數來控制哪些XLOG可以迴圈使用。2. 參數wal_keep_segments   在流複製的環境中。使用流複製建好備庫,如果備庫由於某些原因接收日誌較慢。導致備庫還未接收到。就被覆蓋了。導致主備無法同步。這個需要重建備庫。   避免這種情況提供了該參數。每個記錄檔大小16M。如果參數設定64. 佔用大概64×16=1GB的空間。根據實際環境設定。3. pg_resetxlog  在前面參數設定合理的話。是用不到pg_resetxlog命令。  使用案例參考: https://my.oschina.net/Kenyon/blog/101432[postgres@postgres128 ~]$ pg_resetxlog -?pg_resetxlog resets the PostgreSQL transaction log.Usage:  pg_resetxlog [OPTION]... DATADIROptions:  -c XID,XID       set oldest and newest transactions bearing commit timestamp                   (zero in either value means no change) [-D] DATADIR      data directory  -e XIDEPOCH      set next transaction ID epoch  -f               force update to be done  -l XLOGFILE      force minimum WAL starting location for new transaction log  -m MXID,MXID     set next and oldest multitransaction ID  -n               no update, just show what would be done (for testing)  -o OID           set next OID  -O OFFSET        set next multitransaction offset  -V, --version    output version information, then exit  -x XID           set next transaction ID  -?, --help       show this help, then exitReport bugs to <pgsql-bugs@postgresql.org>.      
歸檔日誌維護
1. pg_archivecleanup清理歸檔日誌。[postgres@postgres128 ~]$ pg_archivecleanup -?pg_archivecleanup removes older WAL files from PostgreSQL archives.Usage:  pg_archivecleanup [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILEOptions:  -d             generate debug output (verbose mode)  -n             dry run, show the names of the files that would be removed  -V, --version  output version information, then exit  -x EXT         clean up files if they have this extension  -?, --help     show this help, then exitFor use as archive_cleanup_command in recovery.conf when standby_mode = on:  archive_cleanup_command = ‘pg_archivecleanup [OPTION]... ARCHIVELOCATION %r‘e.g.  archive_cleanup_command = ‘pg_archivecleanup /mnt/server/archiverdir %r‘Or for use as a standalone archive cleaner:e.g.  pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup1.1 當主庫不斷把WAL日誌拷貝到備庫。這個時候需要清理。在recovery.conf可以配置  e.g.   archive_cleanup_command = ‘pg_archivecleanup /mnt/server/archiverdir %r‘1.2 可以收到執行命令。e.g.  pg_archivecleanup /home/postgres/arch/ 000000010000000000000009在歸檔目錄/home/postgres/arch/ 把000000010000000000000009之前的日誌都清理。2. pg_rman備份參考部落格 http://www.cnblogs.com/lottu/p/7490615.html在pg_rman備份保留原則中。在每天都備份。可以清理歸檔日誌。對流複製環境中。備份一般是在備庫。可以把歸檔記錄傳送到備庫中。  --keep-arclog-files=NUM   keep NUM of archived WAL  --keep-arclog-days=DAY    keep archived WAL modified in DAY dayse.g 保留歸檔日誌個數10。或者保留10天內的歸檔日誌。 KEEP_ARCLOG_FILES = 10  KEEP_ARCLOG_DAYS = 10   在備份資訊中會產生以下資訊。INFO: start deleting old archived WAL files from ARCLOG_PATH (keep files = 10, keep days = 10)

 

postgresql如何維護WAL日誌/歸檔日誌

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.