linux定时执行mysql脚本效率_linux定时备份mysql数据库脚本

linux定时备份mysql数据库脚本

#!/bin/bash

#数据库服务器地址

DBHOST=localhost

#数据库登录名

USERNAME=root

#数据库密码

PASSWORD=

#需要备份的数据库 或 输入类似 db1 db2 的列表清单

DBNAMES=”all”

#备份MYSQL时生成CREATE数据库语句

CREATE_DATABASE=”yes”

#备份的目录

BACKUPDIR=”/tmp/mysqlbackup”

#发生到邮件的地址

MAILADDR=”test@example.com”

#邮件最大附件尺寸2M

MAILMAXATTSIZE=”2000000″

#当前备份日期和时间

DATE=`date +%Y-%m-%d_%H_%M`

OPT=”–quote-names –opt”

#检查备份路径是否存在,不存在则建立

if [ ! -e “${BACKUPDIR}” ]; then

mkdir -p “${BACKUPDIR}”

fi

#删除备份路径下的所有文件

rm -fv ${BACKUPDIR}/*

#检查是否需要生成CREATE数据库语句

if [ “${CREATE_DATABASE}” = “yes” ]; then

OPT=”${OPT} –databases”

else

OPT=”${OPT} –no-create-db”

fi

#检查是否是备份所有数据库

if [ “${DBNAMES}” = “all” ]; then

DBNAMES=”–all-databases”

fi

BACKUPFILE=${DATE}.sql.gz

cd ${BACKUPDIR}

#备份数据库

`which mysqldump` –user=${USERNAME} –password=${PASSWORD} –host=${DBHOST} ${OPT} ${DBNAMES} |gzip > “${BACKUPFILE}”

#获取备份文件的尺寸

BACKFILESIZE=`du -b ${BACKUPFILE}|sed -e “s/\t.*$//”`

#检查是否需要分割

if [ ${BACKFILESIZE} -ge ${MAILMAXATTSIZE} ]; then

#分割数据库,合并使用 cat ${BACKUPFILE}.* > ${BACKUPFILE}

`which split` -b ${MAILMAXATTSIZE} ${BACKUPFILE} ${BACKUPFILE}.

for BFILE in ${BACKUPFILE}.*

do

echo “Backup Databases: ${DBNAMES}; Use cat ${BACKUPFILE}.* > ${BACKUPFILE}” | mutt ${MAILADDR} -s “MySQL Backup SQL Files for ${HOST} – ${DATE}” -a “${BFILE}”

done

else

echo “Backup Databases: ${DBNAMES}” | mutt ${MAILADDR} -s “MySQL Backup SQL Files for ${HOST} – ${DATE}” -a “${BACKUPFILE}”

fi

注:上述脚本需要配合mutt 才可以实现自动发送备份文件到邮箱

把上面这个脚本存放位置:/home/mysql_backup.sh (当然,也可以放在其他位置),再赋于执行的权限,通过下面命令:

sudo chmod +x /home/mysql_backup.sh

完成这步,我们就来执行一下这段脚本,看能不能备份mysql数据库。

在命令行输入./mysql_backup.sh,就可以看到备份好的数据库文件了

2.完成上面这步,就可以备份mysql数据库了,接下来,我们再通过crontab定时执行这段脚本。

使用crontab -e命令,这个命令的使用比较简单。在命令行输入中,直接输入 crontab -e

就会打开一个编辑窗口,最后一行会有内容格式的提示:

# m h dom mon dow command

具体意义表示:分钟 小时 日期 月份 星期 命令,在某月(mon)的某天(dom)或者星期几(dow)的几点(h,24小时制)几分(m)执行某个命令(command),*表示任意时间。例如:0 3 * * * /home/mysql_backup.sh就是:每天早上3点,执行mysql_backup.sh脚本。

我们只要在里面添加一行就行了,内容如下:

# 备份mysql数据库 每天早上3点整执行

0 3 * * * /home/mysql_backup.sh

这样,每天早上3点,就会自动备份mysql数据库了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值