PostgreSQL物理備份與恢復

2021-07-04 17:36:46 字數 2756 閱讀 8615

centos6.6+postgresql9.4

伺服器:

192.168.3.201 資料庫伺服器

192.168.3.202 備份伺服器

注:需要開啟歸檔,物理備份$pgdata全目錄以及表空間目錄,利用物理備份與歸檔日誌進行資料庫還原。可以跨越小版本,但不能跨平台。

192.168.3.201

首先開啟歸檔:

建立歸檔目錄:

#mkdir -p /pg_archive/pg5431/

#chown -r postgres.postgres /pg_archive/pg5431/

#su postgres

$ vi $pgdata/postgresql.conf

wal_level=archive#日誌級別必須大於minimal,也就是說必須為archive或者hot_standby模式。

archive_mode = on

archive_command = 'date=`date +%y%m%d`;dir="/pg_archive/pg5431/$date";(test -d $dir || mkdir -p $dir) && cp %p $dir/%f'

#在歸檔命令中,%p指xlog相對路徑,%f 僅代表檔名。

儲存配置檔案,並重啟資料庫,若已開啟歸檔模式,不需要重啟資料庫。

建立資料庫使用者rep,專門用於流複製備份。需修改pg_hba.conf認證配置:

192.168.3.202

使用pg _basebackup進行資料庫物理備份,因為使用的是流複製協議備份,所以可以進行異地備份:

建立備份目錄:

#mkdir -p /pgback

#chown -r postgres.postgres pgback

#su postgres

$cd /pgback

$mkdir `date +%y%m%d`

測試rep使用者是否可以連線到201資料庫:

$psql -h 192.168.3.201 -p 5431 -u rep -d postgres

開始備份:

$ pg_basebackup -d /pgback/`date +%y%m%d` -f t -x -h 192.168.3.201 -u rep -p 5431

檢視備份檔案:

其中base.tar是$pgdata的全目錄備份。24579是表空間的oid,所以24579.tar與24583.tar是表空間的目錄備份。

資料庫還原:

192.168.3.201

表空間目錄$pgdata/pg_tblspc中存放的實際上是表空間的軟連線:

建立一張表,插入一些資料:

強制日誌歸檔,以便測試還原。checkpoint將buffer中的dirty資料寫入磁碟,完成資料完整性檢查。pg_switch_xlog()將pg_xlog目錄下產生的wal日誌,複製到預設的歸檔目錄下,保證產生的wal日誌都已完成歸檔。

停止資料庫,清空 $pgdata目錄,以及表空間目錄:

注意:如果pg非正常停掉,那麼最近產生的xlog有可能還沒有完成歸檔,所以需要將這部分沒有歸檔的日誌手工拷貝到歸檔目錄,否則可能會丟失資料。

$pg_ctl stop

$cd $pgdata

$rm -rf *

$cd /pg_tablespace/pg_5431/ts_bigtable

$rm -rf *

$cd /pg_tablespace/pg_5431/ts_udbac

$rm -rf *

拷貝備份檔案:

$scp [email protected]:/pgback/20150820/base.tar $pgdata

$ scp [email protected]:/pgback/20150820/24579.tar /pg_tablespace/pg_5431/ts_bigtable/

$ scp [email protected]:/pgback/20150820/24583.tar /pg_tablespace/pg_5431/ts_udbac/

解壓後拷貝過來的備份檔案就可以刪除了。

拷貝recovery配置檔案

$ cp $pghome/share/recovery.conf.sample /$pgdata/recovery.conf

修改還原配置檔案:

$vi $pgdata/recovery.conf

restore_command = 'cp /pg_archive/pg5431/20150820/%f %p'

啟動資料庫:

$pg_ctl start

$pgdata目錄下的recovery.conf變成了recovery.done說明恢復完成。

驗證資料庫恢復情況:

第一次上傳的圖掛了,重新上傳下。

PostgreSQL的備份與還原

匯出 cmd,然後一直cd,到postgresql的bin下面,用其pg dump程式 pg dump h localhost u ivms864013 ivms864013 g mydb.bak 或pg dump h 10.64.62.181 u ivms864013 ivms864013 g m...

Oracle的物理備份與邏輯備份

物理備份是將實際組成資料庫的作業系統檔案從一處拷貝到另一處的備份過程,通常是從磁碟到磁帶。可以使用 oracle 的恢復治理器 recovery manager,rman 或作業系統命令進行資料庫的物理備份。邏輯備份是利用sql語言從資料庫中抽取資料並存於二進位制檔案的過程。oracle提供的邏輯備...

Postgresql系統備份與恢復(補充)

根據作業系統的不同,使用檔案拷貝命令即可。如 linux unix下 tar cf backup.tar usr local pgsql data cp windows下 jar cvfm classes.jar mymanifest c foo copy 命令等 1 確保wal 歸檔開啟並且可以運...