資料庫自動備份並上傳至 Google Drive
文/Codus
前言
在網站上線後,持續備份是一件很重要的是,尤其是資料庫,刪錯庫就跑路。
備份有很多方式,可以透過 Google Cloud SQL 備份、匯出。
今天要介紹的方式是透過 pg_dump 指令,自動備份 PostgreSQL,並且把檔案上傳到 Google Drive。
本文章要介紹的是透過 Golang 與 cron 套件,每週自動呼叫 pg_dump,並將匯出的檔案上傳到 Google Drive 留存。
執行 pg_dump 的方式其實也可以不透過 Golang,直接透過 Linux crontab 也可以;本文章介紹使用 Golang 是因為資料庫參數都已經放在 env 了,直接透過程式管理,才不用分2個地方處理,而且還可以透過程式自動上傳到 Google Drive。
上傳的方式若不是儲存到 Google Drive 也可以,儲存在其他檔案伺服器也行,但本文章僅介紹上傳至 Google Drive 的方式。
- pg_dump 指令說明
為了能順利執行 pg_dump 指令,首先要先安裝指令,以 CentOS 8為例子,輸入以下指令安裝:
sudo yum -y install postgresql
備註: 本文章以 PostgreSQL 14.2 版實測
pg_dump –version
pg_dump (PostgreSQL) 14.2
pg_dump 會將資料庫的檔案全部匯出,範例指令如下:
pg_dump -h 127.0.0.1 -U my_db_username_codus -p 5432 -d my_db_name_example_app -f dump.sql
建議可以進行壓縮,範例指令如下:
pg_dump -h 127.0.0.1 -U my_db_username_codus -p 5432 -d my_db_name_example_app -f dump.sql.gz -Z 1
指令的每一個欄位的說明如下:
pg_dump -h {{hostname}} -U {{username}} -p {{port}} -d {{database name}} -f {{output file}} -Z {{壓縮級別}}
更多詳細資料可以參考下方的參考連結「pg_dump – PostgreSQL」,PostgreSQL 的官方說明。
- Golang 排程執行
我們透過「github.com/robfig/cron/v3」套件,很簡單地示範每天凌晨4點執行程式。
透過 Golang Standard Library「os/exec」執行「pg_dump」指令。
套件的細節這邊不贅述,有興趣的朋友可以到 GitHub 或 Golang 官方文件查看。
- 上傳至 Google Drive
透過「2. Golang排程執行」,每天凌晨4點會 dump 資料庫,產生 sql 檔案,接著我們可以把這個檔案上傳至 Google Drive。
如何設定 Google Drive 與存取資料夾/檔案的方式,請參考下方參考連結「不需要OAuth驗證即可存取 Google Drive 檔案 – 使用 Golang」,細節這邊就不再說明,僅列出範例程式碼。
瀏覽 1,957 次