定时调度备份mysql数据库中的数据实现步骤如下:
在SSH Secure中进行操作
1.在usr目录下面新建bakscript文件夹,来保存任务调度命令文件.sh
mkdir bakscript
2.在usr目录下面新建bak文件夹,用来保存sql文件和其他文件
mkdir bak
3.打开bakscript文件夹,新建文件mysqlbak.sh(备份sql文件),imagesbak.sh(备份项目下的图片文件)
touch mysqlbak.sh
touch imagesbak.sh
4.在脚本文件中分别写入一下内容
vi mysqlbak.sh
#DataBase Name
DB_NAME="blog"
#DataBase User
DB_USER="root"
#DataBase PassWord
DB_PASS="root"
#MySQL mysqldump dir
BIN_DIR="/alidata/server/mysql/bin"
#backup dir
BCK_DIR="/usr/bak"
#current datetime
DATE=`date +%Y%m%d_%H%M%S`
$BIN_DIR/mysqldump -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $BCK_DIR/$DB_NAME$DATE.sql.gz
#delete file before 1 minute -mmin +1
#delete fiel before 7 days -mtime +7
#out errorlog >>$BCK_DIR/error.log 2>&1
find $BCK_DIR -name "*.sql.gz" -type f -mmin +1 -exec rm -rf {} \; > /dev/null 2>&1
:wq退出保存
imagesbak.sh
cp -r /usr/tomcat6/webapps/blog/UploadImgs /usr/bak
:wq退出保存
5.给imagesbak.sh和mysqlbak.sh添加可执行权限
chmod +x mysqlbak.sh
chmod +x imagesbak.sh
6.配置任务调度命令执行的时间
crontab -e
7.按下i,进行插入命令
0 0 * * * /usr/bakscript/mysqlbak.sh >>/tmp/error.log 2>&1
0 0 * * * /usr/bakscript/imagesbak.sh
8.重新启动cron
service cron restart
---------------------------------------------------------------------以上是执行过程,下面进行解释--------------------------------------------------------------------------------------------------------------
1.mkdir bakscript表示创建一个bakscript名字的文件夹
2.touch mysqlbak.sh新建一个mysqlbak.sh的文件
3.vi mysqlbak.sh使用vim编辑器进行编辑
4.
#要备份的数据库名称blog
DB_NAME="blog"
#数据库中的用户名
DB_USER="root"
#数据库中的密码
DB_PASS="root"
#mysql数据库中mysqldump可执行文件的位置<span style="font-family: Arial, Helvetica, sans-serif;">/alidata/server/mysql/bin/mysqldump</span>
BIN_DIR="/alidata/server/mysql/bin"
#备份文件夹地址
BCK_DIR="/usr/bak"
#当前系统的时间,为了使文件名不重复
DATE=`date +%Y%m%d_%H%M%S`
$BIN_DIR/mysqldump -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $BCK_DIR/$DB_NAME$DATE.sql.gz
$BIN_DIR表示对上面声明的变量进行引用
mysqldump为mysql备份数据库的命令
-u $DB_USER 为数据库用户名
-p$DB_NAME 为数据库密码,明文密码比如你项目连接使用的是root,这里就写root
$DB_NAME要备份的数据库的名称
| 管道命令将前面
$BIN_DIR/mysqldump -u $DB_USER -p$DB_PASS $DB_NAME
执行的结果交给后面的命令进行处理
gzip > $BCK_DIR/$DB_NAME$DATE.sql.gz
gzip表示对文件进行压缩
>表示定向输出到文件,如果文件不存在,就创建文件,如果文件存在,就将其清空
find $BCK_DIR -name "*.sql.gz" -type f -mmin +1 -exec rm -rf {} \; > /dev/null 2>&1
find为查找文件
$BCK_DIR表示要在该目录下面查找
-name表示以文件名进行查找
“*.sql.gz”表示查找通配后缀为.sql.gz的文件
-type f 表示查找普通文件类型 f表示普通文件
-mtime +7 按照文件的更改时间来查找文件,+7表示文件更改时间距现在7天以前;如果是 -mmin +7表示文件更改时间距现在7分钟以前。
-exec rm -rf {} \;
表示执行一段shell命令,exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个\,最后是一个分号
> /dev/null 2>&1
把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面;其中的&表示让该命令在后台执行。
5.
cp -r /usr/tomcat6/webapps/blog/UploadImgs /usr/bak
复制文件夹
6.
0 0 * * * /usr/bakscript/mysqlbak.sh >>/tmp/error.log 2>&1
0 0 * * * /usr/bakscript/imagesbak.sh
0 0 * * * /usr/bakscript/mysqlbak.sh
每天凌晨执行该文件,并将错误信息追加(>>)到error.log文件中