外观
Shell
约 432 字大约 1 分钟
2025-02-20
备份docker容器内的mysql库
警告
mysqldump过程中会进行锁表 mysqldump和tar非常占用资源,要结合自己的环境使用
提示
使用mysqldump出来的sql文件恢复数据库,数据库占用量可能会变小,这是正常的,因为会自动优化结构。 记得区分挂载目录
#! /bin/bash
#时间变量
date=$(date "+%Y%m%d")
#使用mysqldump备份mysql库到/root/backup/下
echo "使用mysqldump备份数据库"
docker exec 0d0c654330ae bash -c "mysqldump -uroot -p123123 --downloadsbases mysql --single-transaction > /opt/mysql/dumpdb/downloadsbase-$date.sql" &> /dev/null
if [ $? -eq 0 ]
then
echo "备份成功"
else
echo "备份失败"
exit 1
fi
#使用tar压缩sql文件
cd /opt/mysql/dumpdb/
echo "开始压缩备份文件"
tar zcvf downloadsbase-$date.sql.tar.gz downloadsbase-$date.sql
if [ $? -eq 0 ]
then
echo "压缩成功"
else
echo "压缩失败"
exit 1
fi
#移动备份文件到/opt/mysql/mysql-backup
mv downloadsbase-$date.sql.tar.gz /opt/mysql/mysql-backup/
#删除压缩前sql文件
rm -rf downloadsbase-touty-$date.sql
#删除三天前的备份
find /opt/mysql/mysql-backup/* -mtime +3 -name "*.gz" -exec rm -rf {} \;
if [ $? -eq 0 ]
then
echo "删除成功"
else
echo "删除失败"
exit 1
fi
利用until持续判断一个文件的内容,直到出现指定内容
#!/bin/bash
#查看容器log并输出到文件内
docker logs -f xxx > /opt/jenkins/xxx.log
#定义变量
JOJO=True
#持续判断DIO知道等于JOJO
until [ "$DIO" = "$JOJO" ]
do
#定义变量`获取xxx.log的最后一行的值`
DIO=`tail -1 /opt/jenkins/xxx.log`
done
exit 0
备份Docker容器内的Mongo
#!/bin/bash
DATE=$(date +%Y%m%d%H)
docker cp mongo-master:/downloads/db /backup/mongo/touty_mongo_${DATE}
if [ ! -d /backup/mongo/touty_mongo_${DATE} ];then
echo "< Mongo备份失败! 备份失败时间 ${DATE} >"
else
echo "< 本次备份时间 ${DATE} >"
echo "< 备份文件名称 touty__mongo_${DATE}>"
echo "< Mongo备份成功!"
fi
echo ""
echo ""
size=`du -sh /backup/`
echo "备份文件占用总空间:"${size}
echo ""