既存の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 を使用した Cisco 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 を使用した Splunk AppDynamics データベースからのストアドプロシージャのエクスポート

次のコマンドを実行し、ストアドプロシージャを Splunk 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. Linux ユーザーの場合、Enterprise Console GUIまたは 以下のコマンドでコントローラーを起動します。

    platform-admin.sh start-controller-appserver

    Windows ユーザーの場合、Enterprise Console UI または Windows サービスでコントローラーを起動します。
  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

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

デフォルトでは、Splunk 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