1. 程式人生 > >PostgreSQL資料庫備份還原指令碼

PostgreSQL資料庫備份還原指令碼

本文對資料庫進行的操作主要用到的PG自帶pg_dumpall、pg_dumppsql這幾個命令

備份還原過程:

1:備份全域性物件

2: 備份某一個數據庫

3:還原全域性物件

4:還原備份的資料庫

備份詳細過程:    

第一步,備份所有公共物件,包括編碼使用者,許可權等

pg_dumpall –h 192.168.xx.xx –U adminuser –p 5432 –g –f xxx/global.sql

   第二步,備份某一個數據庫

   pg_dump –h 192.168.xx.xx –U adminuser –p 5432 –d xxxdb  –C  –f xxx/xxxdb.sql

  “-C”選項,可以將建庫的語句也輸出到檔案中;如果手動建庫,則需要去除該選項

還原詳細過程:

還原資料的時候,根據備份的過程,先還原全域性物件,再還原資料庫

  首先恢復全域性的資訊,包括使用者,編碼等:

    psql –h 192.168.xx.xx –U adminuser –p 5432 –f xxx/global.sql

  其次恢復某資料庫

    psql –h 192.168.xx.xx –U adminuser –p 5432 –f xxx/xxxdb.sql

    我在上面備份pg_dump中寫了”-C”,它會自動建庫,如果沒有寫這個選項,要在psql中寫-d xxxdb


執行指令碼的必要條件

    

1. 將備份、還原指令碼backup.shrestore.sh放進linux的某一目錄當中

2. 指令碼linux系統下執行前增加指令碼backup.shrestore.sh的執行許可權

3. 根據實際環境修改指令碼中的資料庫連線引數

export PGPASSWORD="postgres"      --資料庫使用者密碼

export POSTGRESPATH=/usr/lib/postgresql/9.5/bin   --pg_dump等命令在的bin目錄

HOST_NAME="192.168.xxx.xxx"     --要備份的資料來源IP

ADMIN_USER="xxx"       --登入使用者名稱

BACKUP_DB="xxx"          --要備份的資料庫

指令碼執行

1. 在linux下進入到指令碼所在的目錄

2. 先執行備份指令碼backup.sh,然後到備份所指定目錄下檢視備份檔案,如果問題執行還原指令碼restore.sh

還原指令碼restore.sh執行完成後對照生成的庫/使用者/角色/schema//資料完成驗證

backup.sh  備份指令碼

#!/bin/sh
###
###
###


export PGPASSWORD="備份登入使用者密碼"
export POSTGRESPATH=/usr/lib/postgresql/9.5/bin
HOST_NAME="所處備份資料庫IP"
ADMIN_USER="備份登入使用者名稱"
BACKUP_DB="要備份資料庫"


echo "backup database start......"




#備份全域性物件
$POSTGRESPATH/pg_dumpall -h $HOST_NAME -U $ADMIN_USER -p 5432 -g -f /home/global.sql


#備份某一個數據庫
$POSTGRESPATH/pg_dump -h $HOST_NAME -U $ADMIN_USER -p 5432 -d $BACKUP_DB -C -f /home/$BACKUP_DB.sql


echo "backup database end....."


restore.sh  還原指令碼

#!/bin/sh
###
###
###


export PGPASSWORD="還原機登入密碼"
export POSTGRESPATH=/usr/lib/postgresql/9.5/bin


HOST_NAME="還原機IP"
ADMIN_USER="還原機登入使用者"
RESTORE_DB="所還原庫"


echo "restore database start......"


#還原全域性物件
$POSTGRESPATH/psql -h $HOST_NAME -U $ADMIN_USER -p 5432 -d postgres -f /home/jack/global.sql


#還原資料庫
$POSTGRESPATH/psql -h $HOST_NAME -U $ADMIN_USER -p 5432 -d postgres -f /home/jack/$RESTORE_DB.sql


echo "restore database end......"