Redmine 1.1.1升级到2.2.3
部门一直在用的Redmine版本是1.1.1,比较旧,很多新插件都无法使用。终于要狠下决心将它升级,到2.2.3。
用了大概两天时间研究两个版本直接的DB结构变化,升级起来还好,没有原来想象中那么困难。一来是运气不错,两个版本的数据结构变化并不特别剧烈;二是要多谢Bitnami,它提供的打包让安装过程容易了很多。
简单的升级思路和过程:
1、 在旧版数据库中用mysqldump导出数据,忽略一些在新版中已经不存在的table以及几个特殊表(包括schema_migrations和repositories);
mysqldump -ubn_redmine -p -y -c -n -e -rredmine-1.1.1latin.sql –ignore-table=bitnami_redmine.repositories –ignore-table=bitnami_redmine.schema_migrations –default-character-set=latin1 bitnami_redmine
2、 将导出的sql脚本用piconv转码(如果原来的数据库不是latin1格式,这步就可以不做),变成utf8格式;
piconv -f utf8 -t gbk redmine-1.1.1latin.sql > gbk.sql
piconv -f gbk -t utf8 gbk.sql > redmine_utf8.sql
sed ‘s/latin1/utf8/g’ redmine_utf8.sql > redmine_utf8_final.sql
3、 在新版数据库中建立一个“临时库”,将旧版数据全数导入;在临时库上运行几个alter table脚本,目的是将临时库的数据结构改到和新版一样;然后再将临时库的数据用mysqldump导出;
/opt/redmine-2.2.3-0/mysql/bin/mysql –default-character-set=utf8 -utemp_user -p temp_db < redmine_utf8_final.sql
/opt/redmine-2.2.3-0/mysql/bin/mysql -utemp_user -p temp_db
alter table issues add is_private tinyint(1) not null default 0 ,drop column ir_position;
alter table versions drop column ir_start_date, drop column ir_end_date;
/opt/redmine-2.2.3-0/mysql/bin/mysqldump -y -c -t -n -e -rredmine_adjusted.sql –default-character-set=utf8 -utemp_user -p temp_db;
4、 在新版的redmine数据库中执行几个truncate table的操作,目的是为了批量插入新数据时不至于主键冲突错误;
/opt/redmine-2.2.3-0/mysql/bin/mysql -ubitnami -p bitnami_redmine
truncate table enumerations;
truncate table issue_statuses;
truncate table roles;
truncate table trackers;
truncate table users;
truncate table workflows;
5、 将之前临时库导出的文件导入新版的Redmine数据库。顺利导入完成之后,进入新版数据库,运行几条sql命令更新用户的密码(是因为新版对用户密码用了salt加密,已经无法直接用旧版保存的密码,所有用户的密码都必须重设);
/opt/redmine-2.2.3-0/mysql/bin/mysql -ubitnami -p bitnami_redmine –default-character-set=utf8 < redmine_adjusted.sql;
/opt/redmine-2.2.3-0/mysql/bin/mysql -ubitnami -p bitnami_redmine;
update users set hashed_password=’01258c2a5f16c0700e615cc16632fa3fff4e8fa2′, salt=’56aafb8190971508901c6d6269e49859′ where login!=’raymond.chen’ and login is not null and login!=”;
6、 将旧版Redmine的files目录下的用户上传附件数据,迁移到新版的对应files目录下,注意目录权限要保持和原来一样(775和root:daemon);
7、 在plugins目录下安装必须的插件;
8、 在configurations.yml文件中添加回相关smtp配置以发送邮件
9、 启动Redmine服务,用管理员身份,到后台将需要的SVN重新配置一下就好了。