PostgreSQL資料庫備份還原指令碼
本文對資料庫進行的操作主要用到的是PG自帶的pg_dumpall、pg_dump、psql這幾個命令
備份還原過程:
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.sh和restore.sh放進linux下的某一目錄當中
2. 指令碼在linux系統下執行前增加指令碼backup.sh和restore.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......"