本文對資料庫進行的操作主要用到的是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...