文章阅读
Linux下mysql数据库批量备份脚本
文章类别: 资料收集  更新日期: 2013-06-16 00:41:57.0  点击次数:3418
一、环境介绍:
最近因公司要求,需要定期将服务器上的mysql数据库备份到本地。因这台服务器主要用于提供WEB服务,有很多JSP+MySQL的网站上放在上面,也就是说有很多的数据库需要批量备份,所以,不可能人工的去一个个的进行备份操作,这样工作量就太大了。由于本人使用的操作系统为Linux(发行版为:Debian 7),所以想到了自己创建一个shell脚本自动完成备份工作。
此脚本的工作原理是先通过命令获取服务器上的所有数据库名称信息,并将其转化为字符串序列,循环每个数据库名称并通过mysqldump命令完成批量备份。并将备份文件存存到本地电脑指定的目录中去。
完整的shell脚本代码如下:
(您可以对其中的数据库连接信息配置段稍加修改,保存到您的Linux系统中,并为文件添加相应的x可执行权限位,运行即可。)
本文为原创内容,转载请注明出处:JDiy官网  -  http://www.jdiy.org/read.jsp?id=y0hbd3tz4v
二、完整的shell脚本代码
#!/bin/sh
#This script is batch backup for mysql:
# @author: folier
# @homepage: http://www.jdiy.org
###以下为相关配置段,请根据您的服务器信息稍作修改########
#mysql数据库服务器的地址:
SQL_host='74.117.56.8'
#mysql数据库的登录用户名:
SQL_uid='root'
#mysql数据库的登录密码:
SQL_pwd='123456'
#备份文件存放的目录(目录结尾不要有'/' 。如果此目录不存在,shell脚本会自动创建它)
BAK_dir='/var/backup/mysql'
###配置信息结束。以下代码执行备份########
DS=$(echo "show databases;" | mysql -u$SQL_uid -p$SQL_pwd -h$SQL_host | sed -e '1,2 d' | awk '{printf "%s ", $0}')
DSTR=$(date +%y-%m-%d)
BAKPATH=$BAK_dir/$DSTR
if [ ! -d $BAKPATH ]; then
mkdir $BAKPATH
fi
for i in $DS
do
   echo -n "backup database: $i"
   mysqldump -u$SQL_uid -p$SQL_pwd -h$SQL_host $i > $BAKPATH/$i.sql
   echo ' ........ ok'
   sleep 5
done
exit 0
三、其它说明
注意,上面的shell脚本代码将备份服务器上的全部的用户数据库。如您只需要备份指定的某些数据库(例如db1, db2, db3),只需将脚本中的:
DS=$(echo "show databases;" | mysql -u$SQL_uid -p$SQL_pwd -h$SQL_host | sed -e '1,2 d' | awk '{printf "%s ", $0}')
替换为:
DS='db1 db2 db3'
即可。
最后,您只需要在linux系统中使用crontab将此脚本添加为每天执行一次的任务,就可以自动批量备份啦(此脚本会按天创建时间截,前一天的备份数据并不会丢失)。以上代码在本人的Debian系统上测试无误。如有不正确之处,还望指正。
本文为原创内容,转载请注明出处:JDiy官网  -  http://www.jdiy.org/read.jsp?id=y0hbd3tz4v
[ 下一篇 配置Tomcat的访问日志格式化输出 ]
鄂ICP备18006629号-1       鄂公网安备 42050302000160号


技术支持QQ:39886616 QQ群:7759217
联系JDiy作者: ziquee java/javascript WEB编程
E-mail:ziquee@abcbcd.com http://189.cn
*尊姓大名:

*电子邮箱:

*QQ号码:

*留言内容:
提交留言
取消
loading...
注:带"*"的为必填项。请如实填写您的E-mail或QQ号码以便我们能与您取得联系。