对k8s中备份的数据进行验证,对比现k8s运行中的数据与备份的数据,检查是否备份异常。
脚本包括对K8s中的mysql,mongodb,redis及etcd四种数据库的现行状态及备份检查。
脚本运行在K8s中的master主机中。
bak 目录:里边的备份数据是从K8s中各个备份点 scp 或 rsync到此目录中。
dbtmp目录:验证过程中自动生成的验证的数据文件。
log目录:验证日志输出目录。
直接运行./check.sh就可以生成 .md格式的验证结果。
如下是check.sh代码:
#!/bin/bash
#运行目录
rundir=$(cd $(dirname $0); pwd)
#格式化当前日期
theday=`date +%F`
outmd=${rundir}/check-out-${theday}.md
echo "# 备份验证-${theday}" > ${outmd}
echo -e "\e[92m 开始iotplat-Mysql数据库检查... \e[0m"
echo "## iotplat-Mysql" >> ${outmd}
echo "--------------------------" >> ${outmd}
echo "> 当前系统的数据" >> ${outmd}
echo " " >> ${outmd}
echo " \`\`\` " >> ${outmd}
#./status-mysql.sh mysql-0 -n default >> ${outmd}
./status-mysql-iotplat.sh >> ${outmd}
echo " \`\`\` " >> ${outmd}
echo "> 备份的数据" >> ${outmd}
echo " " >> ${outmd}
echo " \`\`\` " >> ${outmd}
# ./mysql-check.sh /home/mysql-iotplat.tar.gz >> ${outmd}
./mysql-check-iotplat.sh >> ${outmd}
echo " \`\`\` " >> ${outmd}
cat -n ${rundir}/check-out-${theday}.md
echo -e "\e[92m 开始s1plat-Mysql数据库检查... \e[0m"
echo "## s1plat-Mysql" >> ${outmd}
echo "--------------------------" >> ${outmd}
echo "> 当前系统的数据" >> ${outmd}
echo " " >> ${outmd}
echo " \`\`\` " >> ${outmd}
#./status-mysql.sh mysql-0 -n default >> ${outmd}
./status-mysql-s1plat.sh >> ${outmd}
echo " \`\`\` " >> ${outmd}
echo "> 备份的数据" >> ${outmd}
echo " " >> ${outmd}
echo " \`\`\` " >> ${outmd}
# ./mysql-check.sh /home/mysql-s1plat.tar.gz >> ${outmd}
./mysql-check-s1plat.sh >> ${outmd}
echo " \`\`\` " >> ${outmd}
echo "--------------------------" >> ${outmd}
cat -n ${rundir}/check-out-${theday}.md
echo -e "\e[92m 开始iotplat-Redis数据库检查... \e[0m"
echo "## iotplat-Redis" >> ${outmd}
echo "--------------------------" >> ${outmd}
echo "> 当前系统的数据" >> ${outmd}
echo " " >> ${outmd}
echo " \`\`\` " >> ${outmd}
#./status-mysql.sh mysql-0 -n default >> ${outmd}
./status-redis-iotplat.sh >> ${outmd}
echo " \`\`\` " >> ${outmd}
echo "> 备份的数据" >> ${outmd}
echo " " >> ${outmd}
echo " \`\`\` " >> ${outmd}
./redis-check-iotplat.sh >> ${outmd}
echo " \`\`\` " >> ${outmd}
cat -n ${rundir}/check-out-${theday}.md
echo -e "\e[92m 开始s1plat-Redis数据库检查... \e[0m"
echo "## s1plat-Redis" >> ${outmd}
echo "--------------------------" >> ${outmd}
echo "> 当前系统的数据" >> ${outmd}
echo " " >> ${outmd}
echo " \`\`\` " >> ${outmd}
#./status-mysql.sh mysql-0 -n default >> ${outmd}
./status-redis-s1plat.sh >> ${outmd}
echo " \`\`\` " >> ${outmd}
echo "> 备份的数据" >> ${outmd}
echo " " >> ${outmd}
echo " \`\`\` " >> ${outmd}
# ./mysql-check.sh /home/mysql.tar.gz >> ${outmd}
./redis-check-s1plat.sh >> ${outmd}
echo " \`\`\` " >> ${outmd}
echo "--------------------------" >> ${outmd}
cat -n ${rundir}/check-out-${theday}.md
echo -e "\e[92m 开始ehome-MongoDB数据库检查... \e[0m"
echo "## ehome-MongoDB" >> ${outmd}
echo "--------------------------" >> ${outmd}
echo "> 当前系统的数据" >> ${outmd}
echo " " >> ${outmd}
echo " \`\`\` " >> ${outmd}
#./status-mysql.sh mysql-0 -n default >> ${outmd}
./status-mongodb.sh >> ${outmd}
echo " \`\`\` " >> ${outmd}
echo "> 备份的数据" >> ${outmd}
echo " " >> ${outmd}
echo " \`\`\` " >> ${outmd}
# ./mysql-check.sh /home/mysql.tar.gz >> ${outmd}
./mongodb-check.sh >> ${outmd}
echo " \`\`\` " >> ${outmd}
echo "--------------------------" >> ${outmd}
cat -n ${rundir}/check-out-${theday}.md
echo -e "\e[92m 开始Etcd数据库检查... \e[0m"
echo "## Etcd" >> ${outmd}
echo "--------------------------" >> ${outmd}
echo "> 当前系统的数据" >> ${outmd}
echo " " >> ${outmd}
echo " \`\`\` " >> ${outmd}
./status-etcd.sh >> ${outmd}
echo " \`\`\` " >> ${outmd}
echo "> 备份的数据" >> ${outmd}
echo " " >> ${outmd}
echo " \`\`\` " >> ${outmd}
# ./mysql-check.sh /home/mysql.tar.gz >> ${outmd}
./etcd-check.sh >> ${outmd}
echo " \`\`\` " >> ${outmd}
echo "--------------------------" >> ${outmd}
cat -n ${rundir}/check-out-${theday}.md
echo -e "\e[92m 检查完成! \e[0m"
运行后输出的结果.md如下: