【Amazon Aurora】MySQLからのデータ移行手順例(Redmine環境
こんにちは。半瀬です。
Amazon Auroraを触ってみたくて、自前のテストredmine環境をMySQLからAuroraに載せ替えてみました。今回はその手順メモです。
やりたいこと
MySQLで動いているRedmineをAmazon Auroraに移し替えて今まで通り使う。
Amazon RDS での Aurora Amazon Aurora は、フルマネージド型の MySQL と互換性のあるリレーショナルデーターベースエンジンであり、ハイエンドな商用データベースの可用性とスピード、オープンソースデータベースの簡素性とコスト効率性を兼ね備えています。既存のアプリケーションをほとんど変更せずに、MySQL に比べ、最大 5 倍のパフォーマンスを実現します。
ということなので、データを抜いて、箱作って、データを入れて、ちょこちょこっとやればそのまま起動できるはず。
対象の構成
「us-east-1/米国東部(バージニア北部)」で準備 (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を選択
2. 設定を入力
いつものインスタンスのクラス、ユーザー、パスワード、の設定の流れがあります。 (DBクラスは「db.r3.large」からですので、テスト用途の場合は終わったら削除を忘れずに。
識別子やデータベース名はなんでもいいですが、既存に合わせて作成しておきます。
パラメータグループの指定
既存redmineのデータベースでは、日本語データを入れるために文字コードを指定しているので、パラメータグループの編集が必要です。Auroraでは、クラスタレベルで全体に適用されるパラメータとインスタンス個別で指定可能なパラメータが用意されています。
Amazon Aurora DB クラスターの管理に使用するパラメータの中には、クラスター全体に適用されるパラメータと、DB クラスター内の特定の DB インスタンスのみに適用されるパラメータがあります。
クラスターレベルのパラメータは、DB クラスターパラメータグループ単位で管理されます。インスタンスレベルのパラメータは、DB パラメータグループ単位で管理されます。Aurora DB クラスター内の各インスタンスは MySQL データベースエンジンと互換性がありますが、一部の MySQL データベースエンジンパラメータは、クラスターレベルで適用する必要があり、DB クラスターパラメータグループを使用して管理されます。クラスターレベルのパラメータは、Aurora DB クラスター内のインスタンス用の DB パラメータグループには含まれていません。
それでは設定していきます。
1. インスタンス用パラメータグループの設定
「character_set_server」はインスタンス用パラメータグループに含まれます。 「DB Parameter Group」を指定して作成します。
「character_set_server」を「utf8」に指定。 その他の設定は変更しません。
2. クラスター用パラメータグループの設定
「character_set_database」、「character_set_filesystem」はこちらで指定します。 「DB Cluster Parameter Group」を指定して作成し、
3. 設定を反映
パラメータを反映します。「インスタンスの操作」→「変更」で先ほど作成したパラメータを指定します。
データインポート
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. アクセス確認
これで切り替えに必要な作業は完了しました。 アクセスして確認をしてみます。 一通り動作を見ましたが、プラグイン含めて大丈夫そうです。 これでデータ移行が完了しました!
さいごに
今回はAmazon AuroraのMySQL互換を利用して、MySQL→Auroraのデータ載せ替えをRedmine環境で試してみました。特にハードルを感じる箇所はなく、初見でもアッサリ終わってしまいました。。
それでは。 ※ テストに使用したAuroraの削除を忘れずに。。