crontab+shell脚本实现定时备份mysql数据库

Posted 怀念感觉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了crontab+shell脚本实现定时备份mysql数据库相关的知识,希望对你有一定的参考价值。

1.创建shell脚本

bash
  1. cd /usr/local/


2.建立shell脚本目录

bash
  1. mkdir shell

  2. cd shell


3.建立shell脚本

        通过mysqldump命令备份数据库数据到指定的目录

bash
  1. vim mysqldump.sh

bash
  1. #! /bin/bash

  2. echo "mysqldump start ..."

  3. mysqldump -uroot test > /usr/local/nginx/html/mysqldump/DB_`date +%Y_%m_%d_%H_%M_%s`.sql

  4. echo "mysqldump success ok !"


        mysqldump(mysql备份命令) -uroot(指定用户名) -p123456(密码) test(指定数据库) > /usr/local/nginx/html/mysqldump/DB_`date +%Y_%m_%d_%H_%M_%s`.sql(指定数据库备份到的[网战目录]路径和带日期的文件名)

4.保存文件退出,运行脚本

bash
  1. chmod +x mysqldump.sh #给脚本执行权限

bash
  1. ./mysqldump.sh


        *运行脚本可能会报警告的错误,因为在脚本中使用了明文密码,但不影响脚本的执行。
        mysqldump: [Warning] Using a password on the command line interface can be insecure.
        解决方法:http://zixuephp.net/article-292.html

5.执行定时命令,运行脚本

bash
  1. crontab -e

bash
  1. */2 * * * /usr/local/shell/mysqldump.sh  #每天每两小时运行一次备份shell脚本文件一次

        保存脚本,查看定时命令的运行信息

bash
  1. crontab -l

 之前我们通过shell脚本定期备份了数据库的数据文件,保证了数据库数据的安全,当数据库文件备份的文件会越来越多的时候,会占用磁盘很多空间,同时也没有必要。那么就得用到自动删除7天前或N天前的文件了。

    mysql定时自动备份数据库文件方法:http://zixuephp.net/article-291.html

删除多久之前的数据库文件shell脚本代码,通过find命令rm命令实现:

bash
  1. #! /bin/bash

  2. find /usr/local/nginx/html/mysqldump  -mtime +7  -name "*.sql" -exec rm -rf {} \;

find命令查找对应文件夹得所有文件,并通过-mtime +7匹配7天前的文件所有.sql后缀的文件,并把结果交给exec执行rm删除所有匹配的文件。


以上是关于crontab+shell脚本实现定时备份mysql数据库的主要内容,如果未能解决你的问题,请参考以下文章

Linux 定时执行shell脚本命令之crontab

linux 定时执行shell脚本 定时任务

Crontab 让linux定时执行shell脚本

shell脚本之定时备份文件

Linux Crontab Shell脚本实现秒级定时任务

Crontab定时备份数据库