簡介:本文主要介紹基于Docker容器對postgres資料庫進行備份的操作過程,并在經過實踐測試成功後制定計劃任務。其中涉及的内容包括kubectl、crontab和pd_dump等操作步驟。詳細内容請參考下文。
一、資料庫備份的前置操作
1、擷取資料庫所在命名空間
執行指令# kubectl get namespace
2、擷取資料庫所在節點
3、進入資料庫對接節點容器
二、資料庫備份
1、檢視資料庫容器檔案目錄
2、設定資料庫連接配接資訊系統變量
#!/bin/bash
#設定系統變量
source /etc/profile
filename="`date +%F`_bak.sql"
3、采用pg_dumpall編寫腳本進行資料備份
#備份資料腳本
cat > /usr/local/backup/exportPG.sh <<EOF
#!/bin/bash
export PGUSER=****
export PGPASSWORD='****.com'
export PGHOST=172.**.**.**
export PGPORT=****
#備份整個叢集庫中的資料
#pg_dumpall -a > ${filename}
#備份整個叢集庫包含建庫建表操作
pg_dumpall > ${filename}
EOF
4、授予生成的腳本執行權限
#授予執行權限
chmod +x /usr/local/backup/exportPG.sh
5、拷貝備份腳本到對應容器、執行該腳本、拷貝備份檔案到指定位置。
#将伺服器上的備份腳本複制到對應容器中去
kubectl cp /usr/local/backup/exportPG.sh ***/****-postgresql-0:/exportPG.sh
#在容器外執行該腳本
kubectl exec -it ****-postgresql-0 -n sso -- /exportPG.sh
#将備份後的資料檔案複制到容器外
kubectl cp ***/****-postgresql-0:${filename} /usr/local/backup/bak/${filename}
三、編寫資料庫備份腳本
1、執行指令# vim pgbackup.sh編寫腳本
#!/bin/bash
#設定系統變量
source /etc/profile
filename="`date +%F`_bak.sql"
#備份資料腳本
cat > /usr/local/backup/exportPG.sh <<EOF
#!/bin/bash
export PGUSER=****
export PGPASSWORD='******.com'
export PGHOST=172.**.**.**
export PGPORT=****
#備份整個叢集庫中的資料
#pg_dumpall -a > ${filename}
#備份整個叢集庫包含建庫建表操作
pg_dumpall > ${filename}
EOF
#給執行權限
chmod +x /usr/local/backup/exportPG.sh
#将伺服器上的備份腳本複制到對應容器中去
kubectl cp /usr/local/backup/exportPG.sh ***/****-postgresql-0:/exportPG.sh
#在容器外執行該腳本
kubectl exec -it ****-postgresql-0 -n *** -- /exportPG.sh
#将備份後的資料檔案複制到容器外
kubectl cp ***/****-postgresql-0:${filename} /usr/local/backup/${filename}
2、授予備份腳本執行權限
執行指令# chmod +x /usr/local/backup/pgbackup.sh
3、測試資料庫備份腳本
執行指令# sh pgbackup.sh
備注:其中2023-05-17_bak.sql為資料備份檔案,exportPG.sh為容器内資料備份腳本,pgbackup.sh為主機上的資料庫備份腳本。
四、執行資料庫備份任務
1、執行指令# vim /etc/crontab
30 3 * * * root /usr/local/backup/pgbackup.sh
2、重新加載配置檔案
執行指令# systemctl reload crond
3、重新開機定時任務
執行指令# systemctl restart crond