备份容器化运行的mongodb和mysql数据库数据

#!/bin/bash
#备份mongodb
# 设置变量
MONGOS_POD=`kubectl get pods -n mpks| grep mongos |head -n 1|awk '{print $1}'` # MongoDB Pod 的名称
MONGODB_BACKUPDIR="/data/backup/" # 宿主机上的备份目录
DATE=$(date +%Y%m%d_%H%M%S) # 备份文件的时间戳
DB_USER="root" # MongoDB 用户名
DB_PASS="kgclite" # MongoDB 密码
# 执行mongodump备份
kubectl exec -it "${MONGOS_POD}" -n mpks -- mongodump -h 127.0.0.1:27017 -u "${DB_USER}" -p "${DB_PASS}" --authenticationDatabase "admin" -o /tmp/mongo_${DATE}
# 打包备份文件
kubectl exec -it "${MONGOS_POD}" -n mpks -- tar zcvf /tmp/mongo_${DATE}.tar.gz /tmp/mongo_${DATE}/ 
# 将备份文件从Pod复制到宿主机
kubectl cp "${MONGOS_POD}":/tmp/mongo_${DATE}.tar.gz "${MONGODB_BACKUPDIR}/mongo_${DATE}.tar.gz" -n mpks
#判断文件是否生成
if [ -e ${MONGODB_BACKUPDIR}/mongo_${DATE}.tar.gz ];then
    echo "备份完成,清除pod中的压缩包和备份目录"
    kubectl exec -it "${MONGOS_POD}" -n mpks -- rm -f /tmp/mongo_${DATE}.tar.gz
    kubectl exec -it "${MONGOS_POD}" -n mpks -- rm -rf /tmp/mongo_${DATE}
else 
    echo "备份失败"
 fi
 
 #备份mysql
#!/bin/bash
MYSQL_POD_NAME="mysql-pod-name" # Kubernetes 中 MySQL Pod 的名称
MYSQL_USER="username" # MySQL 用户名
MYSQL_PASSWORD="password" # MySQL 密码
BACKUP_DIR="/pathbak" # 宿主机上的备份目录
BACKUP_FILE="mysql_backup_$(date +%Y%m%d_%H%M%S).sql" # 备份文件名,包含时间戳
# 执行备份
kubectl exec -it "${MYSQL_POD_NAME}" -- mysqldump -u "${MYSQL_USER}" -p"${MYSQL_PASSWORD}" --all-databases > "${BACKUP_DIR}/${BACKUP_FILE}"
# 检查备份是否成功
if [ $? -eq 0 ]; then
  echo "Backup successful: ${BACKUP_FILE}"
else
  echo "Backup failed"
  exit 1
fi
# (可选)压缩备份文件
gzip "${BACKUP_DIR}/${BACKUP_FILE}"
# (可选)删除24小时之前的备份文件
# find "${BACKUP_DIR}" -name "mysql_backup_*.sql.gz" -type f -mtime +1 -exec rm {} \;
echo "Backup process completed."


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值