欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

bitnami-redmine服务器迁移

程序员文章站 2022-05-19 23:26:33
...

 

原文链接:http://blog.csdn.net/benkaoya/article/details/47009505

 

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...菜单

 bitnami-redmine服务器迁移
            
    
    博客分类: redmine项目管理 redmine 

 

图表 1新建连接

② 新建数据库,取名为bitnami_redmine_new

bitnami-redmine服务器迁移
            
    
    博客分类: redmine项目管理 redmine 

图表 2新建数据库bitnami_redmine_new

 bitnami-redmine服务器迁移
            
    
    博客分类: redmine项目管理 redmine 

 

图表 3 创建数据库bitnami_redmine_new

 

 

③ 导入数据库文件bitnami_redmine_new.sql

bitnami-redmine服务器迁移
            
    
    博客分类: redmine项目管理 redmine 

图表 4 导入数据库文件

 bitnami-redmine服务器迁移
            
    
    博客分类: redmine项目管理 redmine 

 

图表 5选择数据库文件

 bitnami-redmine服务器迁移
            
    
    博客分类: redmine项目管理 redmine 

 

图表 6开始导入

④ 刷新Tables

bitnami-redmine服务器迁移
            
    
    博客分类: redmine项目管理 redmine 

图表 7刷新Tablses

 

三个数据库都恢复后,如下图所示:

bitnami-redmine服务器迁移
            
    
    博客分类: redmine项目管理 redmine 

图表 8 恢复后的三个数据库

5.2. 开始对比数据库差异

为了数据库对比方便,Navicat要同时打开多个窗口,默认是不允许打开多个窗口的,必须先在Navicat的Tools > Options...菜单中进行如下设置。

bitnami-redmine服务器迁移
            
    
    博客分类: redmine项目管理 redmine 

图表 9运行Navicat开多个窗口

 

接下来的工作量就比较大了,要对比新老数据库每个“表”、每“项”、以及它们的属性。是个考验耐性和细心的活。需要涉及数据库的基本操作,包括新建/删除表、新建/删除项等等。

以对比users表作为说明,其他类似,不再累述。运行Navicat三个进程。如下图所示:

bitnami-redmine服务器迁移
            
    
    博客分类: redmine项目管理 redmine 

图表 10开三个进程

我们要改的数据库是bitnami_redmine_merge,而bitnami_redmine_old和bitnami_redmine_new是为了让我们对比用的。同时打开bitnami_redmine_old和bitnami_redmine_new的users表,查看其字段,选择users右键点击DesignTable即可查看字段,如下图所示。

bitnami-redmine服务器迁移
            
    
    博客分类: redmine项目管理 redmine 

图表 11查看users表的字段

通过以下对比,就能一眼看出差异性了,一新版本数据库为标准,对照着这些差异性修改bitnami_redmine_merge数据库。

bitnami-redmine服务器迁移
            
    
    博客分类: redmine项目管理 redmine 

图表 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...菜单,如下所示:

bitnami-redmine服务器迁移
            
    
    博客分类: redmine项目管理 redmine 

图表 13导出数据库到文件中

 

设置导出的文件名,设置编码格式,点击Start开始导出。

bitnami-redmine服务器迁移
            
    
    博客分类: redmine项目管理 redmine 

图表 14导出到数据库

 

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

bitnami-redmine服务器迁移
            
    
    博客分类: redmine项目管理 redmine 

图表 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(图形化操作,方便对比)。

相关标签: redmine