• bitnami-redmineserver迁移


    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

    图表 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. 数据库恢复(新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(图形化操作。方便对照)。

  • 相关阅读:
    mysql高级排序&高级匹配查询示例
    为什么我说我会这会那,但真正到回答实际问题的时候却傻了眼了?
    微软职位内部推荐-SW Engineer II for WinCE
    微软职位内部推荐-Senior Program Manager
    微软职位内部推荐-Software Engineer II-Web app
    微软职位内部推荐-Senior Software Engineer -Web
    微软职位内部推荐-Senior Software Engineer-News
    微软职位内部推荐-Software Engineer II-News
    微软职位内部推荐-SDE II
    微软职位内部推荐-Software Engineer II-Data Mini
  • 原文地址:https://www.cnblogs.com/llguanli/p/6790066.html
Copyright © 2020-2023  润新知