iT邦幫忙

2022 iThome 鐵人賽

DAY 24
0
自我挑戰組

三十天,PG與我系列 第 24

PostgreSQL資料庫備份還原

  • 分享至 

  • xImage
  •  

有時候為了從意外中還原或是在磁碟空間受限的情況下進行跨版本還原,會需要進行資料庫的備份,而這裡所說的備份跟單純將檔案複製到外部硬碟不大一樣,還原的時候會透過備份的資訊在目標主機上重新建立資料庫的內容。
https://www.postgresql.org/docs/current/app-pgdump.html
pg_dump可以對Postgres主機上特定的資料庫進行備份,然後備份整台伺服器上面的所有資料可以使用pg_dump all

pg_dump和pg_dumpall的差別,除了後者可以備份資料庫的完整環境(包括使用者/權限/table的格式及index等等),再來就是相較於pg_dumpall只能產生一連串重建資料庫環境的SQL指令腳本,pg_dump可以設定其他的檔案格式,像是為pg_restore還原最佳化的custom檔案格式,支援資料壓縮,以及在還原的時候選擇要還原的內容跟排序。

然後這兩套工具都可以下參數,像是--schema-only針對schema的部分做備份,還有--data-only單對資料做備份,因此可以用不同的方式來備份schema與資料本身。還原的時候用psql連上資料庫後開啟.sql的檔案執行裡面的腳本,或者用pg_restore/pgAdmin等工具開啟自定格式的備份檔就可以進行還原。

以pgAdmin示範備份還原操作

對想要備份的伺服器選擇"backup server"選項
https://ithelp.ithome.com.tw/upload/images/20220925/20114934kXFnYYXo56.png
輸入備份的檔案名稱及位置,可以看到提示,說明檔案會以PLAIN SQL來儲存
https://ithelp.ithome.com.tw/upload/images/20220925/201149349HGGU1tfi7.png
先設定做schema-only backup
https://ithelp.ithome.com.tw/upload/images/20220925/20114934tlaug6mnfA.png
備份出來的檔案可以用一般的文字編輯器打開做檢視,基本上就是一連串的SQL指令
https://ithelp.ithome.com.tw/upload/images/20220925/20114934IxyUIHhiTa.png
再來針對單一資料庫選擇備份
https://ithelp.ithome.com.tw/upload/images/20220925/201149340jR9NuUV6q.png
選擇Custom自定壓縮格式進行備份
https://ithelp.ithome.com.tw/upload/images/20220925/20114934iGO8MwAKxV.png
可以看到他底下使用的是pg_dump
https://ithelp.ithome.com.tw/upload/images/20220925/20114934nWWws2SenR.png

重新建立空的Postgres資料庫,來試還原的部分
https://ithelp.ithome.com.tw/upload/images/20220925/201149341dMbF62IeR.png
透過PSQL連線上去,讀取之前備份的script到資料庫上頭
https://ithelp.ithome.com.tw/upload/images/20220925/20114934pX8Wjz58JM.png
透過類似之前備份操作的方式,在pgAdmin對database執行Restore選項,選擇只還原資料的部分
https://ithelp.ithome.com.tw/upload/images/20220925/20114934xNmGSkTKr1.png
還原完成
https://ithelp.ithome.com.tw/upload/images/20220925/20114934oHO3ZhBYIf.png


上一篇
Postgres圖形化用戶端-PGAdmin
下一篇
PostgreSQL語法-時間與日期的使用
系列文
三十天,PG與我30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言