开源中文网

您的位置: 首页 > 数据库应用 > MySQL > 正文

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

来源: 网络整理  作者: 佚名

下面我们来看一篇关于shell脚本+crontab实现MySQL数据自动备份压缩的例子,希望文章能够帮助到各位朋友,具体如下。
当数据库中数据越来越多的时候,数据的备份是何等的重要,下面我们就来用 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

Tags:脚本 备份 数据
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明