zoukankan      html  css  js  c++  java
  • CentOS6.5 上crontab每天自动备份mysql数据库

    步骤:

    1. sudo vi /etc/crontab  #编辑crontab任务

    2.输入01 12 * * * root /usr/local/mysql/backup/backup.sh >> /usr/local/mysql/backup/error.log 2>&1  #表示每天12点01分以root用户执行/usr/local/mysql/backup/backup.sh备份脚本,错误日志输出到/usr/local/mysql/backup/error.log,方便查找问题

    3./etc/crontab 内容如下:

    !/bin/sh
    source /etc/profile
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    HOME=/

    # For details see man 4 crontabs


    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # |  |  |  |  |
    # *  *  *  *  * user-name command to be executed
    01 12 * * * root /usr/local/mysql/backup/backup.sh >> /usr/local/mysql/backup/error.log 2>&1

    4.sudo /usr/local/mysql/backup/backup.sh   #编辑脚本内容

    5.在脚本中输入以下内容

    #!/bin/sh
    time="$(date +"%Y%m%d%H%M")"  
    sudo /usr/local/mysql/bin/mysqldump 数据库名 | gzip > /usr/local/mysql/backup/adshare_$time.sql.gz   #备份并压缩文件
    find /usr/local/mysql/backup/ -name "adshare_*.sql.gz" -type f -mtime +7 -exec rm {} ; > /dev/null 2>&1  #删除7天前的备份文件

    #注:这里不用sudo /usr/local/mysql/bin/mysqldump -u 用户名 -p密码 数据库名 | gzip 这种形式,不然会报Warning: Using a password on the command line interface can be insecure. 这里我们将数据库用户名和密码保存在数据的conf配置文件中,例如我的配置文件是/etc/my.cnf,在my.cnf中加入

    [mysqldump]

    user=用户名

    password=密码

    6.sudo chmod 777 backup      #给backup文件夹授权

    sudo chmod 777 backup.sh    #给backup.sh 文件授权

    7.sudo /etc/rc.d/init.d/crond start 启动脚本,如果脚本已经启动则用sudo /etc/rc.d/init.d/crond restart 重启脚本

    遇到的问题:

    备份脚本手动执行没有任何问题,但是放在crontab定时任务中就出现备份的脚本文件为空,查资料后发现有的人说是因为mysqldump的路径写的是相对路径,改成绝对路径即可,但是我的路径写的是绝对路径,后面查看error.log日志发现报sudo: sorry, you must have a tty to run sudo 错误。执行 sudo vi /etc/sudoers 将Defaults    requiretty 修改为Defaults:nobody !requiretty,表示仅 nobody 用户不需要控制终端。按esc输入::wq!强制保存,这样文件就能正常备份了。

    生命不止,奋斗不息
  • 相关阅读:
    jmeter(46) redis
    jmeter(45) tcp/ip协议
    Codeforces Round #538 (Div. 2)D(区间DP,思维)
    Codeforces Global Round 1D(DP,思维)
    Educational Codeforces Round 57D(DP,思维)
    UPC11073(DP,思维)
    Yahoo Progamming Contest 2019D(DP,思维)
    Atcoder Beginner Contest 118D(DP,完全背包,贪心)
    Xuzhou Winter Camp 1C(模拟)
    Educational Codeforces Round 57 (Rated for Div. 2)D(动态规划)
  • 原文地址:https://www.cnblogs.com/shione/p/7355594.html
Copyright © 2011-2022 走看看