mysql 自动备份到nas_FreeBSD中MySQL数据库备份到NAS服务器的shell脚本

将所有mysql数据库备份到nas服务器,代码:

复制代码 代码示例:

#!/bin/sh

# 此shell脚本,备份所有的MySQL数据库到NAS服务器

# 请务必安装有 mount_smbfs

# 需要设置用户名与密码等信息

# Tested on FreeBSD 6.x and 7.x - 32 bit and 64 bit systems.

# May work on OpenBSD / NetBSD.

# -----------------------------------

### SETUP BIN PATHS ###

MYSQLADMIN=/usr/local/bin/mysqladmin

MYSQL=/usr/local/bin/mysql

LOGGER=/usr/bin/logger

MYSQLDUMP=/usr/local/bin/mysqldump

MKDIR=/bin/mkdir

CP=/bin/cp

GZIP=/usr/bin/gzip

CUT=/usr/bin/cut

AWK=/usr/bin/awk

MOUNT=/sbin/mount

GREP=/usr/bin/grep

UMOUNT=/sbin/umount

MSMBFS=/usr/sbin/mount_smbfs

HOST=/usr/bin/host

TAIL=/usr/bin/tail

SSH=/usr/bin/ssh

SCP=/usr/bin/scp

HOSTNAME=/bin/hostname

### SETUP MYSQL LOGIN ###

MUSER=root

MPASS='PASSWORD'

MHOST="127.0.0.1"

### SETUP NAS LOGIN ###

NASUSER=vivek

NASPASSWORD=myPassword

NASSERVER=nas05.vip.nixcraft.com

NASMNT=/nas05

NASSHARE=$NASUSER

NASPASSWDFILE=$HOME/.nsmbrc

#GET NAS IP

NASIP=$($HOST $NASSERVER  | $TAIL -1 | $AWK '{ print $4}')

# NAS BACKUP PATH

MBAKPATH=${NASMNT}/$(hostname -s)/mysql

NOW=$(date +"%d-%m-%Y")

TIME_FORMAT='%H_%M_%S%P'

mount_nas(){

[ ! -d $NASMNT ] && $MKDIR -p $NASMNT

$MOUNT | $GREP $NASMNT >/dev/null

if [ $? -ne 0 ]

then

echo "[$NASIP:$NASUSER]"  >$NASPASSWDFILE

echo "password=$NASPASSWORD" >>$NASPASSWDFILE

$MSMBFS -N -I $NASSERVER //$NASUSER@$NASIP/$NASSHARE $NASMNT

fi

}

umount_nas(){

$MOUNT | $GREP $NASMNT >/dev/null

[ $? -eq 0 ] && $UMOUNT $NASMNT

}

backup_mysql(){

$LOGGER "$(basename $0) mysql: Started at $(date)"

local DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"

local db="";

[ ! -d $MBAKPATH/$NOW ] && $MKDIR -p $MBAKPATH/$NOW

for db in $DBS

do

local tTime=$(date +"${TIME_FORMAT}")

local FILE="${MBAKPATH}/$NOW/${db}.${tTime}.gz"

$MYSQLDUMP -u $MUSER -h $MHOST -p"$MPASS" $db | $GZIP -9 > $FILE

#mysql_file_hook $FILE

done

$LOGGER "$(basename $0) mysql: Ended at $(date)"

}

# process each sql database file and backup to another server via ssh

# must have ssh keys

mysql_file_hook(){

local f="$1"

local d=/nas/mysqlbackup/$(hostname -s)/$NOW

$SSH someuser@www.jquerycn.cn mkdir -p $d

$SCP $f someuser@www.jquerycn.cn:$d

}

case "$1" in

mysql)

mount_nas

backup_mysql

umount_nas

;;

mount)

mount_nas;;

umount)

umount_nas;;

*)

echo "Usage: $0 {mysql|mount|umount}"

esac

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值