Loading...

Archive for September, 2010

    AD: 猛买 | 快递查询 | Jobsdigg | 很棒的男装店

记一次复杂升级

:请想折腾最土程序和想做团购网站的同志们别发邮件打扰我,我这次只是帮朋友升级,平时根本不关心这些玩意。

上周末和智勇一起把猛买网的程序进行了一次大升级,有一些经验和教训可以记录下来备忘。

背景是这样的:猛买网用了最土(这是家软件公司)的团购系统,升级之前是1.4免费版,并在这基础上进行了大量修改。升级的目标是将系统迁移到1.6商业版。原来进行的修改(主要是新增的一些功能),需要原样搬过来。

升级过程大致记录如下。

准备阶段:

  1. 将当前数据表结构导出一份(不导出数据),然后与新版本的建库脚本做人肉diff。整理出一个包含N条SQL的文件,内容不外乎添加表、添加字段、添加索引。在这里有个小技巧:如果要对一张表进行多次修改,可以写在一个alter table的命令里,这样可以节约几次copy to tmp table。
  2. 使用一台从库做实验。断开主从同步,将上一步准备完成的SQL依次执行。如果有报错就相应地做调整。
  3. 将新版代码部署,验证功能。
  4. 对之前进行的程序上的修改,整理出优先级,将优先级高的功能重做修改。最终整理出用于升级的文件。

上线阶段:

  1. 备份数据库内容;备份网站所有文件。
  2. 运行准备好的一堆SQL改库。
  3. 程序文件升级。

后续:

  1. 恢复之前所有对程序的修改,这个得慢工出细活儿。

几个感想:

  1. 国内开源的系统,在防盗版防拷贝等方面做得非常完善,但在打日志查问题方面却一塌糊涂。
  2. 对于业务复杂的系统,在上线阶段最好直接把流量切走做停机维护,不然可能导致数据不准确。
  3. 若把文件修改的diff都保存成patch,升级时可以轻松地恢复绝大多数修改,可以极大地解放生产力。