• mysql使用mysqldump和crontab定时备份


    1,

    安装crontab

    yum install vixie-cron
    
    yum install crontabs

    说明:
    vixie-cron软件包是cron的主程序;
    crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
    cron 是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

    /sbin/service crond start //启动服务
    /sbin/service crond stop //关闭服务
    /sbin/service crond restart //重启服务
    /sbin/service crond reload //重新载入配置

    查看crontab服务状态:

    service crond status

    手动启动crontab服务:

    service crond start

    查看crontab服务是否已设置为开机启动,执行命令:

    ntsysv

    加入开机自动启动:

    chkconfig --level 35 crond on

     

    2,

    赋予脚本执行权限

    chmod 777 test.sh

    添加定时任务

    crontab -e

    添加这段定时命令

    */5 * * * * /home/test.sh

    说明:

    运行crontab –e 编写一条定时任务 */5 * * * * /home/test.sh 在每5分钟执行一次test.sh脚本

    查看当前所有定时任务

    crontab -l

    删除当前定时任务

     

    每隔12小时备份一次

    1 */12 * * * /usr/local/backup/backupMysql.sh  

    每天凌晨1点删除一个月之前的备份

    1 1 * * * /usr/local/backup/delBackupMysql.sh

     

    备份脚本

    ADDRESS="120.120.120.120"
    PORT="3306"
    USER="root" PASSWORD="数据库密码" DATABASE1="jxt" #DATABASE2=zabbix BACKUP_DIR="/usr/local/backup/mysql" #备份数据库文件的路径 LOGFILE="/usr/local/backup/mysql/data_backup.log" #备份数据库脚本的日志文件 DATE=`date +%Y%m%d-%H%M -d -3minute` #获取当前系统时间-3分钟 DUMPFILE1="$DATE-jxt.sql" #需要备份的数据库名称 #DUMPFILE2=$DATE-zabbix.sql ARCHIVE1="$DUMPFILE1.gz" #备份的数据库压缩后的名称 #ARCHIVE2=$DUMPFILE2-tar.gz #cat /usr/local/backup #!/bin/bash #Shell Command For Backup MySQL Database Everyday Automatically By Crontab #time 2015-5-20 if [ ! -d $BACKUP_DIR ]; #判断备份路径是否存在,若不存在则创建该路径 then mkdir -p "$BACKUP_DIR" fi echo -e " " >> $LOGFILE echo "------------------------------------" >> $LOGFILE echo "BACKUP DATE:$DATE">> $LOGFILE echo "------------------------------------" >> $LOGFILE cd $BACKUP_DIR #跳到备份路径下 /usr/local/mysql/bin/mysqldump -h$ADDRESS -P$PORT -u$USER -p$PASSWORD $DATABASE1 > $DUMPFILE1 #使用mysqldump备份数据库 if [[ $? == 0 ]]; then tar czvf $ARCHIVE1 $DUMPFILE1 >> $LOGFILE 2>&1 #判断是否备份成功,若备份成功,则压缩备份数据库,否则将错误日志写入日志文件中去。 echo "$ARCHIVE1 BACKUP SUCCESSFUL!" >> $LOGFILE rm -f $DUMPFILE1 else echo “$ARCHIVE1 Backup Fail!” >> $LOGFILE fi # /usr/local/mysql/bin/mysqldump -u$USER -p$PASSWORD $DATABASE2 > $DUMPFILE2 # if [[ $? == 0 ]]; then # tar czvf $ARCHIVE2 $DUMPFILE2 >> $LOGFILE 2>&1 # echo "$ARCHIVE2 BACKUP SUCCESSFUL!" >> $LOGFILE # rm -f $DUMPFILE2 # else # echo “$ARCHIVE2 Backup Fail!” >> $LOGFILE # fi

    注意:mysqldump 在备份的时候会锁表,如果在生产环境,会造成业务奔溃。那如何解决呢

    方案一:有主从数据库,binlog主从同步数据后,在从库使用mysqldump 去备份数据

    方案二:加一个参数:--single-transaction,仅对支持事务的表有效,比如InnoDB,对非事务型的表比如MyISAM`则没有效果。

    /usr/local/mysql/bin/mysqldump  --single-transaction -h$ADDRESS -P$PORT -u$USER -p$PASSWORD $DATABASE1 > $DUMPFILE1

    删除脚本

    BACKUPDIR="/usr/local/backup/mysql/"                            #定义备份文件路径 
    KEEPTIME=30                                                           #定义需要删除的文件距离当前的天数 
    DELFILE=`find $BACKUPDIR -type f -mtime +$KEEPTIME -exec ls {} ;`     #找到天数大于KEEPTIME天的文件 
    for delfile in ${DELFILE}                                              #循环删除满足天数大于七天的文件 
    do 
    rm -f $delfile 
    done
  • 相关阅读:
    深入浅出数据库索引原理
    Mysql读写分离原理及主众同步延时如何解决
    数据库连接池实现原理
    MySQL 大表优化方案(长文)
    js-ajax-03
    js-ajax-04
    js-ajax-02
    js-ajax-01
    获取html对象方式
    js-事件总结
  • 原文地址:https://www.cnblogs.com/suruozhong/p/11550664.html
Copyright © 2020-2023  润新知