【原创】PostgreSQL 增量备份详解以及相关示例
PostgreSQL 沒(méi)有類似MySQL 的二進(jìn)制日志, 但是有和MySQL 類似的REDO LOG,并且有MySQL 沒(méi)有的REDO 歸檔功能。當(dāng)然REDO 的歸檔已經(jīng)MariaDB 和Percona-MySQL 已經(jīng)實(shí)現(xiàn)。
那我們就利用PGSQL的REDO 歸檔,也叫WAL來(lái)實(shí)現(xiàn)增量備份。
假設(shè)我們已經(jīng)做了一個(gè)物理的全備,并且相應(yīng)的參數(shù)都已經(jīng)設(shè)置完畢,比如以下:
archive_command = 'test ! -f /home/increment_log/%f && cp %p /home/increment_log/%f' (歸檔,也就是增量)
那么關(guān)于WAL歸檔日志要注意的一點(diǎn)是,如果CRASH 掉了,那么沒(méi)有歸檔的XLOG也可能沒(méi)有提交到數(shù)據(jù)文件,所以有可能這部分?jǐn)?shù)據(jù)會(huì)丟失掉。所以在之后恢復(fù)的時(shí)候我們要把這部分XLOG拷貝到全備的對(duì)應(yīng)目錄。
恢復(fù)方法:
1. 確保沒(méi)有任何業(yè)務(wù)對(duì)PG服務(wù)進(jìn)行訪問(wèn)。(有可能這個(gè)時(shí)候PG已經(jīng)CRASH掉了。) 2. 先停掉POSTGRESQL 服務(wù)。 3. cd /home/pgsql; 4. mv data data_old 6. cp -rfp /home/full_backup/* /home/pgsql (拷貝全備) 7. cp -rfp data_old/pg_xlog/000* data/pg_xlog/ (這里是拷貝自從最后一個(gè)增量和系統(tǒng)CRASH之間的XLOG到對(duì)應(yīng)的目錄。) 8. cd data 9. vi recovery.conf (添加recovery.conf文件,讓PG認(rèn)為這次是在恢復(fù)。)restore_command='test ! -f /home/increment_log/%f && cp /home/increment_log/%f %p'recovery_target_timeline = 'latest'10. chown -R postgres.postgres recovery.conf 11. 啟動(dòng)postgresql 服務(wù)即可。如果正確恢復(fù)了,那么recovery.conf 會(huì)自動(dòng)更名為recovery.done.
以我的機(jī)器為例,我的版本是9.3,PG_XLOG中看到的BACKUP 信息:
[root@postgresql-instance pg_xlog]# cat 000000010000000000000003.00000028.backup START WAL LOCATION: 0/3000028 (file 000000010000000000000003) STOP WAL LOCATION: 0/30000B8 (file 000000010000000000000003) CHECKPOINT LOCATION: 0/3000028 BACKUP METHOD: pg_start_backup BACKUP FROM: master START TIME: 2014-01-07 03:35:02 EST LABEL: ytt STOP TIME: 2014-01-07 03:36:27 EST日志中會(huì)看到恢復(fù)如下恢復(fù)信息:
< 2014-01-07 05:02:47.361 EST >LOG: 00000: starting archive recovery < 2014-01-07 05:02:47.361 EST >LOCATION: StartupXLOG, xlog.c:4983 < 2014-01-07 05:02:47.369 EST >LOG: 00000: redo starts at 0/3000028 < 2014-01-07 05:02:47.369 EST >LOCATION: StartupXLOG, xlog.c:5531 < 2014-01-07 05:02:47.371 EST >LOG: 00000: consistent recovery state reached at 0/303FC88總結(jié)
以上是生活随笔為你收集整理的【原创】PostgreSQL 增量备份详解以及相关示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【crunch bang】 tint2-
- 下一篇: MemCache内存缓存系统