0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Bitnami Redmine 3.4 から 4.0 へデータを移行した結果のDB構造を確認する。

Last updated at Posted at 2021-06-13

■データ移行後のDB構造を確認

@8amjpさんの記事より、Bitnami Redmine3.4から4.0へのデータ移行は出来たのですが、
 移行後のDB構造がどのように変化しているかの情報が必要であったため下記の記事を参考にして同じ操作した後に、データを比較します。
 https://qiita.com/8amjp/items/784a664aa3eac05ab03a

■環境:
・Redmine4系
  bitnami-redmine-4.2.1-1-windows-x64-installer.exe
  4.2.1.stable
 ・Redmine3.4系
  bitnami-redmine-3.4.6-5-windows-installer.exe
  3.4.6.stable
  ※入手先
 ダウンロード直リンク: https://downloads.bitnami.com/files/stacks/redmine/3.4.6-5/bitnami-redmine-3.4.6-5-windows-installer.exe

■Redmine4系のデータベースをバックアップ

C:\Bitnami\redmine-4.2.1-1>mysqldump --single-transaction -u root -p bitnami_redmine > bitnami_redmine_4_default.dump

■旧Redmine3.4系のデータベースをバックアップ

C:\Bitnami\redmine-3.4.6-5>mysqldump -u root -p bitnami_redmine > dump34.sql
 ※検証用にユーザー、プロジェクト、チケットの情報を作成

■初期データの削除

 以下のファイル(truncate.sql)を作成し、テーブルの初期化処理を記載して実行する。
 truncate.sql
  TRUNCATE TABLE email_addresses;
  TRUNCATE TABLE enumerations;
  TRUNCATE TABLE issue_statuses;
  TRUNCATE TABLE roles;
  TRUNCATE TABLE schema_migrations;
  TRUNCATE TABLE trackers;
  TRUNCATE TABLE users;
  TRUNCATE TABLE workflows;

C:\Bitnami\redmine-4.2.1-1>mysql -u root -p bitnami_redmine < truncate.sql

■初期データの修正

 旧Redmine3.4系からデータをバックアップしたデータ(dump34.sql)の先頭に以下1行を記載
 SET SESSION TIME_ZONE = '+09:00';

■データ移行

 以下コマンドでデータ移行
 C:\Bitnami\redmine-4.2.1-1>mysql -u root -p -f bitnami_redmine < redmine_3.sql

■マイグレーション

 場所を変えて以下コマンドを実行
 C:\Bitnami\redmine-4.2.1-1>cd C:\Bitnami\redmine-4.2.1-1\apps\redmine\htdocs
 C:\Bitnami\redmine-4.2.1-1\apps\redmine\htdocs>bundle exec rake db:migrate

 ※以下のような表示がでる。(エラーが出なければ問題なし)
== 20170723112801 RenameCommentsToContent: migrating ==========================
-- rename_column(:comments, :comments, :content)
-> 0.0187s
== 20170723112801 RenameCommentsToContent: migrated (0.0189s) =================

== 20180501132547 AddAuthorIdToTimeEntries: migrating =========================
-- add_column(:time_entries, :author_id, :integer, {:default=>nil, :after=>:project_id})
-> 0.1193s
== 20180501132547 AddAuthorIdToTimeEntries: migrated (0.1289s) ================

== 20180913072918 AddVerifyPeerToAuthSources: migrating =======================
-- change_table(:auth_sources)
-> 0.0304s
== 20180913072918 AddVerifyPeerToAuthSources: migrated (0.0312s) ==============

== 20180923082945 ChangeSqliteBooleansTo0And1: migrating ======================
== 20180923082945 ChangeSqliteBooleansTo0And1: migrated (0.0000s) =============

== 20180923091603 ChangeSqliteBooleansDefault: migrating ======================
== 20180923091603 ChangeSqliteBooleansDefault: migrated (0.0000s) =============

== 20190315094151 ChangeCustomValuesValueLimit: migrating =====================
-- change_column(:custom_values, :value, :text, {:limit=>16777216})
-> 0.0630s
== 20190315094151 ChangeCustomValuesValueLimit: migrated (0.0638s) ============

== 20190315102101 AddTrackersDescription: migrating ===========================
-- add_column(:trackers, :description, :string, {:after=>:name})
-> 0.0458s
== 20190315102101 AddTrackersDescription: migrated (0.0466s) ==================

== 20190510070108 AddUniqueIdToImportItems: migrating =========================
-- change_table(:import_items)
-> 0.0298s
== 20190510070108 AddUniqueIdToImportItems: migrated (0.0305s) ================

== 20190620135549 ChangeRolesNameLimit: migrating =============================
-- change_column(:roles, :name, :string, {:limit=>255, :default=>""})
-> 0.0584s
== 20190620135549 ChangeRolesNameLimit: migrated (0.0592s) ====================

== 20200826153401 AddTwofaSchemeToUser: migrating =============================
-- add_column(:users, :twofa_scheme, :string)
-> 0.0172s
== 20200826153401 AddTwofaSchemeToUser: migrated (0.0178s) ====================

== 20200826153402 AddTotpToUser: migrating ====================================
-- add_column(:users, :twofa_totp_key, :string)
-> 0.0153s
-- add_column(:users, :twofa_totp_last_used_at, :integer)
-> 0.0159s
== 20200826153402 AddTotpToUser: migrated (0.0326s) ===========================

■再起動して動作確認

 普通はここで終了
※旧Redmine3.4系のプロジェクトやチケットが見えているか確認する。
image.png

■データ移行後の検証

 マイグレーション後にバックアップ
 C:\Bitnami\redmine-4.2.1-1>mysqldump -u root -p bitnami_redmine > dump42.sql

■データ比較(旧Redmine3.4系のバックアップと、データ移行後のバックアップを比較)

①先頭行から比較
 移行後のデータでデーブルが追加されている事が分かる。
image.png

②usersテーブルを見ると、追加されたレコードがある。また属性も変わっている。
image.png

tokensテーブル他
image.pngimage.png

projectsテーブル
image.png

issuesテーブル
image.png

■データ比較(データ移行後バックアップと、Redmine4系のバックアップを比較)

①先頭行から比較
 変化なし
image.png

②usersテーブルを見ると、属性に差異がある。
image.png

tokensテーブル他
image.png

projectsテーブル
image.png

issuesテーブル
image.png

■結果分かった事
 データ移行をすると、マイグレーションで足りないデータは追加(削除は未確認)されるが、
 データの型全てが修正される訳ではなかった。
 ※型自体は旧Redmine3.4系変換されるも、Redmine4系データベースとも不一致となっている個所もあった。
  理由は分からないが自動変換されるものとされないものがある事は確認できた。

■ファイル
・Redmine4系のデータベースのバックアップ
https://github.com/katsunori-tanaka/awesome/blob/master/bitnami_redmine_4_default.dump

・旧Redmine3.4系のデータベースをバックアップ
https://github.com/katsunori-tanaka/awesome/blob/master/dump34.sql

・データ移行後のバックアップ
https://github.com/katsunori-tanaka/awesome/blob/master/dump42.sql

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?