文章目錄
- 前言
- 一、獲取需要備份的數據庫的信息
- 二、備份步驟
- 1.準備工作
- 2.手動備份
- 3.定時任務自動備份
- 總結
前言
記錄一下在k8s運行的數據庫的備份步驟。
我的思路是新建一個數據庫的容器作為工具容器,通過工具容器執行mysqldump命令進行備份,最后通過定時任務來執行命令。沒有涉及保留時間的問題
一、獲取需要備份的數據庫的信息
kubectl get svc -A
mariadb mariadb ClusterIP 10.233.20.235 <none> 3306/TCP 71d
mariadb mariadb-nodeport NodePort 10.233.31.133 <none> 3306:30901/TCP
二、備份步驟
1.準備工作
# 準備備份目錄
mkdir -p /data/backup/mysql/
# 獲取鏡像
docker pull dockerpull.cn/bitnami/mariadb:10.5.11-debian-10-r0
# 運行備份用數據庫容器
docker run --name mariadb-bak-tool -d -e TZ=Asia/Shanghai -e MARIADB_ROOT_PASSWORD=passwd@123456 dockerpull.cn/bitnami/mariadb:10.5.11-debian-10-r0
2.手動備份
# 利用pod的容器網絡的IP連接
/usr/bin/docker exec -it mariadb-bak-tool mysqldump -uroot -ppasswd@123456 --host=10.233.20.235 --port=3306 --all-databases > /data/backup/mysql/all_databases_backup_$(date +"%Y%m%d-%H:%M").sql# 使用nodeport連接
/usr/bin/docker exec -it mariadb-bak-tool mysqldump -uroot -ppasswd@123456 --host=XXX.XX.XX.XX --port=30901 --all-databases > /data/backup/mysql/all_databases_backup_$(date +"%Y%m%d-%H:%M").sql
3.定時任務自動備份
10 6 * * * /usr/bin/docker exec mariadb-bak-tool mysqldump -uroot -ppasswd@123456 --host=XXX.XX.XX.XX --port=30901 --all-databases > /data/backup/mysql/all_databases_backup_$(date +"\%Y\%m\%d-\%H:\%M").sql 2>&1
注意:
- cron環境中不支持交互式終端,需要去掉-it參數
- crontab中百分號需要轉義
總結
記錄一下,后續在項目中用。