定时备份容器部署的MySQL、MongoDB并上传到阿里云OSS
本文最后更新于 1094 天前,其中的信息可能已经有所发展或是发生改变。

备份脚本

#!/bin/sh

echo "---------------------------------------------------------------"
echo "备份xxx的数据库,包含mysql、MongoDB"
echo "并上传到阿里云oss,bucket: xxx"
echo "---------------------------------------------------------------"

# 备份文件输出目录
OUTPUT_DIR="/opt/xxx"
# 当天的备份文件存放目录
CURR_BACKUP_DIR="`date +%Y-%m-%d`"

MYSQL_USER="xxx"
MYSQL_PWD="xxx"
MYSQL_DB_NAME="xxx"
MYSQL_CONTAINER_NAME="xxx"
MYSQL_BACKUP_FILE_NAME="mysql-$MYSQL_DB_NAME-backup-`date +%Y-%m-%d-%H-%M-%S`.sql"

MONGODB_CONTAINER_NAME="xxx"
MONGODB_DB_NAME="xxx"
MONGODB_USER="xxx"
MONGODB_PWD="xxx"
# 该目录挂载的,这是容器内的目录,对应宿主机的是$OUTPUT_DIR
MONGODB_OUTPUT_DIR="/data/backup"

echo "ʕ•ﻌ•ʔ 开始备份 `date +%Y-%m-%d-%H-%M-%S`"
cd $OUTPUT_DIR

echo "ʕ•ﻌ•ʔ 先删除当天已存在的备份文件目录,再重新创建"
rm -rf $CURR_BACKUP_DIR && mkdir $CURR_BACKUP_DIR

echo "ʕ•ﻌ•ʔ 导出mysql备份文件"
docker exec -i $MYSQL_CONTAINER_NAME /usr/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PWD $MYSQL_DB_NAME >>$OUTPUT_DIR/$CURR_BACKUP_DIR/$MYSQL_BACKUP_FILE_NAME

echo "ʕ•ﻌ•ʔ 导出MongoDB备份文件"
docker exec -i $MONGODB_CONTAINER_NAME mongodump -h 127.0.0.1:27017 -u $MONGODB_USER -p $MONGODB_PWD -d $MONGODB_DB_NAME -o $MONGODB_OUTPUT_DIR
mv $MONGODB_DB_NAME $CURR_BACKUP_DIR

echo "ʕ•ﻌ•ʔ 压缩打包"
tar -czf $CURR_BACKUP_DIR.tar.gz $CURR_BACKUP_DIR

echo "ʕ•ﻌ•ʔ 上传到oss"
./ossutil64 --config-file ./ossutilconfig cp -f $CURR_BACKUP_DIR.tar.gz oss://xxx

echo "ʕ•ﻌ•ʔ 删除当天的备份文件"
rm -rf $OUTPUT_DIR/$CURR_BACKUP_DIR
rm -rf $CURR_BACKUP_DIR.tar.gz

echo "ʕ•ﻌ•ʔ 完成备份 `date +%Y-%m-%d-%H-%M-%S`"
echo "---------------------------------------------------------------"
  • 先准备好oss里的bucket,并配置专用账号,只提供该bucket的权限
  • bucket设置只保存7天内的文件,不用脚本去删除
  • oss存储类型选择归档型,费用低。正常写入数据,但读取数据需要先解冻(耗时一分钟左右)
  • mysql备份文件可以直接输出到宿主机
  • MongoDB备份文件不只一个文件,不能直接输出到宿主机。可以输出到一个挂载的数据卷
  • 服务器上不保存备份文件,只存到oss里
  • 使用crontab每天定时执行,并记录日志:29 2 * * * sh -c /opt/xxx/db-backup.sh >> /opt/xxx/log.txt
  • MongoDB还原备份文件:mongorestore -h 127.0.0.1:27017 -u xxx -p xxx -d xxx /data/xxx
  • mysql还原备份文件:先创建对应数据库,再执行备份文件里的sql脚本
  • 最后测试下还原出来的数据是否正确
作者:Yuyy
博客:https://yuyy.info
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇