1. 背景

在Redmineserver迁移过程中。假设前后两个Redmine的版本号一样,事情就简单,假设版本号不一样,就有可能面临两个版本号数据库不兼容。那就比較麻烦了。本文旨在介绍数据库不兼容时,怎样迁移Redmine。这是一种万金油式的方法。假设掌握了,无论Redmine是从哪个版本号升级到哪个版本号,你都能轻松搞定。

2. 环境

我的Redmine是用bitnami-redmine安装在linuxserver上的。

如今要从serverA(版本号bitnami-redmine-2.3.0-0)迁移到serverB(版本号bitnami-redmine-3.0.3-0)上。这两个版本号。数据库是有改变的。

3. 数据库备份(旧server)

3.1. 查看数据库username和password

查看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. 数据库备份(新server)

4.1. 安装新版本号Redmine

在新server上安装bitnami-redmine-3.0.3-0,怎样安装不在本文讨论范围内。

安装完后,启动服务。

4.2. 查看数据库username和password

跟前面操作一样,记录下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图形化界面,逐个“表”进行对照差异,最后整合出一份符合新server要求的数据库文件。

在開始之前,先安装MySQLserver和MySQLclient。我是在Window XP中完毕数据库整合的,环境例如以下:

操作系统

Windows XP SP3

MySQL服务端

MySQL Server 5.1

MySQLclient

Navicat for MySQL (version 9.0.15)

怎样安装,不在本文讨论范围之内。

5.1. 在MySQLserver上恢复新老数据库

为了对照须要。我们须要将bitnami_redmine_old.sql、bitnami_redmine_new.sql两个数据库文件恢复出三个数据库。例如以下所看到的。

数据库文件名称

在MySQLserver上

恢复的数据库名

说明

bitnami_redmine_new.sql

bitnami_redmine_new

新server数据库

bitnami_redmine_old.sql

bitnami_redmine_old

老server数据库

bitnami_redmine_old.sql

bitnami_redmine_merge

合并后的数据库

下面以恢复bitnami_redmine_new为例。其它同理。不再累述。

① 用clientNavicat for MySQL连上MySQLserver

执行Navicat for MySQL,选择File > New Connection...菜单

图表 1新建连接

② 新建数据库,取名为bitnami_redmine_new

图表 2新建数据库bitnami_redmine_new

图表 3 创建数据库bitnami_redmine_new

③ 导入数据库文件bitnami_redmine_new.sql

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

图表 4 导入数据库文件

图表 5选择数据库文件

图表 6開始导入

④ 刷新Tables

图表 7刷新Tablses

三个数据库都恢复后,例如以下图所看到的:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

图表 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...菜单,例如以下所看到的:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

图表 14导出到数据库

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

图表 15成功导出文件

6. 数据库恢复(新server)

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. 文件附件迁移(旧server)

将/apps/redmine/htdocs/files 下的全部文件拷贝至新server同样文件夹就可以。

8. 插件迁移(旧server)

将/apps/redmine/htdocs/plugins 下的全部文件拷贝至新server同样文件夹就可以。

9. 大功告成

至此,迁移工作完毕,浏览器中訪问新版 redmine 。确认功能是否正常。

10. 总结

做个总结,迁移redmine。假设新旧server版本号不同,难点在于迁移数据库,迁移数据库的过程例如以下:

Ø  备份旧server数据库文件(bitnami_redmine_old.sql)

Ø  备份新server数据库文件(bitnami_redmine_new.sql)

Ø  对照/合并数据库,并导出文件(bitnami_redmine_merge.sql)

Ø  将合并后的数据库文件恢复到新server上

当中合并的过程。借助MySQL Server和clientNavicat for MySQL(图形化操作。方便对照)。

bitnami-redmineserver迁移的更多相关文章

  1. gitlab 从古老的 bitnami 版本 迁移到官方最新版本

    这是我之前发布在 yuque 的文章.是我刚来新公司的时候帮公司搬迁 git 记录下来的,现在看来去掉敏感部分直接发布也没啥问题啦,就搬家过来,我自己也方便查 XD . 8.1.6 -> 10. ...

  2. bitnami redmine版本由2.3.1升级至3.2.2过程

    环境: 操作系统为ubuntu13.**版本,非长期支持版. 安装目录:/opt/redmine-2.3.1-0/ 所有者用户:root 安装过程: 1. 备份2.3.1数据库 sudo /opt/r ...

  3. Bitnami redmine备份升级步骤

    从3.2.1升级至3.3.0,不确定数据库结构是否有变化,主要过程:先停止服务,安装redmine模块,恢复服务. 以下适用于windows操作系统,采用Bitnami安装方式: 1.完整备份 Fol ...

  4. (五)Amazon Lightsail 部署LAMP应用程序之迁移到Amazon RDS实例

    迁移到您的Amazon RDS实例 在某些时候,您的应用程序需求可能需要在 Amazon Lightsail中找不到的功能.幸运的是,将应用程序的一个或所有部分移动到其他AWS服务中非常简单 您将数据 ...

  5. 基于本地存储的kvm虚拟机在线迁移

    基于本地存储的kvm虚拟机在线迁移 kvm虚拟机迁移分为4种(1)热迁移基于共享存储(2)热迁移基于本地存储(3)冷迁移基于共享存储(4)冷迁移基于本地存储 这里介绍的是基于本地存储的热迁移 动态块迁 ...

  6. 【SQLServer】记一次数据迁移-标识重复的简单处理

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 今天在数据迁移的时候因为手贱遇到一个坑爹问题,发来大家乐乐,也传授新手点经验 迁移惯用就 ...

  7. MVC5+EF6+MYSQl,使用codeFirst的数据迁移

    之前本人在用MVC4+EF5+MYSQL搭建自己的博客.地址:www.seesharply.com;遇到一个问题,就是采用ef的codefirst模式来编写程序,我们一般会在程序开发初期直接在glob ...

  8. 烂泥:wiki系统confluence5.6.6安装、中文、破解及迁移

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb confluence是一个专业的企业知识管理与协同软件,可以用于构建企业wiki.通过它 ...

  9. ASP.NET Aries 2.0 发布(原来的源码SVN已关闭,开源源码已迁移到GitHub)

    主要更新: 1:增加子目录部署支持. 2:增加Taurus.MVC支持. 3:优化及Bug修复. 1:增加子目录部署支持: 其实在重写Aries框架的时候,我是去掉了目录部署功能的,主要是为了加快Ar ...

随机推荐

  1. HDU 2389 Rain on your Parade(二分匹配,Hopcroft-Carp算法)

    Rain on your Parade Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 655350/165535 K (Java/Ot ...

  2. Git系列一之安装管理

    1.Git安装部署 Git是分布式的版本控制系统,我们只要有了一个原始Git版本仓库,就可以让其他主机克隆走这个原始版本仓库,从而使得一个Git版本仓库可以被同时分布到不同的主机之上,并且每台主机的版 ...

  3. 关于mysql字段名和保留字冲突的问题

    建了个表,有个字段起名为key,结果insert语句报错了,说是sql不对. 原因:字段key和MySQL的保留字冲突了,当mysql的字段名和保留字冲突的时候,sql语句中的字段名需要加上反引号`` ...

  4. solr 高亮显示

    官网:https://lucene.apache.org/solr/guide/6_6/highlighting.html#Highlighting-TheUnifiedHighlighter 前言 ...

  5. Spark Streaming no receivers彻底思考

    数据接入Spark Streaming的二种方式:Receiver和no receivers方式 建议企业级采用no receivers方式开发Spark Streaming应用程序,好处: 1.更优 ...

  6. Log文件太大,手机ROM空间被占满

    客户要装车,进行项目验收了. 今天拿着几台手机去客户处,其中有一台手机从昨天晚上开始就一直开着我们的APP,今天早晨打开手机发现APP没有反应了. 在程序列表中将其杀掉,然后再启动程序,发现程序不能启 ...

  7. android适配的努力

    1. 优测 http://utest.qq.com/ 2. 云测 3. 阿里云移动 4. 百度移动测试.

  8. 云计算之路-试用Azure:如何建立虚拟机之间的内网连接

    在阿里云上,同一个帐户创建的所有虚拟机(云服务器)之间的内网是直接连通的.而Azure则完全不一样,一开始使用时有点不知所措,后来摸索出来了——在Azure中只有处于同一个虚拟网络(Virtual N ...

  9. 搭建dubbo-admin-2.5.3

    dubbo管理界面 一,安装zookeeper 1,下载包zookeeper-3.3.3.tar.gz 2,解压 tar zxvf zookeeper-3.3.3.tar.gz cd zookeepe ...

  10. 我为什么选择ANGULAR 2?

    没有选择是痛苦的,有太多的选择却更加痛苦.而后者正是目前前端领域的真实写照.新的框架层出不穷: 它难吗?它写得快吗?可维护性怎样?运行性能如何?社区如何?前景怎样?好就业吗?好招人吗?组建团队容易吗? ...