千家信息网

如何使用shell写一个mysql数据备份脚本

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍如何使用shell写一个mysql数据备份脚本,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!思路其实很简单写一个shell脚本通过mysql的mysqldump
千家信息网最后更新 2025年11月07日如何使用shell写一个mysql数据备份脚本

这篇文章主要介绍如何使用shell写一个mysql数据备份脚本,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

思路

其实很简单

写一个shell脚本通过mysql的mysqldump,将数据导出成对应的sql文件;使用linux的crontab定时运行对应脚本,将sql,文件保存到对应的目录下;可想而知,随着数据量的增加和备份的频率都会导致备份服务器的硬盘资源使用率也会直线攀升;为了解决这个问题,我们就需要,定时清理备份内容;而我还是简单的使用了个shell脚本,通过crontab定时去清理; 注意

这里有几个问题需要注意的:

通过mysqldump来导出对应的库表的sql,这样必然会造成mysql服务器的资源消耗(cup,内存,io等); mysqldump默认的方式会造成锁表,这个很恐怖,会导致线上的服务的中断,也许时间是短暂的,但是这是致命的;(可以通过配置改成事务形式,不锁表)随着数据量的增大,mysqldump导出sql的时间也会增长;

当然数据备份,你可以选择对应的时间段,按照对应的业务的情况定义备份的周期,又或者如果 mysql服务器上库多,根据不同业业务,不同时间段备份;这也是可以的。。。看具体业务情况咯!

因为我的只是开发和测试用,数据量不会很大,所以影响就可以忽略了,只要在大家都下班了后备份就没关系了(所以我定的是:每天深夜12点备份,一个月后吧上个月的清理了)

1.mysqldump的权限说明

mysqldump 所需要的权限说明:

对于table 来说mysqldump 最少要有select 权限。对于view 来说mysqldump 要有show view 权限。对于trrigger 来说mysqldump 要有trriger 权限。如果要产生一份一致的备份 mysqldump 要有lock tables 权限。

下面是用户创建预计(有不懂的可以另行google,就不多展开了):

create user dumper@'127.0.0.1';grant select on tempdb.* to dumper@'127.0.0.1';grant show view on tempdb.* to dumper@'127.0.0.1';grant lock tables on tempdb.* to dumper@'127.0.0.1';grant trigger on tempdb.* to dumper@'127.0.0.1';

2.shell脚本(导出数据sql)

#!/bin/sh# Database infoDB_USER="dumper"DB_PASS="..."DB_HOST="..."# Database arrayDB_NAME=("hotel" "food" "foodweb")# Others varsBIN_DIR="/usr/bin"      #the mysql bin pathBCK_DIR="/home/mysql-backups"  #the backup file directoryDATE=`date +%F`# create filemkdir $BCK_DIR/$DATE# TODO# /usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /mnt/mysqlBackup/db_`date +%F`.sqlfor var in ${DB_NAME[@]};do  $BIN_DIR/mysqldump --opt --single-transaction --master-data=2 -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME > $BCK_DIR/$DATE/db_$var.sqldone

参数说明:

--master-data[=#]

在备份导出的文件里追加二进制binlog文件的位置和名称
如果值等于1,就会添加一个CHANGE MASTER语句
如果值等于2,就会在CHAGE MASTER语句前添加注释(不起作用了呗~)
这个参数会--lock-all-tables锁表,除非你指定了--single-transaction
这种情况下,锁表只会在dump开始的时候持续一小段时间,照理说 在dump的时候,任何动作都会影响到binlog文件 dump结束之后,选项会自动关闭锁表功能

--single-transaction

以事务的形式执行

3.shell脚本(按时批量清除N天前脚本)

#!/bin/shfind /home/mysql-backups -mtime +30 -name "*.*" -exec rm -Rf {} \;

说明:

/home/lifeccp/dicom/studies :准备要进行清理的任意目录 -mtime:标准语句写法+10:查找10天前的文件,这里用数字代表天数,+30表示查找30天前的文件 ".":希望查找的数据类型,".jpg"表示查找扩展名为jpg的所有文件,""表示查找所有文件 -exec:固定写法 rm -rf:强制删除文件,包括目录 {} ; :将find的结果放到里面 4.crontab定时启动脚本

crontab -e0 0 * * * /home/sh/mysql-backups/dump.sh0 0 1 * * /home/sh/mysql-backups/del.sh

以上是"如何使用shell写一个mysql数据备份脚本"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

备份 文件 数据 脚本 权限 时间 服务 数据备份 业务 内容 情况 服务器 目录 语句 不同 事务 写法 参数 形式 时候 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 闵行区网络技术咨询创新服务 镇江云主机服务器安装 市公安局网络安全 上海艾绒软件开发有限公司 南阳管理软件开发 网络安全运行日志是什么 中国电信网络安全惠民生 初级中学网络安全亮点 文件服务器架设 从数据库中任选一条感兴趣的蛋白 检验鉴定软件开发 查看密钥管理服务器 数据库中的sum函数 中科国产服务器 中国网络安全发展中心 j计算机等级考试网络技术 淮南企业软件开发定制 计算机网络技术老师要求 中国国家知识专利产权局数据库 软件开发专业可以学高数吗 贵阳软件开发工资多少钱 数据库技术在我国的应用 对拒不改正或导致危害网络安全 蔬菜生鲜分拣配送软件开发 计算机网络安全应用或技术 团体客户服务器 贵州语音网络技术服务市场价 广州坤程互联网科技有限公司 工业自动化网络技术考试 完美地图文件与服务器不同
0