• 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

     

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

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

     

     

  • 相关阅读:
    UML之对象图
    android5.0(Lollipop) BLE Peripheral牛刀小试
    自己定义msi安装包的运行过程
    高速排序
    字符串函数---strcat()与strncat具体解释及实现
    杭电(hdu)1181 变形课
    电脑突然死机,编译报错dll缺少依赖项
    谈谈java垃圾回收机制
    swift(2)元祖(Tuple)
    IOS小工具以及精彩的博客
  • 原文地址:https://www.cnblogs.com/toughhou/p/3778777.html
Copyright © 2020-2023  润新知