bitnami-redmine服務器遷移

 

1. 背景

       在Redmine服務器遷移過程中,如果前後兩個Redmine的版本一樣,事情就簡單,如果版本不一樣,就有可能面臨兩個版本數據庫不兼容,那就比較麻煩了。本文旨在介紹數據庫不兼容時,如何遷移Redmine。這是一種萬金油式的方法,如果掌握了,不管Redmine是從哪個版本升級到哪個版本,你都能輕鬆搞定。

2. 環境

       我的Redmine是用bitnami-redmine安裝在linux服務器上的。現在要從服務器A(版本bitnami-redmine-2.3.0-0)遷移到服務器B(版本bitnami-redmine-3.0.3-0)上。這兩個版本,數據庫是有改變的。

3. 數據庫備份(舊服務器)

3.1. 查看數據庫用戶名和密碼

       查看redmine-2.3.0-0/apps/redmine/htdocs/config/database.yml文件,記下username和password,等下需要用到。

$

$ cd redmine-2.3.0-0/

$ cat ./apps/redmine/htdocs/config/database.yml

# Default setup is given for MySQL with ruby1.9. If you're running Redmine

# with MySQL and ruby1.8, replace the adapter name with `mysql`.

# Examples for PostgreSQL, SQLite3 and SQL Server can be found at the end.

# Line indentation must be 2 spaces (no tabs).

 

production:

  adapter: mysql2

  database: bitnami_redmine

  host: localhost

  port: 3306

  username: bitnami

  password: "87783b9008"

  encoding: utf8

 

3.2. 備份數據庫

備份數據庫到當前目錄的 bitnami_redmine_old.sql 文件

./mysql/bin/mysqldump -ubitnami -p'87783b9008' bitnami_redmine > bitnami_redmine_old.sql

4. 數據庫備份(新服務器)

4.1. 安裝新版本Redmine

       在新服務器上安裝bitnami-redmine-3.0.3-0,如何安裝不在本文討論範圍內。安裝完後,啓動服務。

4.2. 查看數據庫用戶名和密碼

       跟前面操作一樣,記錄下username和password,等下需要用到。

#

#cd redmine-3.0.3-0/

#cat ./apps/redmine/htdocs/config/database.yml

---

# Default setup is given for MySQL with ruby1.9.

# Examples for PostgreSQL, SQLite3 and SQL Server can be found at the end.

# Line indentation must be 2 spaces (no tabs).

production:

  adapter: mysql2

  database: bitnami_redmine

  host: localhost

  username: bitnami

  password: 9f30a3f2ea

  encoding: utf8

4.3. 備份數據庫

備份數據庫到當前目錄的bitnami_redmine_new.sql 文件

./mysql/bin/mysqldump -ubitnami -p'9f30a3f2ea' bitnami_redmine > bitnami_redmine_new.sql

5. 對比數據庫差異

       新舊數據庫有差異,那究竟差別在哪裏,怎麼看?

       這裏給出一種方法,總體思路是:分別將剛纔備份的新老數據庫文件,恢復出來(恢復到MySQL Server),然後用Navicat for MySQL圖形化界面,逐個“表”進行對比差異,最後整合出一份符合新服務器要求的數據庫文件。

      

       在開始之前,先安裝MySQL服務器和MySQL客戶端。我是在Window XP中完成數據庫整合的,環境如下:

操作系統

Windows XP SP3

MySQL服務端

MySQL Server 5.1

MySQL客戶端

Navicat for MySQL (version 9.0.15)

       如何安裝,不在本文討論範圍之內。

5.1. 在MySQL服務器上恢復新老數據庫

爲了對比需要,我們需要將bitnami_redmine_old.sql、bitnami_redmine_new.sql兩個數據庫文件恢復出三個數據庫,如下所示。

數據庫文件名

在MySQL服務器上

恢復的數據庫名

說明

bitnami_redmine_new.sql

bitnami_redmine_new

新服務器數據庫

bitnami_redmine_old.sql

bitnami_redmine_old

老服務器數據庫

bitnami_redmine_old.sql

bitnami_redmine_merge

合併後的數據庫

 

以下以恢復bitnami_redmine_new爲例,其他同理,不再累述。

 

① 用客戶端Navicat for MySQL連上MySQL服務器

運行Navicat for MySQL,選擇File > New Connection...菜單

 

圖表 1新建連接

② 新建數據庫,取名爲bitnami_redmine_new

圖表 2新建數據庫bitnami_redmine_new

 

圖表 3 創建數據庫bitnami_redmine_new

 

 

③ 導入數據庫文件bitnami_redmine_new.sql

圖表 4 導入數據庫文件

 

圖表 5選擇數據庫文件

 

圖表 6開始導入

④ 刷新Tables

圖表 7刷新Tablses

 

三個數據庫都恢復後,如下圖所示:

圖表 8 恢復後的三個數據庫

5.2. 開始對比數據庫差異

爲了數據庫對比方便,Navicat要同時打開多個窗口,默認是不允許打開多個窗口的,必須先在Navicat的Tools > Options...菜單中進行如下設置。


圖表 9運行Navicat開多個窗口

 

接下來的工作量就比較大了,要對比新老數據庫每個“表”、每“項”、以及它們的屬性。是個考驗耐性和細心的活。需要涉及數據庫的基本操作,包括新建/刪除表、新建/刪除項等等。

以對比users表作爲說明,其他類似,不再累述。運行Navicat三個進程。如下圖所示:

圖表 10開三個進程

我們要改的數據庫是bitnami_redmine_merge,而bitnami_redmine_old和bitnami_redmine_new是爲了讓我們對比用的。同時打開bitnami_redmine_old和bitnami_redmine_new的users表,查看其字段,選擇users右鍵點擊DesignTable即可查看字段,如下圖所示。

圖表 11查看users表的字段

通過以下對比,就能一眼看出差異性了,一新版本數據庫爲標準,對照着這些差異性修改bitnami_redmine_merge數據庫。

圖表 12users表的差異性

從bitnami-redmine-2.3.0-0升級到bitnami-redmine-3.0.3-0,數據庫bitname_redmine的差異總結如下:

Ø  changesets表的comments字段,類型由text變爲longtext。

Ø  custom_fields表,多了兩個字段format_store和description。

Ø  多了custom_fields_roles表。

Ø  多了email_addresses表。

Ø  多了quesries_roles表。

Ø  queries表,少了is_public字段,多了兩個字段visibility和options。

Ø  repositorys表,多了字段created_on。

Ø  roles表,多了字段users_visibility。

Ø  trackers表,多了字段default_status_id。

Ø  users表,少了字段mail,多了兩個字段must_change_passwd和passwd_changed_on。

Ø  wiki_redirects表,多了字段redirects_to_wiki_id。

Ø  issue_statuses表,少了字段is_default。

5.3. 導出合併後的數據庫文件

對比了所有差異,也都修改了bitnami_redmine_merge數據庫,最後將bitnami_redmine_merge數據庫導出文件bitnami_redmine_merge.sql。

選中bitnami_redmine_merge數據庫,右鍵點擊Data Transfer...菜單,如下所示:

圖表 13導出數據庫到文件中

 

設置導出的文件名,設置編碼格式,點擊Start開始導出。

圖表 14導出到數據庫

 

看到如下提示,表明成功導出。

圖表 15成功導出文件

6. 數據庫恢復(新服務器)

6.1. 清理 bitnami_redmine 數據庫

使用 mysql 命令清理 bitnami_redmine 數據庫,見以下紅色字體的命令。

#

# ./mysql/bin/mysql -ubitnami -p'9f30a3f2ea'

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 9

Server version: 5.5.42 MySQL Community Server (GPL)

 

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

 

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

mysql> DROP DATABASE bitnami_redmine;

Query OK, 51 rows affected (0.04 sec)

 

mysql> CREATE DATABASE bitnami_redmine;

Query OK, 1 row affected (0.00 sec)

 

mysql> quit

Bye

#

 

6.2. 恢復合併後的數據庫

上傳bitnami_redmine_merge.sql文件到redmine-3.0.3-0目錄 ,並恢復數據庫

./mysql/bin/mysql -ubitnami -p'9f30a3f2ea' bitnami_redmine < bitnami_redmine_merge.sql

 

6.3. 重啓redmine服務

重啓redmine服務,打開瀏覽器,登陸看看是不是大功告成。如果在瀏覽器中有出現錯誤,說明數據庫對比的時候有遺漏,回去重新審查一遍吧。

7. 文件附件遷移(舊服務器)

       將/apps/redmine/htdocs/files 下的所有文件拷貝至新服務器相同目錄即可。

8. 插件遷移(舊服務器)

       將/apps/redmine/htdocs/plugins 下的所有文件拷貝至新服務器相同目錄即可。

9. 大功告成

       至此,遷移工作完成,瀏覽器中訪問新版 redmine ,確認功能是否正常。

10. 總結

做個總結,遷移redmine,如果新舊服務器版本不同,難點在於遷移數據庫,遷移數據庫的步驟如下:

Ø  備份舊服務器數據庫文件(bitnami_redmine_old.sql)

Ø  備份新服務器數據庫文件(bitnami_redmine_new.sql)

Ø  對比/合併數據庫,並導出文件(bitnami_redmine_merge.sql)

Ø  將合併後的數據庫文件恢復到新服務器上

 

其中合併的過程,藉助MySQL Server和客戶端Navicat for MySQL(圖形化操作,方便對比)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章