Linux下Mysql数据库备份

今天一同事的电脑无缘无故坏了,找了IT部门检测说是硬盘坏了,数据无法恢复。好悲剧。自己博客也写了好久不容易,要是突然间数据丢了那怎么办!于是写了个数据库自动备份脚本,并创建任务计划,实现每天22:30点自动备份远程数据库功能。

1、创建备份脚本
[root@toughhou www]# cat wwwbak.sh

#!/bin/bash
server="toughhou.gotoftp3.com"
user="mysql_user"
password="mysql_pwd"
bakdir="/home/tough/www/remotebak"
date=$(date +%Y%m%d)

#构造log文件名,$0-获取执行的shell文件名(wwwbak.sh),最后log文件名格式为:20131031_wwwbak.log
log="/home/tough/www/"$date"_"`echo "$0" | rev | cut -c 4- | rev`".log"

#如果log文件不存在就创建
if [ ! -f $log ]
then
   touch $log
fi

#使用mysql前需判断mysql服务是否已经启动,如果没有的话则启动mysql服务
netstat -altn | grep 3306
if [ $? -ne 0 ]
then
   service mysqld restart >> $log
fi

#登陆mysql,取得houxiaolongr下的所有数据库名称
dbs=$(echo "show databases;" | mysql -u$user -p$password -h$server)

#如果备份目录不存在,则新建
if [ ! -d $bakdir ]; then
   mkdir -p $bakdir
fi

cd $bakdir

for db in ${dbs}
do

#information_schema是系统自带的数据库,Database是"show databases;"命令输出的一个标题而已,所以此处过滤掉它们
   if [ $db != 'information_schema' -a $db != 'Database' ]; then
      bakfile=$date"_"$db".sql"

#用mysqldump命令把数据库备份到文件
      mysqldump -u$user -p$password -h$server $db > $bakfile
  fi
done

#备份完成后把相关信息以邮件形式发送
mail -s "$0 bakup completed <$date>" "toughhou@126.com" < $log

 

2、把备份脚本加入任务调度计划
#创建任务
[root@toughhou www]# crontab -e
30 22 * * * (sh /home/tough/www/wwwbak.sh > /home/tough/www/crontab.log)

#重启crond服务使新任务生效
[root@toughhou www]# service crond restart

 

关于邮件发送部分,可参考:

关于任务调度计划部分,可参考:

 

 

原文地址:https://www.cnblogs.com/toughhou/p/3778777.html