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

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

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> $LOGFILEsql

exitshell

加入定时任务 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给加上去的bash

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

到技术群里问了一下,终于找到问题了,2>重定向直接覆盖了文件,改为2>>追加就行了,折腾了很久,呵呵负载均衡

相关文章
相关标签/搜索