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点定时执行: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值