mysql数据库异地备份Shell脚本

公司使用的是Mysql数据库,之前数据库备份一直采用bacula网络备份软件。前一段时间出现了一些问题,所以一直想写一个Shell脚本实现对Mysql的异地备份。今天抽出了点儿时间写了一个Mysql数据库的异地完整备份,赶紧拿出来分享一下,希望对从事运维工作的朋友有所帮助。

1.准备一台FTP备份服务器

如果公司有存储,直接可以将MYSQL数据库备份到存储上。但有些企业没有存储,所以只能通过FTP方式将MYSQL数据库通过FTP备份到FTP备份服务器上。我此次写的SHELL脚本主要针对企业没有存储的用户,通过FTP服务器实现MYSQL数据库备份,首先安装和配置ftp服务器。

##安装vsftpd软件包
yum -y install  vsftpd db4 db4-utils
##创建vsftpd 用户
useradd -s /sbin/nologin -d /opt/data  mysqlbak   //创建备份用户并指定用户家目录
passwd mysqlbak                                   //设置密码
##配置管理vsftpd
vim /etc/vsftpd/vsftpd.conf
开启如下选项
local_enable=YES                                  //允许本地用户登入
write_enable=YES                                  //允许本地用户写
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES                             //所有的本地用户限制在自己的家目录
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO                                 //只有/etc/vsftpd/user_list文件下用户可以登入ftp服务器
guest_enable=YES                                 //开启虚拟用户
guest_username=mysqlbak                          //虚拟用户对应本地用户
tcp_wrappers=YES
virtual_use_local_privs=YES
##创建虚拟用户文件
touch /etc/vsftpd/vuser.txt
echo "webbak" > /etc/vsftpd/vuser.txt
echo "webbak" >> /etc/vsftpd/vuser.txt
##添加允许登入ftp服务器用户到/etc/vsftpd/user_list文件
echo "mysqlbak" >> /etc/vsftpd/user_list
##最后启动vsftpd服务
service vsftpd start

2.创建MYSQL备份脚本

根据需求,Mysql数据库备份数据在数据库本地保存10天,在备份服务器保存20天。具体脚本如下:

#!/bin/bash
#################################
#       Athor:DAVID             #
#       Date:15/5/2013          #
#       About:mysql_bakup       #
#################################
USER=mysql                      //备份数据库实用的用户名
PASSWD=mysql                    //备份数据库实用的密码
DATE=`date +%Y-%m-%d`           //当前时间
OLDDATE=`date +%Y-%m-%d -d '-10 days'` //本地备份保留时间
FTPOLDDATE=`date +%Y-%m-%d -d '-20 days'` //备份服务器备份保留时间
MYSQLDUMP=/usr/local/mysql/bin/mysqldump //mysql备份执行命令文件路径
SOCKET=/tmp/mysql.sock                   //进程文件存放目录
BACKDIR=/opt/data/db                     //本地备份目录
FTPHOST=132.96.77.123                    //FTP主机
FTPUSER=webbak                           //用户名
FTPPASS=webbak                           //密码
[ -d ${BACKDIR} ] || mkdir -p ${BACKDIR}    //判断备份目录是否存在,如果不存在则创建
[ -d ${BACKDIR}/${DATE} ] || mkdir ${BACKDIR}/${DATE}  //判断当前时间目录是否存在,如果不存在则创建
[ ! -d ${BACKDIR}/${OLDDATE} ] || rm -rf ${BACKDIR}/${OLDDATE}  //判断10天前旧目录是否存在,存在则删除
for DBNAME in mysql cms manager    //要进行备份的数据库名称
do
${MYSQLDUMP} -S ${SOCKET} -u ${USER} -p${PASSWD} --opt ${DBNAME} | gzip > ${BACKDIR}/${DATE}/${DBNAME}-backup-${DATE}.sql.gz  //进行备份
echo "${DBNAME} has been backup successful."
sleep 5
done
cd ${BACKDIR}/${DATE}
ftp -i -n -v <<EOF            //将备份数据数据备份到FTP备份服务器
open ${FTPHOST}
user ${FTPUSER} ${FTPPASS}
bin
cd ${FTPOLDDATE}
mdelete *
cd ..
rmdir ${FTPOLDDATE}
mkdir ${DATE}
cd ${DATE}
mput *
bye
EOF

 

3.执行代码

 

./mysql_bak.sh > mysqlbak.log     

 

执行完成之后,登入到备份服务器查看是否已经有备份的数据,如果已经产生备份压缩文件,说明备份成功。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值