zoukankan      html  css  js  c++  java
  • linux下定时备份mysql数据库(全库备份)

    一、环境

    centos7.6

    mysql-5.7.26

    二、步骤

    1、编写备份脚本

    2、编写crontab定时执行脚本

    三、 详细步骤

    1、编写mysql_dump_script.sh备份脚本

    创建备份目录

    #备份目录
    mkdir -p /data/mysql/mysqlbackup #进入 cd /data/mysql/ #创建脚本文件 touch mysql_dump_script.sh 

    使用vi或者vim在mysql_dump_script.sh中添加以下内容:

    以下代码功能就是针对mysql进行备份,配合crontab,实现备份的内容为近一个月(30天)内的每天的mysql数据库记录。

    #!/bin/bash
    
    #保存备份个数,备份30天数据
    number=30
    #备份保存路径
    backup_dir=/data/mysql/mysqlbackup
    #日期
    dd=`date +%Y-%m-%d-%H-%M-%S`
    #备份工具
    tool=mysqldump
    #用户名
    username=root
    #密码
    password=P@ssw0rd_2770
    #将要备份的数据库
    database_name=test
    
    #如果文件夹不存在则创建
    if [ ! -d $backup_dir ]; 
    then     
        mkdir -p $backup_dir; 
    fi
    
    #简单写法  mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
    $tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql
    
    #写创建备份日志
    echo "create $backup_dir/$database_name-$dd.dump" >> $backup_dir/log.txt
    
    #找出需要删除的备份
    delfile=`ls -l -crt  $backup_dir/*.sql | awk '{print $9 }' | head -1`
    
    #判断现在的备份数量是否大于$number
    count=`ls -l -crt  $backup_dir/*.sql | awk '{print $9 }' | wc -l`
    
    if [ $count -gt $number ]
    then
      #删除最早生成的备份,只保留number数量的备份
      rm $delfile
      #写删除文件日志
      echo "delete $delfile" >> $backup_dir/log.txt
    fi

     如上代码主要含义如下:

    1、首先设置各项参数,例如number最多需要备份的数目,备份路径,用户名,密码等。

    2、执行mysqldump命令保存备份文件,并将操作打印至同目录下的log.txt中标记操作日志。

    3、定义需要删除的文件:通过ls命令获取第九列,即文件名列,再通过

    head -1

     实现定义操作时间最晚的那个需要删除的文件。

    4、定义备份数量:通过ls命令加上

    wc -l

     统计以sql结尾的文件的行数。

    5、如果文件超出限制大小,就删除最早创建的sql文件

    2、使用crontab定期执行备份脚本

    创建cron脚本文件,命名为msyql_rollback.cron

    #进入
    cd /data/mysql/ #创建 touch msyql_rollback.cron

     使用vi或者vim在msyql_rollback.cron中添加以下内容:

    #每天凌晨1点执行一次,根据实际情况调整
    0 1 * * * /root/local/mysql_backup_script.sh

    添加定时任务

    #添加定时任务
    crontab msyql_rollback.cron

    查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本

    #查看
    crontab -l

    四、参考

    1、https://www.cnblogs.com/letcafe/p/mysqlautodump.html

    2、MySQLdump常用命令:https://www.cnblogs.com/smail-bao/p/6402265.html (博客园)

    3、利用Shell脚本实现对mysql数据库的备份:https://www.cnblogs.com/mracale/p/7251292.html(博客园)

    4、Linux下的Crontab定时执行任务命令详解:https://www.cnblogs.com/longjshz/p/5779215.html(博客园)

  • 相关阅读:
    iSCSI又称为IPSAN
    文档类型定义DTD
    HDU 2971 Tower
    HDU 1588 Gauss Fibonacci
    URAL 1005 Stone Pile
    URAL 1003 Parity
    URAL 1002 Phone Numbers
    URAL 1007 Code Words
    HDU 3306 Another kind of Fibonacci
    FZU 1683 纪念SlingShot
  • 原文地址:https://www.cnblogs.com/tesila/p/15254119.html
Copyright © 2011-2022 走看看