K8s中 备份数据 检查验证(四)--MongoDB备份验证
检查现行K8s中的MongoDB状况;status-mongodb.sh#!/bin/bashrundir=$(cd $(dirname $0); pwd)theday=`date +%F`if [ ! -d "${rundir}/log" ]; thenmkdir ${rundir}/logfiif [ "$*" ];thenarg...
·
检查现行K8s中的MongoDB状况;
status-mongodb.sh
#!/bin/bash
rundir=$(cd $(dirname $0); pwd)
theday=`date +%F`
if [ ! -d "${rundir}/log" ]; then
mkdir ${rundir}/log
fi
if [ "$*" ];then
arg=$*
else
arg="mongodb-0"
fi
echo -e "当前ehome-mongodb数据库中scene的状态:"
kubectl exec ehome-mongodb-0 -n ehome mongo -- --shell "scene" --eval "db.stats()" \
>> ${rundir}/log/mongodb-status-${theday}.txt
#cat ${rundir}/log/mongodb-stats-${theday}.txt
sed -n '6,20p' ${rundir}/log/mongodb-status-${theday}.txt
运行
验证MongoDB数据;
mongodb-check.sh
#!/bin/bash
rundir=$(cd $(dirname $0); pwd)
theday=`date +%F`
echo -e "=======${theday} ehome-MongoDB备份验证======="
#清除上次验证数据
dbtmpdir="${rundir}/dbtmp/mongodb"
rm -rf ${dbtmpdir} && mkdir ${dbtmpdir} -p
#如果没有参数则搜索当前运行目录下的
if [ "$1" ];then
baktar=$1
else
baktar=$(find ${rundir} -name "*mongodb*.tar.gz" | sort -rn | head -1)
fi
if [ ! -e "${baktar}" ];then
echo "没有找到备份*mongodb*.tar.gz!!!"
exit 0
fi
echo -e "1.MongoDB备份文件是:\n ${baktar}"
echo -e "2.还原数据库的临时目录:\n ${dbtmpdir}"
echo -e "3.开始还原数据库"
cp -f ${baktar} ${dbtmpdir}/mongodb.tar.gz
cd ${dbtmpdir}
tar -zxvf ${dbtmpdir}/mongodb.tar.gz >> /dev/null 2>&1
docker run -d --name mongo-check -v ${dbtmpdir}:/home mongo:3.6 >> /dev/null 2>&1
docker exec mongo-check bash -c 'exec mongorestore /home/mongodump' >> /dev/null 2>&1
echo -e "解压的备份数据库:${dbtmpdir}/mongodump"
#echo -e "\n======================================" >> ${rundir}/log/mongodb-check.txt
echo -e "=======${theday} ehome-MongoDB备份验证=======" >> ${rundir}/log/mongodb-check.txt
#echo -e "======================================" >> ${rundir}/log/mongodb-check.txt
echo -e "备份文件为:${baktar}" >> ${rundir}/log/mongodb-check.txt
echo -e "数据库验证结果:" >> ${rundir}/log/mongodb-check.txt
echo -e "4.检验数据"
docker exec mongo-check mongo --shell "scene" --eval "db.stats()" \
> ${rundir}/log/mongodb-check-${theday}.txt
docker stop mongo-check >> /dev/null 2>&1
docker rm mongo-check >> /dev/null 2>&1
sed -n '6,20p' ${rundir}/log/mongodb-check-${theday}.txt >> ${rundir}/log/mongodb-check.txt
#sed -i '/^$/d' ${rundir}/log/etcd-check.txt
#cat ${rundir}/log/etcd-check.txt | tr -s "\n" > ${rundir}/log/etcd-check.txt
tail -n 18 ${rundir}/log/mongodb-check.txt
echo -e "验证结果输出:${rundir}/log/mongodb-check.txt"
运行
更多推荐
已为社区贡献4条内容
所有评论(0)