美文网首页
数据库定时备份-服务器

数据库定时备份-服务器

作者: 与子笑 | 来源:发表于2018-05-20 10:04 被阅读0次

    服务器  @amazeUI  2017-01-18 07:54:54

            数据库定时备份,围绕两样东西展开,一个是shell程序(一般别人更愿意叫shell脚本),一个是定时任务(crontab)。很简单的一个小程序,shell负责导出数据库,打包好,然后删除没用的,定时任务完全可以理解为,让系统每隔多久执行一下的一个任务,这玩意就叫定时任务。下面分开说这两样东西,最后把定时备份这段也弄上来。

            shell到底是什么,该怎么写,我的理解是linux命令的集合,比如你想echo一个1,紧接着再写一个echo 2,你需要1和2同时出现,这时你可以将echo1和echo2写进shell脚本里,执行这个脚本,脚本会将里面的echo1和echo2当作一个命令集合来运行。

            shell编程属于一门语言,有变量,运算,和控制结构。在这里就不讲太详细了,这些都是死的。shell的格式,.sh作为文件名后缀,文件开始声明shell程序,#!/bin/bash,第二行开始写程序。shell脚本可以通过两种方式来运行,一种是直接选中当前文件,比如./test.sh,还有一种是调用解释器来执行shell程序,比如 /bin/bash ./test.sh。shell程序里应该都用绝对路径,shell里面有各种表达式如数学表达式大于小于的写法和规范,还有U文件表达式的写法如文件是否存在和规范,且还可以传参数到shell脚本里面使用,就像php里的$_GET或$_POST一样使用,还有各种系统变量。语言只是工具,语言的规范和各种表达式或插件或函数只是工具的用法,程序的好坏不取决于语言,而是取决于想象力。

            定时任务更简单了,crontab -e,表示增加一个定时任务,那定时任务怎么写呢,刚开始五个米字符,代表定时任务时间格式分时日月周,中间需要有空格,* * * * * 后面写执行的命令,建议用第二种调用shell脚本的方式,可以避开权限的问题。*/1 * * * * 这个代表每分钟执行一次。

    #!/bin/bash#这里是声明这是个shell脚本用bin/bash来启动

    mydate=`date +%Y%m%d`#定义一个变量

    mypath=/var/testcode#定义目录路径

    mydatabase=test#定义数据库的名字

    expiration=`date -d "-7 day" +%Y%m%d`#定义七天前时间

    mysqldump -uroot -p123456 $mydatabase > $mypath/$mydate.$mydatabase.sql

    cd $mypath

    tar czf $mypath/$mydate.$mydatabase.tar.gz $mydate.$mydatabase.sql

    rm $mypath/$mydate.$mydatabase.sql

    if [ -f $mypath/$expiration.tar.gz ]#判断文件是否存在

    then

    rm -rf $mypath/$expiration.tar.gz

    fi

            以上是数据库备份的shell程序,这个程序会将当天的数据库备份打包,删掉7天前的备份。crontab -e 新建定时任务,定好时间,比如这个可以每天凌晨4点钟执行,可以写成 * 4 * * * /bin/bash /var/testcode/a.sh。当然,定时任务对于phper来说更多的是定时运行某一些php脚本。其实都差不多。

    相关文章

      网友评论

          本文标题:数据库定时备份-服务器

          本文链接:https://www.haomeiwen.com/subject/tqbzdftx.html