检查现行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"

运行

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐