時間:2024-02-24 17:17作者:下載吧人氣:23
前面我們介紹了通過pgsql的流復制在生產環境中搭建高可用環境來保證服務的可持續性;我們也要對數據庫進行周期備份,來防止數據的丟失,這就需要連續歸檔,它不僅可以用于大型數據庫的增量備份和恢復,也可以用于搭建standby鏡像備份。
PostgreSQL默認處于非歸檔模式。開啟歸檔模式,主要涉及到三個參數:wal_level,archive_mode和archive_commandwal_level參數默認為mininal,設置此參數為archive或者之上的級別都可以打開歸檔。當postgresql需要傳輸歸檔日志時,會調用archive_command指定的shell命令。
歸檔文件傳輸成功時,shell命令要返回0,此時,postgresql會認為歸檔文件已經傳輸成功,因此可以刪除或者重新循環利用歸檔文件。當shell命令返回非0值時,postgresql會保留所有未成功傳輸的歸檔日志,并不斷嘗試重新傳輸,直到成功。如果歸檔命令一直不成功,pg_xlog目錄會持續增長,有耗盡服務器存儲空間的可能,此時postgresql會PANIC關閉,直到釋放存儲空間。
另外將歸檔WAL日志存儲在本機上是風險極高,不被推薦的。postgresql通過archive_command提供了存儲WAL日志的靈活性,可以將歸檔日志存儲到掛裝的NFS目錄,磁帶,刻錄到光盤,也可以將WAL日志通過ssh/scp,rsync傳輸到異機保存。
**注意:**archive_command及restore_command命令將以運行PostgreSQL的系統用戶的身份運行。Centos系統里,這個系統用戶是postges。
Role | IP | 系統 | 數據庫 |
---|---|---|---|
源庫 | 10.10.10.60 | Centos6.5 | postgresql 9.2 |
備份庫 | 10.10.10.61 | Centos6.5 | postgresql 9.2 |
需求說明:源庫產生歸檔日志,并傳輸到備份庫上的歸檔目錄/data/pg_archive;備份庫利用歸檔日志,恢復至源庫的任意時間點的數據。
注意:基礎環境我們基于postgresql流復制,但是備份庫作為一個獨立的庫,此時請保證recovery.conf中的standby_mode=off
1.ssh無密碼登錄
由于我們備份和還原過程中所用的archive_command和restore_command命令都以postgres用戶運行,因此我們需要針對postgres用戶實現ssh無密碼登錄。
#源庫
ssh-ketgen -t rsa
scp id_rsa.pub postgres@10.10.10.60:/var/lib/pgsql/.ssh/authorized_keys
#備份庫
ssh-ketgen -t rsa
scp id_rsa.pub postgres@10.10.10.61:/var/lib/pgsql/.ssh/authorized_keys
網友評論