一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

shell脚本+crontab实现MySQL数据自动备份压缩

时间:2016-09-18 编辑:简简单单 来源:一聚教程网

数据库中数据越来越多的时候,数据的备份是何等的重要,下面我们就来用 shell脚本 + crontab定时任务来实现MySQL的数据备份(支持多数据库),关于shell和crontab的用法这里不再做过多的解释,还不太会使用的同学可以查阅相关资料进行学习。


#!/bin/bash
      
# 要备份的数据库名,多个数据库用空格分开 例如 (database1 database2 database2)
databases=(mydatebase)
      
# 备份文件要保存的目录
basepath='/home/backup_mysql'
      
if [ ! -d "$basepath" ]; then
  mkdir -p "$basepath"
fi
      
# 循环databases数组
for db in ${databases[*]}
  do
    # 备份数据库生成SQL文件
    /bin/nice -n 19 /usr/bin/mysqldump -uroot --default-character-set=utf8  -p123456 --database $db > $basepath$db-$(date +%Y%m%d).sql
      
    # 将生成的SQL文件压缩
    /bin/nice -n 19 tar zPcf $basepath$db-$(date +%Y%m%d).sql.tar.gz $basepath$db-$(date +%Y%m%d).sql
      
    # 删除7天之前的备份数据
    find $basepath -mtime +7 -name "*.sql.tar.gz" -exec rm -rf {} \;
  done
      
  # 删除生成的SQL文件
rm -rf $basepath/*.sql
如果想支持远程服务器备份,可以将第17行当中的 mysqldump 参数改成  -p123456 后面加上 -h 192.168.1.123 远程ip 。

shell 脚本写完以后,保存在指定位置,例如放在/home/backup_mysql/back_mysql.sh,我们现在开始让它定时执行,这时候我们可以用Linux当中的 crontab, 来实现每晚11点定时执行:

1
0 23 * * * sh /home/backup_mysql/back_mysql.sh
备份备份效果如下,自动删除7天以前的备份,只保留7天内的数据,好处是可以节省磁盘空间:


-rw-r--r-- 1 root root 161994773 7月  16 03:40 mydatebase-20160716.sql.tar.gz

-rw-r--r-- 1 root root 162069976 7月  17 03:40 mydatebase-20160717.sql.tar.gz

-rw-r--r-- 1 root root 162137600 7月  18 03:40 mydatebase-20160718.sql.tar.gz

-rw-r--r-- 1 root root 164006629 7月  19 03:41 mydatebase-20160719.sql.tar.gz

-rw-r--r-- 1 root root 164911525 7月  20 03:41 mydatebase-20160720.sql.tar.gz

-rw-r--r-- 1 root root 166129583 7月  21 03:41 mydatebase-20160721.sql.tar.gz

-rw-r--r-- 1 root root 167313026 7月  22 03:42 mydatebase-20160722.sql.tar.gz

热门栏目