mysql自动备份多个数据库的实现
1.编写mysql自动备份shell脚本,比如在/opt/data/backup/sh路径下创建文件 mysql_backhttp://www.devze.comup.sh
#!/bin/bash #备份目录 BACKUP=/opt/data/backup/mysql DATETIME=$(date +%Y-%m-%d_%H-%M-%S) echo $DATETIME #数据库的地址 HOST=127.0.0.1 #数据库用户名 DB_USER=root #数据库密码 DB_PW=root #备份的数据库名 DATABASE1=db-test DATABASE2=test2 DATABASE3=test3 #创建备份目录 if [ ! -d "${BACKUP}/${DATETIME}" ] then mkdir -p "${BACKUP}/${DATETIME}" fi cd ${BACKUP}/${DATETIMwww.devze.comE} mkdir ${DATABASE} mkdir test2 mkdir test3 #备份数据库 /usr/local/mysql/bin/mysqldump -u${DB_USER} -p${DB_PW} -h ${HOST} ${DATABASE1} > ${BACKUP}/${DATETIME}/${DATABASE1}/$DATETIME.sql /usr/local/mysql/bin/mysqldump -u${DB_USER} -p${DB_PW} -h ${HOST} ${DATABASE2} > ${BACKUP}/${DATETIME}/${DATABASE2} /$DATETIME.sql /usr/local/mysql/bin/mysqldump -u${DB_USER} -p${DB_PW} -h ${HOST} ${DATABASE3} > ${BACKUP}/${DATETIME}/${DATABASE3} /$DATETIME.sql #将文件压缩成 tar.gz cd ${BACKUP} tar -zcvf $DATETIME.tar.gz ${DATETIME}php #删除7天前的的备份文件 find ${BACKUP} -atime +7 -name "*.tar.gz" -exec rm -rf {} \; echo "备份数据库db-test成功" echo "备份数据库test2 成功" echo "备份数据库test3 成功"
2.为文件添加执行权限:
chmod 775 /opt/data/backup/sh/mys编程ql_backup.sh
3.检查shell脚本编写是否有误
这里可分成2步,第1步,执行mysql备份命令:
/usr/local/mysql/bin/mysqldump -u${DB_USERphp} -p${DB_PW} -h ${HOST} ${DATABASE1} > ${BACKUP}/${DATETIME}/${DATABASE1}/$DATETIME.sql
注意将上面的变量替换为真实值,存放目录需真实存在。如果能备份成功,且将数据输出到备份的SQL文件,进入第2步验证,直接执行shell脚本
/opt/data/backup/sh/mysql_backup.sh
如果正常执行,且输出的SQL脚本真实有数据,则证明shell备份脚本通过,否则根据提示的错误信息进行修正。
4.添加到linux定时任务中,输入下面的命令添加一个定时任务:
crontab -e
输入:
50 23 * * 0 /opt/data/backup/sh/mysql_backup.sh
上面的命令表示,每周天晚上23点50分执行上面的mysql备份脚本,更多时间表述请自行查询,需注意的是定时任务如果用root账号添加的,普通账号将无法查看。
到此这篇关于mysql自动备份多个数据库的实现的文章就介绍到这了,更多相关mysql自动备份数据库内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论