前言
记录一下在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.准备工作(x86)
# 准备备份目录 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
1.准备工作(arm)
# 准备备份目录 mkdir -p /data/backup/mysql/ # 获取镜像 docker pull dockerpull.cn/arm64v8/mariadb:10.5.11 # 运行备份用数据库容器 docker run --name mariadb-bak-tool -d -e tz=asia/shanghai -e mariadb_root_password=passwd@123456 dockerpull.cn/arm64v8/mariadb:10.5.11
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中百分号需要转义
总结
记录一下,后续在项目中用。
到此这篇关于k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)的文章就介绍到这了,更多相关k8s数据库备份记录内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论