服务器宕机这件小事

上周末由于服务器宕机多次, 并且由于之前的备份还原机制导致服务端的代码一次次被全部还原至一年前的代码, 找了十分久才找到其中的原因并恢复回来. 在此想到的事情是当服务器宕机时有什么样的方式可以快速启动, 比如有一些随系统启动的服务脚本, 自动运行以恢复服务器程序. 第二是当服务端的代码被还原时有没有一份马上可用的最新备份, 当然用户的数据自然要时时备份, 谁知道什么时候磁盘被删除了, 如果没有一个备份要想恢复估计是十分难的. 因而从这里想到了任何重要的东西都需要有一个良好的灾难恢复机制, 用于快速从异常状态恢复, 平时还是不能偷懒少做工作的.

在这份工作的这一段时间, 我得到了一个结论: 过分沉溺于细节是十分危险的, 最大的危险是导致整个大的工作没有一个方向, 永远都是在修修补补.

上周花了一天时间将部署新服的脚本完成了一大半. 为了实现模块化, 专门按照上次写的 shell 模块化编程的方式写了一百多行的库, 并且连数据库配置信息等都写到了 shell 脚本中去了. 部署时候直接 source 导入即可, 跟 skynet 的 lua 配置颇为类似. 为了以自增的方式修改配置文件中的端口号, 替换 ip 等工作, 混合了 awk 和 sed 以及 bash 语言实现一些简单的正则替换. 从最最开始会觉得不好设计, 到最终得到一份满意的答案, 每个函数都恰如其分的设计, 每个函数都可以被上层完美复用. 自此, 开始喜欢上自底向上的设计方式. 希望在今后的日子里可以更多从 skynet 和 <代码大全> 等书中学到设计的理念.

完整部署新服脚本代码: 代码

Leave a Reply

Your email address will not be published. Required fields are marked *