场景
生产数据定时备份的意义大家应该都是知道的,很多人备份只是备份到了本地,但是也会存在一定的隐患,比如客户一直不用系统,我们也不去注意,哪天服务器到期了过了几个月客户突然要用方向数据没了。。。
使用到的工具
主要看大家的服务器的安装情况,如果是安装了宝塔面板这种,有定时任务工具直接使用,而且也有免费的七牛云插件,设置起来超级简单,如果安装宝塔的不懂设置可以评论区留言,实在是太简单了本文就不讲了,说实话是会点鼠标就可以弄了
基于linux系统内备份
大概的意思就是你的mysql是自己用命令安装的。
- 七牛平台
- shell脚本
- linux定时任务
需要七牛云账号,用户需要自己创建,或者其它用其它云盘原理都是一样的
(一)下载qshell工具并安装设置
1. 工具下载
说明文档与下载地址: 七牛工具下载
工具是七牛官方提供的,下载工具后传到服务器,主要看自己服务器的架构,我的服务是linux x86的,根据自己服务器去下载,把文件上传至服务目录/home/backup/shell
目录。并赋予权限chomd +x qshell
2. 登录设置七牛云账号
注意需要在工具目录下执行,如果需要任何目录执行需要添加环境变量可查看官方文档说明,更多说明以官方最新文档为准
# 参数说明可自己根据情况修改
#ak :官方获取
#sk: 官方平台获取
#name : 任意用户名,不是七牛的账户,比如 db-test
qshell account <ak> <sk> <name>
#完成命令参考
(二) shell编辑脚本
在目录/home/backup/shell
下新建脚本backup.sh
#!/bin/sh
# mysql data backup script
#
# use mysqldump --help,get more detail.
# 需要设置环境变量,crond中默认读取不到我们的一些环境
PATH=$PATH:/home/backup/shell
export PATH
dbname=<dbname>
#备份文件目录
bakDir=/home/backup/sql
logFile=/home/backup/backup.log
month=` date +%Y%m `
# 七牛的备份目录,当前按数据库为一级目录,月份为2级目录如:dbname/202004/****.gz.sql
qiniuPath=typecho_joe_theme/$month
# 七牛空间名
qiniuBucket=<bucketName>
datetime=`date +%Y%m%d%H%M%S`
keepDay=7
echo "-------------------------------------------" >> $logFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $logFile
echo "--------------------------" >> $logFile
cd $bakDir
bakFile=$dbname.$datetime.sql.gz
# yum,apt-get,源码编译安装释放
mysqldump -u$user -p$password $dbname | gzip > $bakFile
#docker安装执行方式,需要修改<dbname>为自己的数据库
#docker exec mysql5.6 sh -c 'exec mysqldump <dbname> -uroot -p"$MYSQL_ROOT_PASSWORD"' | gzip > $bakDir/$bakFile
echo "数据库 [$dbname] 备份完成" >> $logFile
echo "$bakDir/$bakFile" >> $logFile
echo "开始上传备份文件至七牛云存储" >> $logFile
#七牛上传命令,分片上传适用大文件,当前使用低频储存,具体命令可以查看文档
qshell rput $qiniuBucket $qiniuPath/$bakFile $bakDir/$bakFile --storage 1 | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" >> $logFile 2>&1
echo "删除${keepDay}天前的备份文件" >> $logFile
find $bakDir -ctime +$keepDay >> $logFile
find $bakDir -ctime +$keepDay -exec rm -rf {} \;
echo " " >> $logFile
echo " " >> $logFile
参考文献:
(二) 添加定时任务
需要使用到cron命令,本文不展开讲这个,需要了解的可以参考以下文献
- 文献一: crontab配置方法
- 文献二: Linux系统crontab定时任务的配置概要与常见问题
- 文献三: crontab 与 环境变量
下面直说具体操作,执行器需要先检查crond的状态service crond status
,如果是在运行中就没什么问题
编辑定时任务
#修改当前用户定时任务
crontab -e
添加任务脚本,操作和vi
是一样的
# 每天凌晨3点执行脚本,
0 3 * * * /home/backup/backup.sh
# 如果是测试可以用以下的脚本,意思是没2分钟执行一次,看看有没有成本
*/2 * * * * /home/backup/backup.sh
查看定时任务
#查看当前任务情况
crondtab -l
(三) 完成
设置完成以后最好要检查下是否成功,建议先设置按分钟执行备份看看,如果中间有什么问题要多百度,一般都可以搜得到
评论 (0)