linux系统实现数据库定时备份

数据库的主从复制,负载均衡,读写分离什么的很久以前就学过,自己玩了一下,不过一直缺少实战经验,以前学的时候也就是跟着操作了一遍,过不久就忘记了,最近兼职做了个外包,客户要求做数据库备份,于是想写一个shell脚本来定时备份数据库,那么问题了,很久没有写过脚本,为什么写这么个小东西折腾了头天。 #以下为我写的脚本,还待完善 #!/bin/bash DATE=$(date +%Y%m%d_%H%M%S)

BASE=/data/bak LOGFILE="$BASE/log/backup_$DATE.log" BACKUP="$BASE/sql/blog_$DATE.sql" echo "=============================$DATE===============================" >> $LOGFILE echo "start backup..." >> $LOGFILE /usr/local/mysql/bin/mysqldump -uroot -p111111 mysql > $BACKUP 2> $LOGFILE echo "end backup..." >> $LOGFILE find $BASE/sql/ -name "*.gz" -mmin +3 | xargs rm -f gzip $BACKUP 2> $LOGFILE

exit

加入定时任务 crontab -e */1 * * * * /data/bak/mysql_bak.sh 2> /data/bak/error.log #这里讲一下涉及到的知识和碰到的问题

  1. 首先是时间,PHP是YmdHis,shell里的时分是MS
  2. 标准错误输出2,重定向标准错误输出到日志文件
  3. gzip压缩文件,参照网上的资料,本来是放在数据库名后面的,用|分开,但是echo的日志内容没有输出了,不知道什么原因,于是就单独列出来了,下面扩展一下gzip的知识

gzip命令用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。 gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。 语法 gzip(选项)(参数) 选项 -a或——ascii:使用ASCII文字模式; -d或--decompress或----uncompress:解开压缩文件; -f或——force:强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接; -h或——help:在线帮助; -l或——list:列出压缩文件的相关信息; -L或——license:显示版本与版权信息; -n或--no-name:压缩文件时,不保存原来的文件名称及时间戳记; -N或——name:压缩文件时,保存原来的文件名称及时间戳记; -q或——quiet:不显示警告信息; -r或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理; -S或<压缩字尾字符串>或----suffix<压缩字尾字符串>:更改压缩字尾字符串; -t或——test:测试压缩文件是否正确无误; -v或——verbose:显示指令执行过程; -V或——version:显示版本信息; -<压缩效率>:压缩效率是一个介于1~9的数值,预设值为“6”,指定愈大的数值,压缩效率就会愈高; --best:此参数的效果和指定“-9”参数相同; --fast:此参数的效果和指定“-1”参数相同。 参数 文件列表:指定要压缩的文件列表。 实例 把test6目录下的每个文件压缩成.gz文件 gzip * 把上例中每个压缩的文件解压,并列出详细的信息 gzip -dv * 详细显示例1中每个压缩的文件的信息,并不解压 gzip -l * 压缩一个tar备份文件,此时压缩文件的扩展名为.tar.gz gzip -r log.tar 递归的压缩目录 gzip -rv test6 这样,所有test下面的文件都变成了*.gz,目录依然存在只是目录里面的文件相应变成了*.gz.这就是压缩,和打包不同。因为是对目录操作,所以需要加上-r选项,这样也可以对子目录进行递归了。 递归地解压目录 gzip -dr test6 4. find找出一些以前的备份文件删除,免得日志文件占空间,这里也扩展一下知识 find [目录] 选项 [文件名] -mtime[以小时算] -mmin[以分钟算] +数字 文件mtime的时间加上+的时间如果小于当前时间则被筛选出来,xarg筛选结果逐个处理删除 5. 刚开始写定时任务不起作用,不知道什么原因,实在纳闷,最后重定向错误时间到日志文件才发现原因,原来脚本里面的路径我写的是相对路径,导致找不到文件出错,后来才把BASE给加上去的

#不过还有遗留问题,就是目前日志文件都变为空文件了,待解决

到技术群里问了一下,终于找到问题了,2>重定向直接覆盖了文件,改成2>>追加就好了,折腾了好久,呵呵

转载于:https://my.oschina.net/u/2618337/blog/1417317

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值