mysql定时生成sql脚本

编写shell脚本mysqlbak.sh,内容如下

#!/bin/bash
# This script run at 11:00
id="root" #用户名
pwd="111112"  #密码
dbs="ecshop" #数据库名字的列表,多个数据库用空格分开
backuppath="/root/mysqlbackup" #保存备份的位置
day=15   #保留最近几天的备份
[ ! -d $backpath ] &&mkdir -p $backuppath  #判断备份目录是否存在,不存时新建目录
cd $backuppath   #转到备份目录,这句话可以省略。可以直接将路径到命令的也行
backupname=mysql_$(date "+%Y-%m-%d-%H-%M")  #生成备份文件的名字的前缀,不带后缀
for db in $dbs;   #dbs是一个数据名字的集合。遍历所有的数据
do
 mysqldump -u$id -p$pwd -S /var/lib/mysql/mysql.sock $db >$backupname_$db.sql  #备份单个数据为.sql文件。放到当前位置
 if [ "$?" == "0" ]  #$? 得到上一个shell命令的执行的返回值。0表示执行成功。其他表示错误。并将将结果写入到日志中。  
 then 
  echo $(date "+%Y-%m-%d-%H-%M")" $db  mysqldump sucess">>mysql.log   
 else 
  echo $(date "+%Y-%m-%d-%H-%M")"  $db mysql dump failed">>mysql.log  #完整日期为%Y-%m-%d %H:%M:%S
  exit 0  
 fi
done
tar -czf $backupname.tar.gz *.sql #压缩所有sql文件
if [ "$?" == "0" ]
then 
   echo $(date "+%Y-%m-%d-%H-%M")" tar sucess">>mysql.log  
else 
   echo $(date "+%Y-%m-%d-%H-%M")" tar failed">>mysql.log  
   exit 0  
fi
rm -f *.sql  #删除所有的sql文件
delname=mysql_$(date -d "$day day ago" +%Y-%m-%d)*.tar.gz  #得到要删除的太旧的备份的名字
rm -f $delname  #删除文件

上传脚本至/data/script/目录

授可执行权利

chmod +x /data/script/mysqlbak.sh

配置定时任务

yum -y install vixie-cron
crontab -e
在最后添加:
每天三点
00 3 * * * /bin/bash /data/script/mysqlbak.sh
每天十二点半
30 12 * * * /bin/bash /data/script/mysqlbak.sh

重启crontab

/etc/rc.d/init.d/crond restart

其它命令

#修改crontab文件
vi /etc/crontab
#查看crond 运行状态
service crond status
#查看系统用户邮件信息
vi /var/spool/mail/root
#目录加权限
chmod -R 777 /bin/guoyixianscripts/
#用户的mysql命令路径
/usr/local/mysql/bin/mysql
/usr/local/mysql/bin/mysqldump
#php-fpm重启
kill -USR2 `cat /usr/local/php5/var/run/php-fpm.pid`
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值