快捷搜索: 王者荣耀 脱发

Docker定时备份MySQL数据到七牛云教程

前言:我Linux服务器安装了docker,docker容器跑了springboot项目,用到了mysql数据库。所以必须准备程序,数据备份功能,万一哪天系统挂了,数据丢了,我可以随时恢复。因为没钱开通阿里云存储对象oss,腾讯云存储对象,就用七牛云免费的存储空间备份了。对于个人业余搞搞项目,还是可以的。对于商业项目还是用阿里云或腾讯云的存储对象吧。 宝塔面板也有插件支持阿里云,腾讯云存储空间。不会写代码的,也不用担心哦

需要用到的:

    一台云服务器(Linux CentOS系统)。这里使用。当然你也可以使用。本质都一样。只要你选CentOS 系统就可以。 一个域名并通过了ICP备案。(七牛云存储开通需要用到自己的域名,没有域名,将无法使用七牛云存储。而且部署项目也需要有一个域名,总不能你系统靠ip地址来访问吧,搜索引擎可是不收录的哦) 或 服务器安装宝塔面板。(为了方便执行数据备份必须安装) 参考教程: 开通七牛云存储空间+宝塔面板安装七牛云插件。参考教程: 服务器安装Docker并部署SpringBoot项目。参考笔记:

第一步:准备mysql数据库备份脚本

这个脚本是我根据网上资料修改,亲身实践成功得来。

#!/bin/bash
echo ##########################################
echo ###### The database is automatically backed up at 01:00 am every day ######
echo ##########################################
# Setting environment variables
DATE=$(date +%Y_%m_%d_%H_%M_%S)
# $(date +%Y%m%d)
# 数据库用户名
USERNAME=root
# 密码
PASSWORD=123456
# 要备份的数据库
DB=favorites

# Docker容器ID
DOCKERID=********

#DB1=xxxx
# ubuntu 系统非 root 用户,要将备份产生的文件放到 xxx 用户所在的目录下,否则必须使用 sudo 输入管理员密码执行此脚本。
# Linux服务器上备份文件目录。
DIR=/root/data_backup   
echo Get system date:  $DATE

if [ ! -d "$DIR" ]; then
mkdir $DIR
fi
cd $DIR

echo backup started... $(date "+%Y-%m-%d %H:%M:%S")

# 备份 docker 容器中的数据库
# docker exec -it 容器名称 mysqldump -u用户名 -p密码 要备份的数据库名称 | gzip > 要打包到的文件名称

# docker exec -it c7f1b671c57f mysqldump -u$USERNAME -p$PASSWORD $DB > /root/data_backup/database_name_$DATE.sql
# docker exec -it c7f1b671c57f mysqldump -uroot -proot favorites | gzip > /root/data_backup/database_name_2021_05_07.sql.gz

# 最关键的备份语句
docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD  $DB | gzip > /root/data_backup/database_name_$DATE.sql.gz

# 备份 直接安装在 linux 系统中的数据库
# /usr/bin/mysqldump -u$USERNAME -p$PASSWORD $DB2 | gzip > xxx_$DATE.sql.gz
# just backup the latest 7 days

# find ${DIR} -name "database_name_*.sql.gz" -type f -mtime +7 -exec rm {} ; > /dev/null 2>&1

# find ${DIR} -name "database_name_*.sql.gz" -type f -mtime +7 -exec rm {} ; > /dev/null 2>&1


#保留最近文件数5,删除其它多余的文件。
ReservedNum=5
date=$(date "+%Y%m%d-%H%M%S")

FileNum=$(ls -l $DIR|grep ^- |wc -l)

while(( $FileNum > $ReservedNum))
do
    OldFile=$(ls -rt $DIR| head -1)
    echo  $date "Delete File:"$OldFile
    rm -rf $DIR/$OldFile
    let "FileNum--"
done 

echo backup completed! $(date "+%Y-%m-%d %H:%M:%S")

第二步:宝塔面板计划任务添加Shell脚本。

宝塔面板计划任务添加Shell脚本。 把上面的脚本添加进去。记住mysql数据备份目录。

第三步:宝塔面板添加新站点

宝塔面板添加新站点,选择站点根目录为mysql数据备份目录。比如:/root/data_backup

第四步:宝塔面板添加网站计划任务备份到七牛云

宝塔面板计划任务添加网站备份到七牛云。

这样就可以把服务器上的任何自定义目录都备份到七牛云存储空间了。

/root/data_backup/目录下,我们可以定期把docker mysql容器的数据导出到这个目录。然后再利用宝塔面板备份站点的功能,对这个自定义的目录进行完整备份到七牛云,又拍云,微软one drive,服务器FTP空间等


查看七牛云存储空间,备份成功!

关于宝塔面板备份七牛云,参考教程:

经验分享 程序员 微信小程序 职场和发展