1  先确保安装了  crontab: 
 

操作步骤
1. 确认crontab是否安装:
执行 crontab 命令如果报 command not found,就表明没有安装
2. 安装 crontab
执行 yum install -y vixie-cron
3. 确认是否安装成功:
执行 crontab -l
4. 看是否设置了开机自动启动
chkconfig --list crond

5. 启动crontab   

service crond start


2 建立 文件夹  可以自行设置




/home/mysql_dump

/home/mysql_dump/data




3  编写脚本

cd /home/mysql_dump

  
   touch mysql_back.sh
   vi mysql_back.sh

 
 内容为:

DB_NAME="数据库名"
DB_USER="账号"
DB_PASS="密码"
BIN_DIR="/home/mysql5.6.27/bin"
BCK_DIR="/home/mysql_dump/data"
DATE=`date "+%Y-%m-%d"`
mkdir -p $BCK_DIR
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS  $DB_NAME > $BCK_DIR/$DB_NAME.dump_$DATE.sql






4 设置 定时任务




root用户登录

crontab -e

输入

59 23 * * *  /home/mysql_dump/mysql_back.sh  


说明:

前面5列 分别代表 分钟/小时/日/月/周   *表示所有

 例子是  每天 23:59执行


5 如果失败呢?

  1  手工执行 /home/mysql_dump/mysql_back.sh  检查错误
  2 如果1成功,则说明脚本没问题  
     可以crontab -e 把时间设置为下一分钟 
      然后再打开一个终端 查看 日志  tail -f /var/log/cron


   3 注意!mysql_back.sh的所有者必须是root否则 出错!



-------------------------------上面完成了,每天 23:59自动 备份数据库的功能--------------------------------------------

 -----------如果 服务器奔溃了,数据就丢掉了, 我的天,为了安全起见,可以单独搞一个专用的备份服务器,所有业务系统的数据库都存一份到这里备份------------


自动将不同服务器的 自动备份数据库文件  放到统一的服务器上,防止单个服务器奔溃,导致数据丢失


1   备份服务器  a (192.168.0.1),业务系统服务器 b(192.168.0.2)  和c (192.168.0.3)


2  在a服务器 建立2个文件夹  mkdir /home/zms/backupdb/a   mkdir /home/zms/backupdb/b




3  分别登录 b和c 生成 授权文件,以便 scp传输文件的时候不用输入密码
     ssh登录到b :   ssh-keygen -t rsa 回车,提示存放的位置,一直回车
       [root@iZbp11470vqghi5nzu90vmZ ~]# ssh-keygen -t rsa
 
     ssh登录到a: cd ~
                 mkdir .ssh (如果存在则不需要建立)


     在b上操作: scp -P22 /root/.ssh/id_rsa.pub root@192.168.0.1:~/.ssh/authorized_keys
                   输入密码复制文件
     
     测试,重启服务器a后发现,在b上再传输任何一个文件到 b ,已经不提示要密码了 
        scp -P22  测试文件.sql root@192.168.0.1:/home/zms/backupdb/a


   
   接着搞第2台服务器 c
     ssh登录到c :   ssh-keygen -t rsa 回车,提示存放的位置,一直回车
     由于备份服务器已经存在authorized_keys文件了,所以这里需要使用cat 
      scp -P22 /root/.ssh/id_rsa.pub root@192.168.0.1:~/.ssh/c.pub
      输入密码 复制
       cat ~/.ssh/c.pub >> ~/.ssh/authorized_keys


    重启服务器a ,这个时候从c复制文件到A 也 不需要密码了




 4 分别修改 b和c 上的 自动计划任务


     vi mysql_back.sh
     在最后面一行加入 自动搬迁 文件的命令
   scp -P1981 $BCK_DIR/$DB_NAME.dump_$DATE.sql  root@192.168.0.1:/home/zms/backupdb/gc


5 测试

     mysql_back.sh  //可以在 服务器a 看到 刚才创建的sql文件了。  Ok