天天看點

Docker容器中的Postgresql備份腳本

作者:JasonTang

簡介:本文主要介紹基于Docker容器對postgres資料庫進行備份的操作過程,并在經過實踐測試成功後制定計劃任務。其中涉及的内容包括kubectl、crontab和pd_dump等操作步驟。詳細内容請參考下文。

一、資料庫備份的前置操作

1、擷取資料庫所在命名空間

執行指令# kubectl get namespace

Docker容器中的Postgresql備份腳本

2、擷取資料庫所在節點

Docker容器中的Postgresql備份腳本

3、進入資料庫對接節點容器

Docker容器中的Postgresql備份腳本

二、資料庫備份

1、檢視資料庫容器檔案目錄

Docker容器中的Postgresql備份腳本

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}

Docker容器中的Postgresql備份腳本

2、授予備份腳本執行權限

執行指令# chmod +x /usr/local/backup/pgbackup.sh

Docker容器中的Postgresql備份腳本

3、測試資料庫備份腳本

執行指令# sh pgbackup.sh

Docker容器中的Postgresql備份腳本

備注:其中2023-05-17_bak.sql為資料備份檔案,exportPG.sh為容器内資料備份腳本,pgbackup.sh為主機上的資料庫備份腳本。

四、執行資料庫備份任務

1、執行指令# vim /etc/crontab

30 3 * * * root /usr/local/backup/pgbackup.sh

Docker容器中的Postgresql備份腳本

2、重新加載配置檔案

執行指令# systemctl reload crond

Docker容器中的Postgresql備份腳本

3、重新開機定時任務

執行指令# systemctl restart crond

Docker容器中的Postgresql備份腳本