Download PDF
Download page Amazon Auroraへのコントローラデータベースのマイグレーション.
Amazon Auroraへのコントローラデータベースのマイグレーション
既存の4.4.3または最新のオンプレミスのコントローラデータベースを、Aurora DBに移行することができます。コントローラは、AWS またはデータセンターにすでに存在する場合があります。
コントローラにはすでに MySQL データベースが含まれていますが、MySQL データベースを Aurora に移行することが推奨されます。これは、Aurora では複製が可能で、高可用性と弾力性を実現できるためです。Amazon Relational Database Service(RDS)ツールでは、データベースのプロビジョニング、パッチ適用、バックアップ、復元、エラー検出、および修復が処理されます。また、Aurora DB では保存データの暗号化が可能で、同一クラスタにある自動バックアップ、スナップショット、レプリカをすべて暗号化します。
コントローラがまだ AWS に移行されていない場合は、「コントローラの移行」に従って移行します。移行完了後は、AWSの1つまたは2つのEC2インスタンス(既存のコントローラが高可用性(HA)かどうかで変わります)でコントローラが実行されており、このインスタンスでMySQLデータベースがホストされています。
データベースを起動および停止するコマンドは、Aurora DBでは機能しません。
AuroraデータベースへのMySQLの移行(4.4.3または最新バージョン)
4.4.3または最新バージョンのコントローラデータベースとして機能するよう、Amazon Auroraを作成および構成することができます。このプロセスは、mysqldumpを使用してデータベースを移行するもので、MySQLバージョン5.7を実行するコントローラでは必須です。詳細については、「mysqldump を使用したコントローラのバックアップ」を参照してください。
4.3.x以下から4.4.3にコントローラをアップグレードする場合、MySQL 5.5が使用されるため、コントローラのMySQLバージョンを把握しておく必要があります。MySQL バージョンを確認し、必要に応じてアップグレードする方法については、「バンドルされる MySQL データベースのバージョン」を参照してください。
AWS でコントローラを実行するには、cluster
パラメータグループと db
パラメータグループの設定の一部を調整する必要があることに注意してください。詳細については、「AWSへのコントローラのデプロイ」を参照してください。
MySQLをAuroraデータベースに移行するには、次の手順に従います。
liquibase-stored
プロシージャなしで移行されたコントローラをアップグレードまたは移動しようとすると、アップグレードが失敗します。これらのストアドプロシージャを、AWSで手動でもう一度作成する必要があります。
ステップ1:空のAuroraデータベースのプロビジョニング
最初に、「AWSへのコントローラのデプロイ」の説明に従って、任意のインスタンスタイプとその他のカスタム設定を使用し、Aurora の新しいインスタンスを起動する必要があります。データベースインスタンスが、ポート 3388 を使用して作成されていることを確認してください。
ステップ2:mysqldumpを使用したMySQLからのエクスポート
mysqldump
を使用する前に、まずコントローラのアプリケーションサーバが停止していることを確認してください。アプリサーバの実行中に mysqldump
を実行しようとすると、コントローラのパフォーマンスと安定性が著しく低下します。
mysqldump
を使用するには、mysqldump
実行ファイルを実行し、ルートユーザ名、パスワード、出力ファイルを渡します。
次のコマンドを実行して、実行ファイルのディレクトリに移動します。
cd <controller_home>/db/bin
次のコマンドを使用して、MySQLからデータベースをエクスポートします。
./mysqldump -u root --databases controller licensing mds_auth mds_configuration mds_entitysearch mds_infra_core mds_infra_server mds_license mds_metadata mds_metering mds_rbac mds_topology --single-transaction --compress --order-by-primary -p "<password>" > backup.sql
結果ファイルをAuroraにインポートするには、以下の行を、
/*!50013 DEFINER=`controller`@`localhost` SQL SECURITY DEFINER */
以下の行に置き換えます。
/*!50013 DEFINER=`controller`@`%` SQL SECURITY DEFINER */
ステップ3:mysqldumpを使用したAppDynamicsデータベースからのストアドプロシージャのエクスポート
次のコマンドを実行し、ストアドプロシージャをAppDynamicsデータベースからエクスポートします。
./mysqldump -u root -p --protocol=TCP -h 127.0.0.1 -P <controller_mysql_port> --no-create-db --skip-add-drop-table --no-create-info --skip-disable-keys mysql proc --result-file=/staging/path/for/mysql.proc.sql
このコマンドでは、--result-file
オプションを使用して、ストアドプロシージャが /staging/path/for/mysql.proc.sql
にダンプされます。
ステップ 4:mysql を使用した Aurora へのインポート
次のコマンドを実行して、実行ファイルのディレクトリに移動します。
cd <controller_home>/db/bin
新しいAuroraインスタンスに接続します。
./mysql -u root -p"<password>" -h <hostname>.<aws-region>.rds.amazonaws.com -P 3388 --protocol=TCP
次に、コントローラユーザーを作成して、権限を付与します。
CREATE USER 'controller'@'%' IDENTIFIED BY 'controller'; GRANT USAGE ON *.* TO 'controller'@'%'; GRANT ALL PRIVILEGES ON `controller`.* TO 'controller'@'%'; GRANT ALL PRIVILEGES ON `licensing`.* TO 'controller'@'%'; GRANT ALL PRIVILEGES ON `mds_auth`.* TO 'controller'@'%'; GRANT ALL PRIVILEGES ON `mds_configuration`.* TO 'controller'@'%'; GRANT ALL PRIVILEGES ON `mds_entitysearch`.* TO 'controller'@'%'; GRANT ALL PRIVILEGES ON `mds_infra_core`.* TO 'controller'@'%'; GRANT ALL PRIVILEGES ON `mds_infra_server`.* TO 'controller'@'%'; GRANT ALL PRIVILEGES ON `mds_license`.* TO 'controller'@'%'; GRANT ALL PRIVILEGES ON `mds_metadata`.* TO 'controller'@'%'; GRANT ALL PRIVILEGES ON `mds_metering`.* TO 'controller'@'%'; GRANT ALL PRIVILEGES ON `mds_rbac`.* TO 'controller'@'%'; GRANT ALL PRIVILEGES ON `mds_topology`.* TO 'controller'@'%'; FLUSH PRIVILEGES;
注意
Auroraデータベースは、権限のないソースからのアクセスを防ぐため、セキュリティグループによって保護されています。
データベースバックアップをインポートします。
./mysql -u controller -P 3388 -H <hostname>.<aws-region>.rds.amazonaws.com -p "controller" --protocol=TCP < backup.sql
ストアドプロシージャをインポートします。
インポートは、管理者またはルートユーザが行う必要があります。./mysql -u admin -P 3388 -H <hostname>.<aws-region>.rds.amazonaws.com -p "controller" --protocol=TCP < /staging/path/for/mysql.proc.sql
ステップ5:Auroraデータベースを使用するためのコントローラの構成
- Aurora DB を使用するように、コントローラの構成を変更します。
ファイル <
controller_home
>/appserver/
mq/lib/props/broker/default.properties
で、プロパティimq.persist.jdbc.mysql.property.url
を Aurora データベースに設定します。imq.persist.jdbc.mysql.property.url=jdbc\:mysql\://<aurora-db>.<aws-region>.rds.amazonaws.com\:3388/controller
ファイル <
controller_home
>/appserver/glassfish/domains/domain1/config/domain
.xml で、プロパティserverName
を Aurora データベースの値に設定します。<property name="serverName" value="<aurora-db>.<aws-region>.rds.amazonaws.com"></property> <property name="portNumber" value="3388"></property> <property name="url" value="jdbc\:mysql\://<aurora-db>.<aws-region>.rds.amazonaws.com\:3388/controller?nullNamePatternMatchesAll=true&allowLoadLocalInfile=true&cachePrepStmts=true&prepStmtCacheSize=25&dumpQueriesOnException=true&rewriteBatchedStatements=true&useSSL=false&maxAllowedPacket=104857600"/>
同じファイルで、
javaagent
オプションの直前に次の行を追加します。<jvm-options>-Dappdynamics.controller.use.global.datadir.query.for.disk.space.check=false</jvm-options>
ファイル
<controller_home>/bin/controller_maintenance.xml
で、プロパティdb-host
を Aurora データベースの値に設定します。<property name="db-host" value="<aurora-db>.<aws-region>.rds.amazonaws.com"/> <property name="db-port" value="3388"/>
ファイル <
controller_home
>/bin/
setup.xml で、プロパティdb-host
を Aurora データベースの値に設定します。<property name="db-host"value="<aurora-db>.<aws-region>.rds.amazonaws.com"/> <property name="db-port" value="3388"/>
- 以下のように、<
controller_home
>/appserver/glassfish/domains/domain1
から次のキャッシュフォルダを削除します。rm -rf
osgi-cache/
rm -rf generated/
Linux ユーザーの場合、Enterprise Console GUIまたは 以下のコマンドでコントローラーを起動します。
platform-admin.sh start-controller-appserver
Windows ユーザーの場合、Enterprise Console UI または Windows サービスでコントローラーを起動します。コントローラが正常に実行されていることを確認します。ローカル MySQL データベースは、シャットダウンしている必要があります。また、移行されたデータは Aurora に表示されます。これは、コントローラ UI から確認することができます。
コントローラ データベース ルート ユーザ パスワードのリセット
コントローラ データベース ルート ユーザ パスワードをリセットするには、次の手順を実行します。
- 管理者として RDS インスタンスにログインします。
./mysql -u admin -h <rds-aurora-endpoint> -P 3388 -p
- MySQL を使用して、以下のコマンドを実行します。
- コントローラデータベースを指定するには、次のように入力します。
use mysql;
- MySQL の権限テーブルをリロードするには、次のように入力します。
FLUSH PRIVILEGES;
- MySQL のバージョンを確認するには、
select version();
と入力します。 - MySQL バージョン 5.5 を使用している場合、root ユーザの新しいパスワードを設定するには、
update mysql.user set password=password('<new-password-here>') where user like 'root%';
と入力します。 - MySQL バージョン 5.7 を使用している場合、root ユーザの新しいパスワードを設定するには、
update mysql.user set authentication_string=password('<new-password-here>') where user like 'root%';
と入力します。 - MySQL の権限テーブルをリロードするには、次のように入力します。
FLUSH PRIVILEGES;
- MySQL を終了するには、次のように入力します。
quit
- コントローラデータベースを指定するには、次のように入力します。
コントローラ データベース ルート ユーザ パスワードの変更
デフォルトでは、AppDynamics デプロイで使用される Aurora データベースのコントローラユーザのパスワードは controller
です。
コントローラ データベース ルート ユーザ パスワードを変更するには、次の手順を実行します。
- root として RDS インスタンスにログインします。
./mysql -u root -h <rds-aurora-endpoint> -P 3388 -p
- MySQL を使用して、以下のコマンドを実行します。
- コントローラデータベースを指定するには、
use mysql;
と入力します。 - MySQL の権限テーブルをリロードするには、次のように入力します。
FLUSH PRIVILEGES;
- MySQL のバージョンを確認するには、
select version();
と入力します。 - MySQL バージョン 5.5 を使用している場合、root ユーザの新しいパスワードを設定するには、
update mysql.user set password=password('<new-password-here>') where user like 'controller%';
と入力します。 - MySQL バージョン 5.7 を使用している場合、root ユーザの新しいパスワードを設定するには、
update mysql.user set authentication_string=password('<new-password-here>') where user like 'controller%';
と入力します。 - MySQL の権限テーブルをリロードするには、次のように入力します。
FLUSH PRIVILEGES;
- MySQL を終了するには、
quit
と入力します。
- コントローラデータベースを指定するには、
controller-db-password
エイリアスを、Glassfish の新しいコントローラ DB パスワードで更新します。cd <controller_home>/appserver/glassfish/bin ./asadmin update-password-alias controller-db-password
CODEコントローラ AppServer を再起動して、変更を有効にします。
cd <controller_home>/bin ./controller.sh stop-appserver ./controller.sh start-appserver
CODEasadmin で変更を確認します。
cd <controller_home>/appserver/glassfish/bin ./asadmin ping-connection-pool controller_mysql_pool
CODE