PostgreSQL資料庫備份還原指令碼

2021-08-15 21:55:42 字數 2588 閱讀 4167

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

備份還原過程:

1:備份全域性物件

2: 備份某乙個資料庫

3:還原全域性物件

4:還原備份的資料庫

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

pg_dumpall –h 192.168.xx.xx –u adminuser –p 5432 –g –f ***/global.sql

第二步,備份某乙個資料庫

pg_dump –h 192.168.xx.xx –u adminuser –p 5432 –d ***db  –c  –f ***/***db.sql

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

還原詳細過程:

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

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

psql –h 192.168.xx.xx –u adminuser –p 5432 –f ***/global.sql

其次恢復某資料庫

psql –h 192.168.xx.xx –u adminuser –p 5432 –f ***/***db.sql

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

執行指令碼的必要條件

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.***.***"     --要備份的資料來源

ipadmin_user="***"       --登入使用者名稱

backup_db="***"          --要備份的資料庫

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......"

PostgreSQL資料庫備份指令碼

資料庫備份shell指令碼 sh bin bash now date y m d h m s mkdir p srv pg backup for db name in 庫名1 庫名2 庫名3 do srv pgsql92 bin pg dump upgsql blobs format c compr...

postgresql資料庫備份還原

背景 公司 原先將postgresql跑在docker容器內,並且使用了dockerswarm拉力編排,portainer的視覺化來管理 變更需求 將postgresql 遷離swarm集群,單獨使用docker run命令來執行 備份 pg dump u 使用者名稱 h 資料庫ip d 需要備份的...

PostgreSQL資料庫備份與恢復

參考了這篇文章 由於想要備份測試資料所以就進行了一下調查,以前成功過一次,但是由於時間久了,就忘記了,還是需要記錄一下。windows裡面,命令列進入postgresql的安裝目錄,執行pg dump h 10.u postgres testdb testdb.bak 會在當前安裝目錄生成乙個tes...