Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > mysql自动备份数据库

mysql自动备份多个数据库的实现

作者:moxiaoran5753

本文主要介绍了mysql自动备份多个数据库的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.编写mysql自动备份shell脚本,比如在/opt/data/backup/sh路径下创建文件 mysql_backup.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}/${DATETIME}
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}
#删除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/mysql_backup.sh

3.检查shell脚本编写是否有误

这里可分成2步,第1步,执行mysql备份命令:

/usr/local/mysql/bin/mysqldump -u${DB_USER} -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自动备份数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文