shell脚本备份mysql数据库实例精讲
时间:2014-08-20 02:56 来源:linux.it.net.cn 作者:it
写了个shell脚本,用于每天凌晨2点30分备份项目中的一个库。
1、先确定软件包和crond服务运行情况:
查看是否安装vixie-crom-4.1-44.EL4软件包
复制代码代码示例:
#rpm -qa |grep vixie-cron
vixie-crom-4.1-44.EL4
查看crond服务的运行状态:
复制代码代码示例:
#service crond status
crond (pid 3065) is running...
2、编写shell脚本:
复制代码代码示例:
#!/bin/sh
USER="root" #DB用户名
PASSWORD="pwd" #DB密码
DATABASE="test" #DB数据库名
WEBMASTER=yangfei_luck@163.com #错误发送邮箱
BACKUP_DIR="/export/home/wwwroot/webapps/testScripting/Data_backup" #备份文件存放目录
LOGFILE="/export/home/wwwroot/webapps/testScripting/Data_backup/data_backup.log" #备份日志文件
DATE=`date +%Y%m%d-%H%M` #当前年月日时分
DUMPFILE=$DATE.sql #当前年月日时分作备份文件名
ARCHIVE=$DATE.sql.tgz #压缩包名
OPTIONS="-u$USER -p$PASSWORD --opt --extended-insert=false --triggers --routines --hex-blob $DATABASE" #备份操作
#判断备份目录是否存在,如果不存在则创建一个
if [ ! -d $BACKUP_DIR ] ;
then
mkdir -p "$BACKUP_DIR"
fi
echo ----------------------------------------- >> $LOGFILE
echo BACKUP DATE: `date +%Y-%m-%d-%H:%M:%S` >> $LOGFILE
echo Backup Process Begin >> $LOGFILE
#更换目录
cd $BACKUP_DIR
#执行备份操作
mysqldump $OPTIONS > $DUMPFILE
#判断备份是否成功
if [[ $? == 0 ]]; then
#创建备份文件压缩包
tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1
echo [$ARCHIVE] Backup Successful! >> $LOGFILE
#删除原备份文件,只留压缩包
rm -f $DUMPFILE
#备份失败,发送错误消息到邮箱(需要mailutils或者类似终端下发送邮件工具的支持)
else
echo “Database Backup Fail!” >> $LOGFILE
#mail -s “Database:$DATABASE Daily Backup Fail” $WEBMASTER
fi
echo Backup Process End >> $LOGFILE
echo “Backup Process Done”
echo ----------------------------------------- >> $LOGFILE
3、配置定时器:
crontab中每一行代表一个任务,格式如下:
minute hour day month dayofweek command
一个备份MySQL数据库的简单Shell脚本
Shell脚本是写不同类型命令的一种脚本,这些命令在这一个文件中就可以执行。(www.jbxue.com 脚本学堂)
也可以逐一敲入命令手动执行。如果要使用shell脚本就必须在一开始把这些命令写到一个文本文件中,以后就可以随意反复运行这些命令了。
这里假定你已知道shell scripting、 mysqldump和crontab。
不明白的同学,看这里:
适用操作系统:任何Linux或UNIX。
主脚本(用于备份mysql数据库):
该Shell脚本可以自动备份数据库。只要复制粘贴本脚本到文本编辑器中,输入数据库用户名、密码以及数据库名即可。我备份数据库使用的是mysqlump 命令。后面会对每行脚本命令进行说明。
1. 分别建立目录“backup”和“oldbackup”
#mkdir /backup
#mkdir /oldbackup
2. 现在使用你喜欢的编辑软件创建并编辑“backup.sh”
这里我用的是 vi
# vi /backup/backup.sh
现在把以下几行命令输入到 backup.sh 文件中:
#!bin/bash
cd /backup
echo “You are In Backup Directory”
mv backup* /oldbackup
echo “Old Databases are Moved to oldbackup folder”
Now=$(date +”%d-%m-%Y--%H:%M:%S”)
File=backup-$Now.sql
mysqldump –u user-name –p ‘password’ database-name > $File
echo “Your Database Backup Successfully Completed”
脚本说明:
在第8行命令中,在mysqldump命令后要输入自己的数据库用户名、密码及数据库名。
执行该脚本,首先会进入 /backup 目录,然后该脚本会把原有的旧数据库备份移动到 /oldbackup 文件夹中,接着根据系统的日期及时间生成一个文件名,在最后 mysqldump 命令会生成一个“.sql”格式的数据库备份文件。
3. 设置 backup.sh 脚本文件的可执行许可
# chmod +x /backup/backup.sh
4、执行脚本
#./backup.sh
脚本运行结束后会得到以下输入。
root@Server1:/download#./backup.sh
You areinDownload Directory
Old Backup DatabaseisMoved to oldbackup folder
database backup successful completed
root@Server1:/download#
注:首次执行该脚本会有一个“no such file”的提示信息,这是由于旧备份文件还不存在。只要再次执行该脚本就没有问题了,这个问题已经不存在了。
5、使用cron制订备份计划
使用Cron可以定时执行该脚本,备份会自动完成。使用 crontab 命令编辑cron 执行的计划任务。
#crontab –e
只要在编辑器上加入下面这一行代码保存即可。
0 13 * * * * /backup/backup.sh
本任务表示的是在每天下午1点钟把数据库备份到指定的文件夹。有关cron任务设置的详细内容可以查阅crontab手册。
(责任编辑:IT)
写了个shell脚本,用于每天凌晨2点30分备份项目中的一个库。
复制代码代码示例:
#rpm -qa |grep vixie-cron
vixie-crom-4.1-44.EL4
查看crond服务的运行状态:
复制代码代码示例:
#service crond status
crond (pid 3065) is running...
2、编写shell脚本:
复制代码代码示例:
#!/bin/sh
#判断备份目录是否存在,如果不存在则创建一个
echo ----------------------------------------- >> $LOGFILE
#更换目录
#执行备份操作
#判断备份是否成功
#创建备份文件压缩包
#删除原备份文件,只留压缩包
#备份失败,发送错误消息到邮箱(需要mailutils或者类似终端下发送邮件工具的支持)
#mail -s “Database:$DATABASE Daily Backup Fail” $WEBMASTER
3、配置定时器: 一个备份MySQL数据库的简单Shell脚本
Shell脚本是写不同类型命令的一种脚本,这些命令在这一个文件中就可以执行。(www.jbxue.com 脚本学堂)
这里假定你已知道shell scripting、 mysqldump和crontab。 适用操作系统:任何Linux或UNIX。 主脚本(用于备份mysql数据库): 该Shell脚本可以自动备份数据库。只要复制粘贴本脚本到文本编辑器中,输入数据库用户名、密码以及数据库名即可。我备份数据库使用的是mysqlump 命令。后面会对每行脚本命令进行说明。
1. 分别建立目录“backup”和“oldbackup”
#mkdir /backup
#mkdir /oldbackup
2. 现在使用你喜欢的编辑软件创建并编辑“backup.sh”
#!bin/bash
cd /backup echo “You are In Backup Directory” mv backup* /oldbackup echo “Old Databases are Moved to oldbackup folder” Now=$(date +”%d-%m-%Y--%H:%M:%S”) File=backup-$Now.sql mysqldump –u user-name –p ‘password’ database-name > $File echo “Your Database Backup Successfully Completed”
脚本说明: 执行该脚本,首先会进入 /backup 目录,然后该脚本会把原有的旧数据库备份移动到 /oldbackup 文件夹中,接着根据系统的日期及时间生成一个文件名,在最后 mysqldump 命令会生成一个“.sql”格式的数据库备份文件。
3. 设置 backup.sh 脚本文件的可执行许可
# chmod +x /backup/backup.sh
4、执行脚本
root@Server1:/download#./backup.sh
You areinDownload Directory Old Backup DatabaseisMoved to oldbackup folder database backup successful completed root@Server1:/download# 注:首次执行该脚本会有一个“no such file”的提示信息,这是由于旧备份文件还不存在。只要再次执行该脚本就没有问题了,这个问题已经不存在了。
5、使用cron制订备份计划 |