postgresql技術(shù)大講堂 - 第38講:數(shù)據(jù)庫備份
最新學(xué)訊:近期OCP認(rèn)證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯(lián)系在線老師,甲骨文官方認(rèn)證,報名從速!
我要咨詢
PostgreSQL從小白到專家,是從入門逐漸能力提升的一個系列教程,內(nèi)容包括對PG基礎(chǔ)的認(rèn)知、包括安裝使用、包括角色權(quán)限、包括維護(hù)管理、、等內(nèi)容,希望對熱愛PG、學(xué)習(xí)PG的同學(xué)們有幫助,歡迎持續(xù)關(guān)注CUUG PG技術(shù)大講堂。
第38講:數(shù)據(jù)庫備份
PostgreSQL第38講:12月09日(周六)19:30,釘釘群直播,群號:35822460
內(nèi)容1:備份術(shù)語
內(nèi)容2:備份工具
內(nèi)容3:備份模式
內(nèi)容4:basebackup簡介
內(nèi)容5:全庫備份
內(nèi)容6:表空間備份
內(nèi)容7:只讀數(shù)據(jù)庫備份
術(shù)語
全庫備份
目標(biāo)數(shù)據(jù)庫處于打開或者關(guān)閉狀態(tài)
備份$PGDATA下所有的數(shù)據(jù)文件
部分備份
備份除了pg_global的其它表空間
一致性備份
不一致性備份
備份工具
使用操作系統(tǒng)命令對數(shù)據(jù)庫文件進(jìn)行備份和恢復(fù)
使用pg_basebackup對數(shù)據(jù)庫文件進(jìn)行備份
使用pg_rman對數(shù)據(jù)庫文件進(jìn)行備份和恢復(fù)
備份模式
一致性備份(數(shù)據(jù)庫關(guān)閉)
備份$PGDATA目錄下所有文件
一致性全庫備份的好處
概念簡單
易于執(zhí)行
需要很少的操作員交互
執(zhí)行一致性全庫備份
數(shù)據(jù)庫打開模式下備份
數(shù)據(jù)庫打開模式下備份好處
保持高數(shù)據(jù)庫可用性
支持不間斷的業(yè)務(wù)運營
數(shù)據(jù)庫打開模式下備份要求
數(shù)據(jù)庫歸檔
· 歸檔日志
連續(xù)歸檔是在WAL段切換時將WAL段文件復(fù)制到歸檔區(qū)域的功能,由archiver(后臺)進(jìn)程執(zhí)行。其中,占位符%p是復(fù)制的WAL段,而%f是存檔日志。
ALTER SYSTEM SET archive_command = 'cp %p /home/postgres/archives/%f';
ALTER SYSTEM SET archive_mod = on;
執(zhí)行數(shù)據(jù)庫打開模式下備份
· pg_basebackup 基本備份的標(biāo)準(zhǔn)過程如下所示:
(1) 執(zhí)行pg_start_backup 命令
(2) 使用tar/cp命令對$PGDATA目錄進(jìn)行備份
(3) 執(zhí)行pg_stop_backup 命令
pg_basebackup工作原理
· pg_start_backup執(zhí)行以下四個操作
Force into the full-page wirte mode.
Switch to the current WAL segment file (version 8.4 or later).
Do checkpoint.
Create a backup_label file–此文件創(chuàng)建于base目錄的同一層,包含有關(guān)基本備份本身的基本信息,例如此檢查點的檢查點位置。
· backup_label文件包含如下內(nèi)容
CHECKPOINT LOCATION –這是記錄此命令創(chuàng)建的檢查點的LSN位置。
START WAL LOCATION –這不與PITR一起使用,而是與流式復(fù)制一起使用。它被命名為“START WAL LOCATION”,因為處于復(fù)制模式的備用服務(wù)器在初始啟動時只讀取一次該值。
BACKUP METHOD–這是用于進(jìn)行此基礎(chǔ)備份的方法。(pg_start_backup或pg_basebackup。)
BACKUP FROM –這顯示此備份是從主備份還是從備用備份。
START TIME –這是執(zhí)行pg_start_backup時的時間戳。
LABEL –這是在pg_start_backup中指定的標(biāo)簽。
START TIMELINE –這是備份開始的時間線。這是為了進(jìn)行健全性檢查,并已在版本11中引入。
· pg_stop_backup
如果pg_start_backup強(qiáng)制更改了非整頁寫入模式,則將其重置為非整頁寫入模式。
寫一個備份結(jié)束的XLOG記錄。
切換WAL日志。
創(chuàng)建備份歷史文件–此文件包含備份標(biāo)簽文件的內(nèi)容和執(zhí)行pg_stop_backup的時間戳。
刪除備份標(biāo)簽文件–備份標(biāo)簽文件是從基本備份恢復(fù)所必需的,一旦復(fù)制,就不必在原始數(shù)據(jù)庫群集中。
執(zhí)行pg_basebackup備份
· 示例
產(chǎn)生壓縮的tar包,-Ft參數(shù)指定:
pg_basebackup -D bk1 -Ft -z -P
此備份花的時間比較長,但是節(jié)省空間。支持表空間文件存放在其它目錄下。
產(chǎn)生跟源文件一樣的格式,即原樣格式,-Fp參數(shù)指定:
pg_basebackup -D bk2 -Fp -P
此備份方式很快,但是不節(jié)省空間。如果有表空間路徑放在其它目錄下,則備份失敗。
執(zhí)行用戶管理全庫備份
· 示例
數(shù)據(jù)庫中執(zhí)行開始備份函數(shù)
select pg_start_backup('full');
使用tar命令進(jìn)行備份
cd $PGATA
tar -zcf /backup/data.tar.gz .
數(shù)據(jù)庫中執(zhí)行結(jié)束備份函數(shù)
select pg_stop_backup();
執(zhí)行表空間備份
· 示例
數(shù)據(jù)庫中執(zhí)行開始備份函數(shù)
select pg_start_backup('tbs');
使用tar命令進(jìn)行備份(備份pg_default表空間所在的目錄)
cd $PGATA
tar -zcf /backup/base.tar.gz base
cp backup_lable /backup
數(shù)據(jù)庫中執(zhí)行結(jié)束備份函數(shù)
select pg_stop_backup();
執(zhí)行只讀數(shù)據(jù)庫備份
· 示例
把某個數(shù)據(jù)庫變成只讀
ALTER DATABASE new_db1 set default_transaction_read_only=on;
使用tar/cp命令進(jìn)行備份(備份new_db1所在的目錄)
cd $PGATA/base
tar -zcf /backup/90195.tar.gz 90195
CUUG PostgreSQL技術(shù)大講堂系列公開課,往期視頻及文檔,請聯(lián)系CUUG客服。
- 冉乃綱-老師CUUG金牌講師
- 冉老師 CUUG金牌講師 Oracle及RedHat高級講師、Unix/Linux 資深專家...[詳細(xì)了解老師]

- 陳衛(wèi)星-老師CUUG金牌講師
- 陳老師 CUUG金牌講師 精通Oracle管理、備份恢復(fù)、性能優(yōu)化 11年Ora...[詳細(xì)了解老師]
