【Amazon Aurora】MySQLからのデータ移行手順例(Redmine環境

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。半瀬です。

Amazon Auroraを触ってみたくて、自前のテストredmine環境をMySQLからAuroraに載せ替えてみました。今回はその手順メモです。

やりたいこと

MySQLで動いているRedmineをAmazon Auroraに移し替えて今まで通り使う。

Amazon RDS での Aurora Amazon Aurora は、フルマネージド型の MySQL と互換性のあるリレーショナルデーターベースエンジンであり、ハイエンドな商用データベースの可用性とスピード、オープンソースデータベースの簡素性とコスト効率性を兼ね備えています。既存のアプリケーションをほとんど変更せずに、MySQL に比べ、最大 5 倍のパフォーマンスを実現します。

引用元

ということなので、データを抜いて、箱作って、データを入れて、ちょこちょこっとやればそのまま起動できるはず。

対象の構成

「us-east-1/米国東部(バージニア北部)」で準備 00_rm_hanse
(DBだけ豪華にします。。

やっていきます

データエクスポート

webインスタンスにログインし、redmineデータ「rm_hanse」をエクスポートしておきます。「rm_hanse.sql」

[ec2-user@xxxxxx ~]$ mysqldump -uxxxxx -pxxxxxx -hmydb.xxxxxxx.us-east-1.rds.amazonaws.com rm_hanse > rm_hanse.sql

Auroraを準備

1. Auroraを選択

RDSインスタンス作成でAuroraを選択します。
01_select_engine

2. 設定を入力

いつものインスタンスのクラス、ユーザー、パスワード、の設定の流れがあります。
(DBクラスは「db.r3.large」からですので、テスト用途の場合は終わったら削除を忘れずに。
02_select_class

識別子やデータベース名はなんでもいいですが、既存に合わせて作成しておきます。
03_edit_database

できました。
04_mconsole_Aurora

パラメータグループの指定

既存redmineのデータベースでは、日本語データを入れるために文字コードを指定しているので、パラメータグループの編集が必要です。Auroraでは、クラスタレベルで全体に適用されるパラメータとインスタンス個別で指定可能なパラメータが用意されています。

Amazon Aurora DB クラスターの管理に使用するパラメータの中には、クラスター全体に適用されるパラメータと、DB クラスター内の特定の DB インスタンスのみに適用されるパラメータがあります。

クラスターレベルのパラメータは、DB クラスターパラメータグループ単位で管理されます。インスタンスレベルのパラメータは、DB パラメータグループ単位で管理されます。Aurora DB クラスター内の各インスタンスは MySQL データベースエンジンと互換性がありますが、一部の MySQL データベースエンジンパラメータは、クラスターレベルで適用する必要があり、DB クラスターパラメータグループを使用して管理されます。クラスターレベルのパラメータは、Aurora DB クラスター内のインスタンス用の DB パラメータグループには含まれていません。

引用元

それでは設定していきます。

1. インスタンス用パラメータグループの設定

「character_set_server」はインスタンス用パラメータグループに含まれます。
「DB Parameter Group」を指定して作成します。
05_create_pg
「character_set_server」を「utf8」に指定。
06_edit_pg その他の設定は変更しません。


2. クラスター用パラメータグループの設定

「character_set_database」、「character_set_filesystem」はこちらで指定します。
「DB Cluster Parameter Group」を指定して作成し、
07_cretae_pg-cluster
それぞれを「utf8」に指定します。
08_edit_pg-cluster


3. 設定を反映

パラメータを反映します。「インスタンスの操作」→「変更」で先ほど作成したパラメータを指定します。
09_set_parameter
ステータスが保留中になるので、再起動します。
10_status_parameter


データインポート

1. パラメータを確認

念のため文字コードが反映されているか確認します。

[ec2-user@xxxxx ~]$ mysql -uxxxx -pxxxx -hmydb.cluster-xxxxxxxxx.us-east-1.rds.amazonaws.com
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.6.10 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> show variables like '%char%';
+--------------------------+-----------------------------------------------+
| Variable_name            | Value                                         |
+--------------------------+-----------------------------------------------+
| character_set_client     | utf8                                          |
| character_set_connection | utf8                                          |
| character_set_database   | utf8                                          |
| character_set_filesystem | utf8                                          |
| character_set_results    | utf8                                          |
| character_set_server     | utf8                                          |
| character_set_system     | utf8                                          |
| character_sets_dir       | /rdsdbbin/oscar-5.6.10a.11.13/share/charsets/ |
+--------------------------+-----------------------------------------------+
8 rows in set (0.00 sec)

すべて「utf8」なので、大丈夫そうです。


2. インポート

最初にエクスポートしたデータ(「rm_hanse.sql」)をインポートします。

[ec2-user@xxxxx ~]$ cat rm_hanse.sql | mysql -uxxxx -pxxxx -hmydb.cluster-xxxxxxxxx.us-east-1.rds.amazonaws.com rm_hanse


DBを差し替えてredmineの動作確認

1. database.ymlを変更

host指定箇所を変更し、DBを切り替えます。
 ※ユーザー、パスワード、データベース名は変更していませんので、今回はhostのみ変更。

[ec2-user@xxxxx ~]$ sudo diff   /var/lib/redmine/config/database.yml{,_20150922-01}
4c4
<   host: mydb.cluster-xxxxxxxx.us-east-1.rds.amazonaws.com
---
>   host: mydb.xxxxxxxx.us-east-1.rds.amazonaws.com

必要に応じてhttpdプロセスを再起動します。


2. アクセス確認

これで切り替えに必要な作業は完了しました。
アクセスして確認をしてみます。
11_check_redmine
一通り動作を見ましたが、プラグイン含めて大丈夫そうです。
これでデータ移行が完了しました!

さいごに

今回はAmazon AuroraのMySQL互換を利用して、MySQL→Auroraのデータ載せ替えをRedmine環境で試してみました。特にハードルを感じる箇所はなく、初見でもアッサリ終わってしまいました。。

それでは。 ※ テストに使用したAuroraの削除を忘れずに。。