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

2015.09.23

こんにちは。半瀬です。

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の削除を忘れずに。。