Docker
#!/bin/bash
source /etc/profile
user="root"
passwd="root"
backupDir="/data/mongodb_bak"
time=$(date +%F_%H-%M)
MongoDB=`docker ps | grep mongo|awk '{print $NF}'|head -1`
if [ ! $MongoDB ]
then
exit 1
else
# backup mongodb
docker exec $MongoDB bash -c "mongodump -u${user} -p${passwd} -o /tmp/db/mongo_bak_${time} && \
cd /tmp/db/ && \
ls && \
tar zcf mongo_bak_${time}.tgz mongo_bak_${time} && \
rm -rf mongo_bak_${time}"
# copy dump from docker to host
mkdir -p ${backupDir}
docker cp $MongoDB:/tmp/db/mongo_bak_${time}.tgz ${backupDir}/
fi
K8S
#!/bin/bash
# K8S 环境下自动备份 MongoDB 数据库下的库
source /etc/profile
USER=admin
PASSWD="Admin.T123"
DEST_PATH="/data/data-bak/mongobak/"
DATE=$(date +%F)
# 数据库备份保留多少天
BDAY=5
MongoDB=`kubectl get po | grep mongodb|head -1|awk '{print $1}'`
if [ ! $MongoDB ]
then
exit 1
else
kubectl exec -i ${MongoDB} -- mongodump -u ${USER} -p ${PASSWD} --authenticationDatabase admin && \
kubectl exec -i ${MongoDB} -- tar zcf mongo_dump_${DATE}.tgz dump --remove-files && \
kubectl cp ${MongoDB}:/mongo_dump_${DATE}.tgz ${DEST_PATH}/mongo_dump_${DATE}.tgz && \
kubectl exec -i ${MongoDB} -- rm -rf mongo_dump_${DATE}.tgz && \
/bin/find ${DEST_PATH} -type f -name "mongo_dump_*.tgz" -mtime +${BDAY} -exec rm -rf {} \;
fi