pg數據庫備份恢復

備份

1,配置歸檔模式

配置歸檔需要編輯postgresql.conf文件,默認爲與/usr/local/pgsql/data/目錄下

vim/usr/local/pgsql/data/postgesql.conf

wal_level = hot_standby

archive_mode= on

archive_command= ‘cp %p /usr/local/pgsql/backup/%f’    //backup的必須有postgres用戶(數據庫用戶)的權限,chown postgres backup

注:%p要被歸檔的日誌文件的路徑,%f是要被歸檔的日誌文件的文件名

2,啓動數據庫

pg_ctl start –D /usr/local/pgsql/data

3,創建數據庫arch

createdb arch

4,創建表並插入記錄

psql arch

arch=# create table tb(a int);

arch=# insert into tb(a) values(1);

5,創建基礎備份

arch=#select pg_start_backup(‘baseline’);

6,備份整個data目錄

tar –jcvf  /usr/local/pgsql/backup/baseline.tar.bz2 /usr/local/pgsql/data/

7, 停止備份

psql arch

arch=# select pg_stop_backup();

8, 插入新記錄,然後切換日誌,重複3次

arch=# insert into tb(a) values(2);

arch=# select pg_switch_xlog();

arch=# insert into tb(a) values(3);

arch=# select pg_switch_xlog();

arch=# insert into tb(a) values(4);

arch=# select pg_switch_xlog();

9, 把/data/pg_xlog/下的WAL日誌文件複製到預設的歸檔目錄下,保證產生的WAL日誌都已歸檔.


恢復

      1,停止數據庫

pg_ctl stop –D /usr/local/pgsql/data/

      2,刪除/data/

rm –r  /usr/local/pgsql/data/

      3,恢復備份

tar –jxvf   /usr/local/pgsql/backup/baseline.tar.bz2 –C /     //如果沒有權限,可能需要root用戶執行

4,清空/data/pg_xlog/目錄下所有文件

rm –r /usr/local/pgsql/data/pg_xlog/

5, 創建/pg_xlog/及其下面的archive_status目錄

mkdir  /usr/local/pgsql/data/pg_xlog/

mkdir  /usr/local/pgsql/data/pg_xlog/archive_status

6, 在/data/目錄下創建recovery.conf

vim  /usr/local/pgsql/data/recovery.conf

restore_command= ‘cp /usr/local/pgsql/backup/%f “%p”’

7,啓動數據庫

pg_ctl  start  –D  /usr/local/pgsql/data/

一切正常的話數據庫就會自動應用WAL日誌進行恢復

8, 查看數據庫arch是否恢復

psql arch

arch=# select * from tb;

a

---

1

2

3

4

(4rows)

 

至此,數據已成功恢復!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章