当前位置:首页 > 芯闻号 > 充电吧
[导读]需求:1.每个小时全量备份一次数据库。2.数据库服务器只保留一天的备份文件(保留24份备份.sql)3.每天凌晨3点把最新备份文件上传到其他服务器。上面的需求分二部走:第一步:每小时备份一次并删除24

需求:1.每个小时全量备份一次数据库。

2.数据库服务器只保留一天的备份文件(保留24份备份.sql)

3.每天凌晨3点把最新备份文件上传到其他服务器。


上面的需求分二部走:

第一步:每小时备份一次并删除24小时前文件。


在linux h 输入:crontab -e
内容:1 * * * * /data/mysql_backup_script/mysql_backup.sh
mysql_backup.sh文件内容:
# File: /data/mysql_backup_script/mysql_backup.sh  
# Database info  
DB_NAME="mydb"  
# Others vars  
# whereis mysqldump  
# IS ` but not '  
BIN_DIR="/usr/local/mysql/bin"  
BCK_DIR="/var/mysql_dump/data"  
DATE=`date +%Y%m%d_%H`  
# TODO  
mkdir -p $BCK_DIR 
rm -f $BCK_DIR/$DB_NAME.dump_$DATE.sql.gz 
$BIN_DIR/mysqldump   $DB_NAME | gzip  > $BCK_DIR/$DB_NAME.dump_$DATE.sql.gz

#Delete the previous day
OLD_DATE=`date -d -24hour +%Y%m%d_%H`
rm -f $BCK_DIR/$DB_NAME.dump_$OLD_DATE.sql.gz


你可能会问题怎么不用输入mysql的用户名密码呢?? 

是这样的,mysql5.5以后为了提高安全性不能将密码输入到脚本文件中。否则执行脚本时会报错。所以我们可以设置mysql的配置文件。dump时指定用户名和密码:

my.cnf:


[mysqldump]
quick
user=root
password=root


第二部:每天凌晨3点将最新的备份文件上传到其他服务器:


在linux输入:


crontab -e

内容:



3 3 * * * /data/mysql_backup_script/scp_backup.sh


scp_backup.sh文件内容:



#!/bin/sh
DATE=`date +%Y%m%d_%H`
DB_NAME="mydb"  
BCK_DIR="/var/mysql_dump/data"    
BACK_SERVER="root@192.168.0.101"
BACK_SERVER_DIR="/var/mysql_dump/"
BACK_SERVER_PORT="22"
scp -P $BACK_SERVER_PORT  $BCK_DIR/$DB_NAME.dump_$DATE.sql.gz  $BACK_SERVER:$BACK_SERVER_DIR


采用的是Linux的scp命令来完成的。


细心的你可能又发现怎么没让输入远程服务器的密码就能把文件拷贝过去呢。

这里说明下:用的是ssh免密。关于ssh免密设置参考:

http://blog.csdn.net/wind520/article/details/38421359


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭