MySQL服务器自动数据备份脚本

最近刚接手了一个内网环境的项目,数据库为MySQL单机系统,甲方提出定时备份数据库的需求。现整理下步骤。这里主要涉及两个技术点:一个是linux的计划命令工具crontab用来定时执行触发备份的脚本-完成定时的功能部分;另一个是MySQL的mysqldump工具-用来完成备份的功能部分。这两个工具如果没有安装的话需要提前处理一下。

1 crontab命令,这里主要涉及两个命令 

crontab -l  // 用来查看当前已经配置的定时任务
crontab -e  // 用来编辑当前的定时任务信息

其中crontab -e 编辑的信息分为两部分:cron表达式+需要执行的命令

 其中第二行的功能就是每天的1小时10分的时候去执行echo命令,将“test crontab cmd”保存到test.txt文件中。这里只是按时去执行这条命令,至于是命令是否合法是否否成功他是不管的。

2 mysqldump 命令,它自带的参数比较多,通过组合可以实现导出指定ip,指定数据库,指定表甚至是表中符合一些查询条件的内容;下面是导出数据库daname下表tablename的内容

mysqldump -username -password --databases dbname --tables tablename >/tmp/db.sql

3 完成脚本完整内容

有了以上两个工具,基本就可以实现自动备份的功能了,剩下的就是补充一些语法和额外的校验等功能(比如存储空间是否充足,只保留最近30天的备份数据等)

完整内容如下:

3.1 定时任务,每天凌晨4点10分执行 home下面的mysql_dump_timer.sh脚本

10 4 * * * bash /home/mysqldump/mysql_dump_timer.sh

3.2 完成mysql_dump_timer.sh脚本编写

#!/bin/bash
#数据库定时保存脚本
#1 校验磁盘空间是否充足
#2 执行备份操作
#3 验证备份数量是否超出设置数,移除最早的文件
#保存30天备份数据
backup_count=30
#备份保存路径
backup_dir=/home/mysqldump
#日期
dateFormat=`date +%Y-%m-%d-%H-%M-%S`
#备份工具
backup_tool=mysqldump
#用户名
username=rusername
#密码
password=rpassword
#数据库名称
database_name=real_database_name
# 表名称
table_name=channel
# 服务器磁盘空间限制
ram_limit=499

#校验空间是否充足
current_ram=`df -m |grep home |awk '{print $4}'|head -1 `
echo "current_ram = $current_ram "
if [ $ram_limit -gt $current_ram ]
then
	echo "current_ram=$current_ram is too lower to backup" >> $backup_dir/log.txt
	exit 1
fi

# 备份目录创建
if [ ! -d $backup_dir ];
then
	mkdir -p $backup_dir;
fi

#执行备份操作
$backup_tool -u $username -p$password $database_name $table_name  |gzip  > $backup_dir/$database_name-$dateFormat.sql.gz

echo "create $backup_dir/$database_name-$dateFormat.sql.dupm" >> $backup_dir/log.txt

#校验当前备份文件的数量,是否删除最早的文件
delfile=`ls -l -crt $backup_dir/*.gz | awk '{print $9} '| head -1  `
echo "delfile= $delfile"
count=` ls -l -crt $backup_dir/*.gz |awk '{print $9}'| wc -l `
echo "count= $count"

if [ $count -gt $backup_count ]
then
	rm $delfile
        echo " delete $delfile ">> $backup_dir/log.txt
fi

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值