随着项目的运行上线,日志、数据备份都是需要处理的内容,日志需要定期处理,数据需要定期备份,因此,撰写脚本实现定时处理,将成为必要内容。而针对liunx系统中,shell既是一个连接用户和
Linux内核的程序,又是一门管理Linux系统的脚本语言。虽然shell脚本没有C 、Phthon、
Java、
C#等编程语言强大,但也支持了基本的编程元素。
以前对于脚本知识接触的较少,通过本次对项目
数据库脚本备份的处理,进行了一次快速学习,对于本次的
设计和脚本常用知识进行了总结,方便以后回顾备查。
项目上有一些内容还没有完善到整体项目体系中,部署过程中容易有遗漏,特别是一些项目,由于一些原因,上线着急,部署过程中对于细节的处理往往会有偏差,尤其是对数据库的备份处理,本地备份对于客户来说,数据有泄露的风险,因此,数据备份可以部署在客户的服务器上,并定时备份,才能保证数据的安全。同时在数据出现问题时,也能快速恢复,保证客户现场出现重大意外之后,数据功能仍能正常运行。
撰写脚本的目的在于对于项目体系的完善,对于产品不能涉及到的,进行补充完善,使客户体验更好,安全性更高,因此不要过于依赖脚本,要知道,产品是重要的,脚本只是对项目体系的维护,不能作为主要方向,也不能本末倒置,对于脚本的使用要适度,不要过于依赖。
数据库备份脚本的撰写,首先要实现的功能要有以下几个内容:
1.数据库按照指定数据库,或者指定表进行备份;
2.要进行日志记录和输出;
3.要进行定时调用;
4.要对备份进行管理,保留7天新的备份;
5.脚本通用,易改造。
针对以上内容,要对脚本进行设计,不能只满足于项目的使用,要考虑到后期项目的沿用,因此脚本的设计要灵活,便于修改复用。
针对上述需求,考虑用一个脚本分开几个功能完成,分别是数据库备份功能、日志记录功能以及保留七天设置,为了保证这几项功能,实现思路如下:
1.通过mysqldump针对表和数据库进行备份;
2.通过find进行文件查找,配合-mtime 7 -name "*.sql" -exec rm {} 语句,进行指定时间文件的除;
3.通过>> log进行日志追加,通过>log进行日志覆盖 ;
4.将上述功能中语法涉及的参数进行抽离,变成变量赋值;
5.shell脚本进行定时设置,按照设置参数,保证定时触发;
脚本功能的撰写不是很难,难的是对整体的考虑以及细节的把控,因此在实现功能时,要注意以下几点:
1.指定数据库中的表,可以通过sql查询的方式,查出相关表名,这样可以通过修改sql语句,进行表名的动态获取;
2.进行脚本功能组合时,要先除备份,然后再进行数据备份;
3.数据库备份的过程内容会有备份记录,过程中如果出错,要通过日志进行记录(2>>log);
4.脚本备份要按照时间进行命名备份,保证各个备份的独立,不会覆盖冲突;
5.脚本撰写的过程中注意脚本的撰写格式和规范,不要因为撰写不规范引起不必要的代码问题。
优先进行数据库备份撰写,然后根据实现逻辑,进行一个一个片段的测试,再根据逻辑进行代码片段的组合,保证基础功能,后续在初版的基础上进行脚本完善,例如时间、输出打印、脚本注释上等,保证脚本的高度识别性。