Linux MySQL定时备份并上传到git仓库

简介

咱们在部署咱们的中小型项目时 在数据存储 咱们一般选择mysql做为咱们的存储工具 那么对于一个大的项目来讲mysql

天天的数据量是十分大的 对于天天产生的数据 若是哪一天咱们的网站或者服务器受到攻击 咱们的数据丢失是个很爆炸的事情linux

因此说天然这设计到数据库的备份 那么怎样的备份是咱们想要的呢 git

对于备份的数据文件咱们可能会存放在服务器目录 备份周期的话固然是按照数据量来讲的 这里咱们通常都是天天的凌晨备份一次sql

备份后的文件存放在咱们的服务器的目录下面 可是万一有一天服务器也崩溃了 那么备份的文件也就没了shell

因此咱们设想一个好的方案就是数据库天天备份 每次备份自动提交到远程仓库 这里我以码云为例数据库

码云

首先创建好远程仓库 在这里我选择了码云vim

新建一个私有仓库 固然为了每次能够免密码提交文件 在服务器里能够生成ssh key 具体的能够看个人之前的一篇博客服务器

服务器新建备份

在服务器为了存储备份后的文件 新建一个备份目录框架

$ mkdir /bak

进入该目录后 继续新建两个文件夹 mysqlBakshDir 一个是放脚本文件 一个是放具体备份后的文件ssh

下面咱们能够去新建脚本了 进入shDir目录后 执行

$ vim mysqlBak.sh

具体的代码以下:

#!bin/sh
###################数据库配置信息#######################
createAt=`date +%Y-%m-%d-%H:%M:%S`
user=root
passwd=ghc1996
dbname=ispace
mysql_back_path=/bak/mysqlBak
###################执行命令#######################
mysqldump -u $user -p$passwd $dbname > $mysql_back_path/$createAt.sql
cd /bak/mysqlBak
/usr/local/git/bin/git add .
/usr/local/git/bin/git commit -m $createAt
/usr/local/git/bin/git push

这里只是一个简单的脚本 我想了解linux的很容易看的懂 执行的就是备份数据库并push到远程仓库

那么既然是脚本 咱们须要指明何时执行这个脚本 指定脚本执行

$ crontab -e

咱们但愿是天天的凌晨执行一次备份 并添加到远程仓库 那么添加

$ 0 0 * * * /bin/sh /bak/shDir/mysqlbak.sh

linuxcrontab指定的时间只有个部分

段位 时间
第一段 表明分钟 0—59
第二段 表明小时 0—23
第三段 表明日期 1—31
第四段 表明月份 1—12
第五段 表明星期几,0表明星期日 0—6

使用命令 crontab -e 而后直接编辑定时脚本。 时间 +具体的名字

举个列子来讲就是

0 0,3,7,9,12,15,18,21,23 * * * /bin/sh /bak/shell/mysqlBak.sh

这样的话就是我天天0,,3,7,9,12,15,18,21,23点时会去执行这个脚本文件 那么这就实现了基本的数据库的备份

执行定时任务

$ crontab -l

若是服务没有启动 那么从新启动定时任务

$ systemctl restart crond

那么如今这个定时任务就已经启动了 对于提交远程仓库前提是在服务器生成ssh key并添加到码云 这在上面也提到过

对于须要提交文件的目录初始化git目录就能够了 这样局能够构成了咱们须要的本分任务

固然过程当中可能会遇到一些问题 我在下面的相关连接都已经罗列出来了

这样一来咱们就能够实现了天天的凌晨备份咱们的数据库 并同时提交到咱们的码云这个远程仓库 这也是咱们想要的效果

我也说过备份的周期视咱们的项目的数据量的大小而定

对于每一个框架都有本身的备份机制 我这里所写的是咱们本身实现的一个通用的备份机制

相关连接

相关文章
相关标签/搜索