• Linux计划任务定时备份数据


    最近有项目需要定期备份mysql数据的需求,通过linux系统的crontab计划任务实现了一个简单demo,通过mysqldump命令对mysql数据进行备份。

    首先新建一个脚本文件:mysqlbak.sh(我这里的目录是 /data/mysqlbak/ )

    #!/bin/bash
    
    #备份文件存放路径
    backupdir=/data/mysqlbak
    time=` date +%Y%m%d%H%M `
    
    echo -e `date '+%F %T %A'` " Crontab Start 
    " >> $backupdir/crontab_mysqlbak_log_`date +'%Y'`.log
    
    #备份所有数据库并打包
    mysqldump  -h192.168.2.150 -uxxh -p"xxh密码"  --all-databases --single-transaction --default-character-set=utf8 |gzip > $backupdir/mysql$time.sql.gz
    #删除7天之外的备份文件
    find $backupdir -name "mysql*.sql.gz" -type f -mtime +7 -exec rm {} ; > /dev/null 2>&1
    
    echo -e `date '+%F %T %A'` " Crontab End 
    " >> $backupdir/crontab_mysqlbak_log_`date +'%Y'`.log

    保存成 mysqlbak.sh,然后执行  sudo chmod +x mysqlbak.sh 给脚本添加可执行权限。

    然后把这个脚本添加到任务计划中:

    sudo crontab -u root -e 或者  sudo crontab -e 即可进入任务计划。

    #计划任务每天3:00执行脚本
    00 03 * * * /bin/bash /data/mysqlbak/mysqlbak.sh

    到这里就完成了。然后过了几天再来查看效果如下:

     通过命令 tail -f crontab_log_2020.log 查看输出的日志:

     

     这个案例实现了基本功能,如果要其他功能请自行修改。 

    【mysql备份全部全部数据库示例】

    1,备份数据库,排除mysql本身的库以及被锁定的表。

    2,备份数据库,排除mysql本身的库以及被锁定的表,同时压缩备份。

    #备份数据库,排除mysql本身的库以及被锁定的表。
    mysql -h10.90.2.189 -u用户名 -p"密码" -P3306 -e 'show databases;'|grep -Ev "Database|information_schema|mysql|performance_schema|testxxx" |xargs mysqldump -h10.90.2.189 -u用户名 -p"密码" -P3306 --databases > 333.sql
    
    #备份数据库,排除mysql本身的库以及被锁定的表。同时压缩备份。
    mysql -h10.90.2.189 -u用户名 -p"密码" -P3306 -e 'show databases;'|grep -Ev "Database|information_schema|mysql|performance_schema|testxxx" |xargs mysqldump -h10.90.2.189 -u用户名 -p"密码" -P3306 --databases --single-transaction --default-character-set=utf8 |gzip > 344.sql.gz

    #备份数据库,排除mysql本身的库以及被锁定的表。
    mysql -h10.90.2.189 -u用户名 -p"密码" -P3306 -e 'show databases;'|grep -Ev "Database|information_schema|mysql|performance_schema|testxxx" |xargs mysqldump -h10.90.2.189 -u用户名 -p"密码" -P3306 --databases > 333.sql

    #备份数据库,排除mysql本身的库以及被锁定的表。同时压缩备份。
    mysql -h10.90.2.189 -u用户名 -p"密码" -P3306 -e 'show databases;'|grep -Ev "Database|information_schema|mysql|performance_schema|testxxx" |xargs mysqldump -h10.90.2.189 -u用户名 -p"密码" -P3306 --databases --single-transaction --default-character-set=utf8 |gzip > 344.sql.gz

    【mysql恢复备份】

    下面示例常见的根据备份恢复mysql数据的方法:

    解压:
    gzip -d mysql2020703.sql.gz

    非压缩备份文件恢复:
    mysql -uxxh -p < mysql2020703.sql

    从压缩文件直接恢复:
    gzip < mysql22020703.sql.gz | mysql -h 192.168.10.125 -P3306 -u xxh -p"mysql密码"

    【完】

    【shell脚本按当前日期输出日志】https://www.cnblogs.com/xiongzaiqiren/p/11413242.html

    【Linux计划任务,定时清空日志】https://www.cnblogs.com/xiongzaiqiren/p/11190371.html

  • 相关阅读:
    HDU 1505 & POJ 1964 City Game (递推+扫描法)
    web页面内容优化管理与性能技巧
    POJ2406简单KMP
    poj2418map或者字典树
    poj2418map或者字典树
    POJ2296二分2sat
    POJ2296二分2sat
    poj2186强联通(牛仰慕)
    poj2186强联通(牛仰慕)
    poj2175费用流消圈算法
  • 原文地址:https://www.cnblogs.com/xiongzaiqiren/p/13600507.html
Copyright © 2020-2023  润新知