zoukankan      html  css  js  c++  java
  • 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

     

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

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

     

     

  • 相关阅读:
    设置win 10 软件开机启动
    win10 无法使用内置管理员账户打开应用
    设置 npm 源为淘宝镜像
    git sh.exe 乱码
    mybatis 获取新增数据的主键
    框架 get 请求乱码
    js在浏览器下的区别小结(部分)
    js调试的一点小知识
    git常用命令
    css水平居中(一)
  • 原文地址:https://www.cnblogs.com/toughhou/p/3778777.html
Copyright © 2011-2022 走看看