天天看點

Linux系統中的Postgresql容器資料備份之SSO系統資料備份

作者:JasonTang

簡介:公司的SSO單點登入系統,底層使用的是Linux系統,并使用Docker容器,使用的是Postgresql資料庫。本文主要介紹怎麼對容器裡頭的Postgresql資料庫進行備份并異地存儲的過程。涉及的内容包括:磁盤挂載、資料備份腳本編寫,資料備份驗證等内容。

詳細情況請參考下文。

一、登入系統

1、登入linux系統

Linux系統中的Postgresql容器資料備份之SSO系統資料備份

2、檢視image與container

說明:Docker中十分重要的兩個概念 Image和container,Image和container可以看作面向對象思想中的類和對象。container是 Image的執行個體化。

執行指令# docker images檢視鏡像

Linux系統中的Postgresql容器資料備份之SSO系統資料備份

執行指令# docker ps檢視容器

Linux系統中的Postgresql容器資料備份之SSO系統資料備份

二、登入K8S系統

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

執行指令# kubectl get namespace檢視該叢集中資料庫所在空間名

Linux系統中的Postgresql容器資料備份之SSO系統資料備份

2、擷取資料庫所在節點

執行指令# kubectl get pod -n default選取default空間名進行叢集節點的擷取

Linux系統中的Postgresql容器資料備份之SSO系統資料備份

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

執行指令# kubectl exec -it idaas-postgresql-master-0 -n default -- bash進入資料庫容器

Linux系統中的Postgresql容器資料備份之SSO系統資料備份

三、Postgresql資料庫備份

說明:K8S中的Postgresql資料庫備份步驟為,設定系統變量、采用pg_dumpall工具進行資料備份、授予生成的備份腳本執行權限、拷貝備份腳本到對應容器并執行該腳本、拷貝生成的備份檔案到伺服器指定位置。

1、postgresql備份腳本編寫

說明:編寫資料庫備份腳本,并存放到/usr/local/backup目錄中。

執行指令# vim /usr/local/backup/backup_postgre.sh編寫腳本

#!/bin/bash

#必須加這一句不然kubectl的相關操作不會執行

source /etc/profile

cur_time=$(date '+%Y-%m-%d')

filename="$cur_time.sql"

#備份資料腳本

cat > /usr/local/backup/exportPG.sh <<EOF

#!/bin/bash

export PGUSER=****s

export PGPASSWORD='******.com'

export PGHOST=172.**.**.**

export PGPORT=32432

#備份整個叢集庫中的資料

pg_dumpall -a > ${filename}

#備份整個叢集庫包含建庫建表操作

#pg_dumpall > ${filename}

EOF

#授予執行權限

chmod +x /usr/local/backup/exportPG.sh

#将伺服器上的備份腳本複制到對應容器中去

kubectl cp /usr/local/backup/exportPG.sh default/*****-postgresql-master-0:/exportPG.sh

#在容器外執行該腳本

kubectl exec -it *****-postgresql-master-0 -n default -- /exportPG.sh

#将備份後的資料檔案複制到容器外

kubectl cp default/*****-postgresql-master-0:${filename} /usr/local/backup/${filename}

Linux系統中的Postgresql容器資料備份之SSO系統資料備份

備注:因為實際的備份操作需在容器内才可進行,所有腳本執行後會生成備份腳本exportPG.sh并将其複制到容器中,然後通過kubectl exec來執行複制進去的腳本exportPG.sh。備份完成後該備份檔案存在于容器内,使用kubectl cp将備份檔案從容器内複制到容器外伺服器的備份目錄中。

2、執行postgresql備份腳本

執行指令# sh backup_postgre.sh開始備份

Linux系統中的Postgresql容器資料備份之SSO系統資料備份

3、檢視備份生成的檔案

執行指令# ls /usr/local/backup檢視生成的資料檔案

Linux系統中的Postgresql容器資料備份之SSO系統資料備份

備注:其中2023-05-10.sql就是在容器中執行備份操作後生成并拷貝出來的資料庫備份檔案。

4、通過crontab制定每周六淩晨1點執行備份計劃

執行指令# crontab -e編輯計劃任務

Linux系統中的Postgresql容器資料備份之SSO系統資料備份

繼續閱讀