September 17th, 2010 by 张磊
注:请想折腾最土程序和想做团购网站的同志们别发邮件打扰我,我这次只是帮朋友升级,平时根本不关心这些玩意。 – 上周末和智勇一起把猛买网的程序进行了一次大升级,有一些经验和教训可以记录下来备忘。 背景是这样的:猛买网用了最土(这是家软件公司)的团购系统,升级之前是1.4免费版,并在这基础上进行了大量修改。升级的目标是将系统迁移到1.6商业版。原来进行的修改(主要是新增的一些功能),需要原样搬过来。 升级过程大致记录如下。 准备阶段: 将当前数据表结构导出一份(不导出数据),然后与新版本的建库脚本做人肉diff。整理出一个包含N条SQL的文件,内容不外乎添加表、添加字段、添加索引。在这里有个小技巧:如果要对一张表进行多次修改,可以写在一个alter table的命令里,这样可以节约几次copy to tmp table。 使用一台从库做实验。断开主从同步,将上一步准备完成的SQL依次执行。如果有报错就相应地做调整。 将新版代码部署,验证功能。 对之前进行的程序上的修改,整理出优先级,将优先级高的功能重做修改。最终整理出用于升级的文件。 上线阶段: 备份数据库内容;备份网站所有文件。 运行准备好的一堆SQL改库。 程序文件升级。 后续: 恢复之前所有对程序的修改,这个得慢工出细活儿。 几个感想: 国内开源的系统,在防盗版防拷贝等方面做得非常完善,但在打日志查问题方面却一塌糊涂。 对于业务复杂的系统,在上线阶段最好直接把流量切走做停机维护,不然可能导致数据不准确。 若把文件修改的diff都保存成patch,升级时可以轻松地恢复绝大多数修改,可以极大地解放生产力。
April 27th, 2009 by 张磊
Ubuntu 9.04版本在上周发布,我的linode上还安装着8.10,自然想升级到新版。但Server版只有一个Shell,怎么办?很快就在一个老外的blog里找到了答案。 先登录到shell,把现有软件升级到最新(小提示,可以卸载掉一些不需要的软件,这样升级时节约时间): $ sudo apt-get update $ sudo apt-get upgrade 之后备份一下各种配置文件(我偷懒没备份),运行以下命令: $ sudo apt-get install update-manager-core $ sudo do-release-upgrade 升级就自动开始了。不过还不能走开,有一些步骤需要人的参与,但总体来说,已经非常自动化了。 升级之后会需要重启,重启之后运行 ‘lsb_release -a’,不出意外,会显示下面的内容: Distributor ID: Ubuntu Description: Ubuntu 9.04 Release: 9.04 Codename: jaunty 感叹Ubuntu做得真是便捷,升级只要一句话。这么易用的东西,有什么理由不火起来呢?
October 8th, 2008 by 张磊
一向都会花点时间读dreamhost newsletter。今天又发来最新的,注意到了其中的一条: Volunteer to Get Upgraded First! If you actually VOLUNTEER to be one of the first moved to the new system your account will be “upgraded” to unlimited disk and bandwidth, forever. Of course, it’s not like you’ll use it, and it’s of course subject to our “unlimited” policy. If you do decide to [...]