既存の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. ステップ1:空のAuroraデータベースのプロビジョニング

  2. ステップ2:mysqldumpを使用したMySQLからのエクスポート

  3. ステップ3:mysqldumpを使用したAppDynamicsデータベースからのストアドプロシージャのエクスポート

  4. ステップ 4:mysql を使用した Aurora へのインポート

  5. ステップ5:Auroraデータベースを使用するためのコントローラの構成

ステップ1:空のAuroraデータベースのプロビジョニング

最初に、「AWSへのコントローラのデプロイ」の説明に従って、任意のインスタンスタイプとその他のカスタム設定を使用し、Aurora の新しいインスタンスを起動する必要があります。データベースインスタンスが、ポート 3388 を使用して作成されていることを確認してください。

ステップ2:mysqldumpを使用したMySQLからのエクスポート

mysqldump を使用する前に、まずコントローラのアプリケーションサーバが停止していることを確認してください。アプリサーバの実行中に mysqldump を実行しようとすると、コントローラのパフォーマンスと安定性が著しく低下します。

mysqldump を使用するには、mysqldump 実行ファイルを実行し、ルートユーザ名、パスワード、出力ファイルを渡します。

  1. 次のコマンドを実行して、実行ファイルのディレクトリに移動します。

    cd <controller_home>/db/bin 
  2. 次のコマンドを使用して、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
  3. 結果ファイルを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
CODE

このコマンドでは、--result-file オプションを使用して、ストアドプロシージャが /staging/path/for/mysql.proc.sql にダンプされます。

ステップ 4:mysql を使用した Aurora へのインポート

  1. 次のコマンドを実行して、実行ファイルのディレクトリに移動します。

    cd <controller_home>/db/bin 
  2. 新しいAuroraインスタンスに接続します。

    ./mysql -u root -p"<password>" -h <hostname>.<aws-region>.rds.amazonaws.com -P 3388 --protocol=TCP
  3. 次に、コントローラユーザーを作成して、権限を付与します。

    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データベースは、権限のないソースからのアクセスを防ぐため、セキュリティグループによって保護されています。

  4. データベースバックアップをインポートします。

    ./mysql -u controller -P 3388 -H <hostname>.<aws-region>.rds.amazonaws.com -p "controller" --protocol=TCP < backup.sql
  5. ストアドプロシージャをインポートします。

    インポートは、管理者またはルートユーザが行う必要があります。
    ./mysql -u admin -P 3388 -H <hostname>.<aws-region>.rds.amazonaws.com -p "controller" --protocol=TCP < /staging/path/for/mysql.proc.sql

ステップ5:Auroraデータベースを使用するためのコントローラの構成

  1. コントローラで、jetty/etc/webapp-common.xml ファイルに Aurora DB パラメータを設定します。

      <Call name="setProperty">
              <Arg>database.url</Arg>
              <Arg>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</Arg>
            </Call>
            <Call name="setProperty">
              <Arg>database.servername</Arg>
              <Arg>[aurora-db].[aws-region].rds.amazonaws.com</Arg>
            </Call>
            <Call name="setProperty">
              <Arg>database.port</Arg>
              <Arg>[aurora-db-port]</Arg>
            </Call> 
    XML
  2. ファイル <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="[aurora-db-port]"/>
  3. ファイル <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="[aurora-db-port]"/>
  4. コントローラサービスがインストールされた状態で、ルートでコントローラを起動します。


    service controller start
  5. コントローラが正常に実行されていることを確認します。ローカル MySQL データベースは、シャットダウンしている必要があります。また、移行されたデータは Aurora に表示されます。これは、コントローラ UI から確認することができます。 

コントローラ データベース ルート ユーザ パスワードのリセット

コントローラ データベース ルート ユーザ パスワードをリセットするには、次の手順を実行します。

  1. 管理者として RDS インスタンスにログインします。
    1. ./mysql -u admin -h <rds-aurora-endpoint> -P 3388 -p
  2. MySQL を使用して、以下のコマンドを実行します。
    1. コントローラデータベースを指定するには、次のように入力します。use mysql;
    2. MySQL の権限テーブルをリロードするには、次のように入力します。FLUSH PRIVILEGES;
    3. MySQL のバージョンを確認するには、select version(); と入力します。
    4. MySQL バージョン 5.5 を使用している場合、root ユーザの新しいパスワードを設定するには、update mysql.user set password=password('<new-password-here>') where user like 'root%'; と入力します。
    5. MySQL バージョン 5.7 を使用している場合、root ユーザの新しいパスワードを設定するには、update mysql.user set authentication_string=password('<new-password-here>') where user like 'root%'; と入力します。
    6. MySQL の権限テーブルをリロードするには、次のように入力します。FLUSH PRIVILEGES;
    7. MySQL を終了するには、次のように入力します。quit

コントローラ データベース ルート ユーザ パスワードの変更

デフォルトでは、AppDynamics デプロイで使用される Aurora データベースのコントローラユーザのパスワードは controller です。

コントローラ データベース ルート ユーザ パスワードを変更するには、次の手順を実行します。

  1. root として RDS インスタンスにログインします。
    1. ./mysql -u root -h <rds-aurora-endpoint> -P 3388 -p
  2. MySQL を使用して、以下のコマンドを実行します。
    1. コントローラデータベースを指定するには、use mysql; と入力します。
    2. MySQL の権限テーブルをリロードするには、次のように入力します。FLUSH PRIVILEGES;
    3. MySQL のバージョンを確認するには、select version(); と入力します。
    4. MySQL バージョン 5.5 を使用している場合、root ユーザの新しいパスワードを設定するには、update mysql.user set password=password('<new-password-here>') where user like 'controller%'; と入力します。
    5. MySQL バージョン 5.7 を使用している場合、root ユーザの新しいパスワードを設定するには、 update mysql.user set authentication_string=password('<new-password-here>') where user like 'controller%'; と入力します。
    6. MySQL の権限テーブルをリロードするには、次のように入力します。FLUSH PRIVILEGES;
    7. MySQL を終了するには、 quit と入力します。
  3.  controller-db-password エイリアスを、Glassfish の新しいコントローラ DB パスワードで更新します。

    cd <controller_home>/appserver/glassfish/bin
    ./asadmin update-password-alias controller-db-password
    CODE
  4. コントローラ AppServer を再起動して、変更を有効にします。

    cd <controller_home>/bin
    ./controller.sh stop-appserver
    ./controller.sh start-appserver
    CODE
  5. asadmin で変更を確認します。

    cd <controller_home>/appserver/glassfish/bin
    ./asadmin ping-connection-pool controller_mysql_pool
    CODE