Redmine 1.1.1升級到2.2.3

less than 1 minute read

部門一直在用的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重新配置一下就好了。

 

 

Categories: Tech

Updated: