メニュー
Amazon Relational Database Service
ユーザーガイド (API Version 2014-10-31)

わずかなダウンタイムでの Amazon RDS MySQL または MariaDB DB インスタンスへのデータのインポート

ライブアプリケーションをサポートする外部 MySQL または MariaDB データベースから Amazon RDS MySQL または MariaDB DB インスタンスにデータをインポートする場合、次の手順に従ってアプリケーションの可用性への影響を最小限に抑えることができます。この手順は、ネットワーク経由で AWS に渡されるデータの量を減らすことによってインポートのコストを削減できるため、非常に大きなデータベースを操作する場合にも役立ちます。

この手順では、Amazon EC2 インスタンスにデータベースのデータのコピーを送信し、そのデータを新しい Amazon RDS DB インスタンスにインポートします。次に、レプリケーションを使用して、Amazon RDS DB インスタンスをライブ外部インスタンスの最新の状態にした後、アプリケーションを Amazon RDS DB インスタンスにリダイレクトします。外部インスタンスが MariaDB 10.0.2 以降で、ターゲットのインスタンスが Amazon RDS MariaDB である場合は、グローバルトランザクション識別子 (GTID) に基づいた MariaDB のレプリケーションを設定します。それ以外の場合は、バイナリログの調整に基づいてレプリケーションを設定します。 外部データベースがサポートしている場合は、クラッシュ安全性機能が強化されていることより、GTID ベースのレプリケーションが推奨されます。 詳細については、MariaDB ドキュメントの「グローバルトランザクション ID」を参照してください。

注記

潜在的なレプリケーションの問題のため、バージョン 5.1 より前のバージョンの MySQL を使用するソース MySQL データベースでは、この手順を使用しないことをお勧めします。詳細については、MySQL のドキュメントの「MySQL のバージョン間のレプリケーションの互換性」を参照してください。

既存のデータベースのコピーの作成

最小限のダウンタイムで、大量のデータを Amazon RDS MySQL または MariaDB DB インスタンスに移行するプロセスには、最初のステップとして、ソースデータのコピーを作成します。

SQL 形式または区切り文字付きテキスト形式でデータベースのバックアップを作成するには、mysqldump ユーティリティを使用できます。非運用環境で各形式のテストを実行して、どちらの方法が mysqldump の実行時間が短いかを確認します。

また、区切り文字付きテキスト形式を使用することによってもたらされるメリットに対して、mysqldump のパフォーマンスの重み付けをする必要があります。区切り文字付きテキスト形式を使用したバックアップでは、ダンプされる各テーブルについてタブ区切りテキストファイルを作成されます。LOAD DATA LOCAL INFILE コマンドを使用してこれらのファイルを並行してロードできるため、データベースのインポートに必要な時間を短縮できます。mysqldump 形式を選択してデータをロードする方法の詳細については、MySQL のドキュメントの「バックアップでの mysqldump の使用」を参照してください。

バックアップ操作を開始する前に、Amazon RDS にコピーする MySQL または MariaDB データベースで、レプリケーションオプションを設定する必要があります。レプリケーションオプションには、バイナリログ作成の有効化や一意のサーバー ID の設定が含まれます。これらのオプションを設定すると、サーバーはデータベーストランザクションのログ作成を開始し、このプロセスの後でこのサーバーをレプリケーションマスターにするために準備します。

注記

データベースは、レプリケーションオプションを設定するために停止し、バックアップコピーの作成中は読み取り専用モードにする必要があるため、これらのオペレーションのメンテナンス時間をスケジュールする必要があります。

レプリケーションオプションを設定するには

  1. コマンドラインシェルから、mysql サービスを停止します。

    Copy
    sudo service mysqld stop
  2. my.cnf ファイルを編集します (このファイルは通常 /etc にあります)。

    Copy
    sudo vi /etc/my.cnf

    log_bin オプションと server_id オプションを [mysqld] に追加します。log_bin オプションは、バイナリログファイルのファイル名識別子を提供します。server_id オプションは、マスターとレプリカの関係のサーバーに一意の識別子を提供します。

    次の例は、my.cnf ファイルの更新された [mysqld] セクションを示しています。

    Copy
    [mysqld] log-bin=mysql-bin server-id=1

    詳細については、MySQL のドキュメントの「レプリケーションマスター構成の設定」を参照してください。

  3. mysql サービスを開始します。

    Copy
    sudo service mysqld start

既存のデータベースのバックアップコピーを作成するには

  1. mysqldump ユーティリティを使用し、SQL 形式または区切り文字付きテキスト形式を指定して、データのバックアップを作成します。

    サーバー間のレプリケーションを開始するために使用できるバックアップファイルを作成するために、--master-data=2 を指定する必要があります。詳細については、mysqldump のドキュメントを参照してください。

    パフォーマンスを向上させ、データ整合性を確保するために、mysqldump--order-by-primary オプションと --single-transaction オプションを使用します。

    MySQL システムデータベースをバックアップに含めないようにするには、mysqldump--all-databases オプションを使用しないでください。詳細については、MySQL のドキュメントの「mysqldump を使用したダンプスナップショットの作成」を参照してください。

    バックアップファイルが作成されるディレクトリを書き込み可能にするために、必要に応じて chmod を使用します。

    • SQL 出力を作成するには、次のコマンドを使用します。

      Linux、OS X、Unix の場合:

      Copy
      sudo mysqldump \ --databases <database_name> \ --master-data=2 \ --single-transaction \ --order-by-primary \ -r backup.sql \ -u <local_user> \ -p <password>

      Windows の場合:

      Copy
      sudo mysqldump ^ --databases <database_name> ^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -r backup.sql ^ -u <local_user> ^ -p <password>
    • 区切り文字付きテキスト出力を作成するには、次のコマンドを使用します。

      Linux、OS X、Unix の場合:

      Copy
      sudo mysqldump \ --tab=<target_directory> \ --fields-terminated-by ',' \ --fields-enclosed-by '"' \ --lines-terminated-by 0x0d0a \ <database_name> \ --master-data=2 \ --single-transaction \ --order-by-primary \ -p <password>

      Windows の場合:

      Copy
      sudo mysqldump ^ --tab=<target_directory> ^ --fields-terminated-by ',' ^ --fields-enclosed-by '"' ^ --lines-terminated-by 0x0d0a ^ <database_name> ^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -p <password>

      注記

      Amazon RDS データベースで、ストアドプロシージャ、トリガー、関数、イベントを手動で作成する必要があります。コピーするデータベースにこれらのオブジェクトのいずれかが含まれる場合は、mysqldump コマンドに引数 --routines=0 --triggers=0 --events=0 を含めることによって、mysqldump の実行時にこれらのオブジェクトを除外します。

      区切り文字付きテキスト形式を使用する場合、mysqldump を実行すると、CHANGE MASTER TO コメントが返されます。 このコメントには、マスターログのファイル名と場所が含まれます。外部インスタンスが MariaDB バージョン 10.0.2 以降以外の場合は、MASTER_LOG_FILE と MASTER_LOG_POS の値を書き留めます。レプリケーションを設定するときにこの値が必要となります。

      Copy
      -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;

      SQL 形式を使用する場合は、「外部データベースと新しい Amazon RDS DB インスタンスのレプリケーション」のステップ 4 の手順でマスターログファイル名と位置が取得できます。 外部インスタンスが MariaDB バージョン 10.0.2 以降の場合は、次のステップで GTID を取得できます。

  2. 使用している外部インスタンスが MariaDB バージョン 10.0.2 以降である場合は、GTID ベースのレプリケーションを使用します。 外部 MariaDB インスタンスで SHOW MASTER STATUS を実行してバイナリログファイル名と場所を取得し、また、外部 MariaDB インスタンス上でも BINLOG_GTID_POS を実行してそれらを GTID に変換します。

    Copy
    SELECT BINLOG_GTID_POS('<binary log file name>', <binary log file position>);

    返された GTID を書き留めます。これはレプリケーションを設定する際に必要となります。

  3. Amazon RDS DB インスタンスにデータをコピーするために必要なネットワークリソースの量を減らすために、コピーされたデータを圧縮します。バックアップファイルのサイズを書き留めておきます。この情報は、作成する Amazon EC2 インスタンスの大きさを決定するときに必要です。作業が終了したら、GZIP または任意の圧縮ユーティリティを使用してバックアップファイルを圧縮します。

    • SQL 出力を圧縮するには、次のコマンドを使用します。

      Copy
      gzip backup.sql
    • 区切り文字付きテキスト出力を圧縮するには、次のコマンドを使用します。

      Copy
      tar -zcvf backup.tar.gz <target_directory>

Amazon EC2 インスタンスを作成し、圧縮したデータベースをコピーします。

圧縮したデータベースのバックアップファイルを Amazon EC2 インスタンスにコピーする場合、データベースインスタンス間で非圧縮データを直接コピーするよりも必要なネットワークリソースは少なくなります。データを Amazon EC2 にコピーしたら、そこから Amazon RDS MySQL または MariaDB DB インスタンスに直接コピーできます。ネットワークリソースのコストを節約するには、Amazon EC2 インスタンスは Amazon RDS DB インスタンスと同じリージョンに存在している必要があることに注意してください。 Amazon EC2 インスタンスを Amazon RDS DB インスタンスと同じリージョンに配置することで、インポート時のネットワークレイテンシーも低減されます。

Amazon EC2 インスタンスを作成し、データをコピーするには

  1. RDS DB インスタンスを作成して MySQL データベースエンジンを実行するリージョンに、VPC、VPC セキュリティグループ、および VPC サブネットを作成します。VPC セキュリティグループのインバウンドルールで、アプリケーションが AWS に接続するために必要な IP アドレスを許可していることを確認します。これには、IP アドレスの範囲 (203.0.113.0/24 など) や別の VPC セキュリティグループを使用できます。 Amazon VPC マネジメントコンソールを使用して、VPC、サブネット、セキュリティグループを作成および管理できます。詳細については、『Amazon Virtual Private Cloud 入門ガイド』の「Amazon VPC の使用開始」を参照してください。

    注記

    古い AWS アカウントでは、Amazon EC2-Classic モードでインスタンスを起動することもできます。この場合、Amazon RDS インスタンスの DB セキュリティグループのインバウンドルールで、Amazon EC2 のプライベート IP アドレスを使用した EC2-Classic インスタンスへのアクセスが許可されていることを確認します。詳細については、「DB セキュリティグループを操作する」を参照してください。

  2. Amazon EC2 マネジメントコンソールを開き、Amazon EC2 インスタンスと Amazon RDS DB インスタンスの両方が含まれるリージョンを選択します。ステップ 1 で作成した VPC、サブネット、セキュリティグループを使用して Amazon EC2 インスタンスを起動します。非圧縮の場合のデータベースバックアップファイルに十分なストレージを備えたインスタンスタイプを選択していることを確認します。Amazon EC2 インスタンスの詳細については、『Linux 用 Amazon Elastic Compute Cloud ユーザーガイド』の「Amazon EC2 Linux インスタンスの使用開始」を参照してください。

  3. Amazon EC2 インスタンスから Amazon RDS DB インスタンスに接続するには、VPC セキュリティグループを編集して、EC2 インスタンスのプライベート IP アドレスを指定するインバウンドルールを追加する必要があります。このプライベート IP アドレスは、EC2 コンソールウィンドウの [Instance] ペインの [Details] タブで確認できます。VPC セキュリティグループを編集してインバウンドルールを追加するには、EC2 コンソールのナビゲーションペインの [Security Groups] を選択し、セキュリティグループを選択してから、EC2 インスタンスのプライベート IP アドレスを指定して MySQL/Aurora のインバウンドルールを追加します。VPC セキュリティグループにインバウンドルールを追加する方法については、「ルールを追加および削除する」を参照してください。

  4. ローカルシステムから Amazon EC2 インスタンスに、圧縮されたデータベースバックアップファイルをコピーします。必要に応じて chmod を使用し、Amazon EC2 インスタンスのターゲットディレクトリに対して書き込みアクセス権限があることを確認します。scp または SSH クライアントを使用してファイルをコピーできます。次に例を示します。

    Copy
    $ scp -r -i <key pair>.pem backup.sql.gz ec2-user@<EC2 DNS>:/<target_directory>/backup.sql.gz

    重要

    機密データは、安全なネットワーク転送プロトコルを使用してコピーしてください。

  5. Amazon EC2 インスタンスに接続し、次のコマンドを使用して最新のアップデートと MySQL クライアントツールをインストールします。

    Copy
    sudo yum update -y sudo yum install mysql-server -y

    詳細については、『Linux 用 Amazon Elastic Compute Cloud ユーザーガイド』の「インスタンスへの接続」を参照してください。

  6. Amazon EC2 インスタンスに接続されている間に、データベースバックアップファイルを解凍します。(例:

    • SQL 出力を解凍するには、次のコマンドを使用します。

      Copy
      gzip backup.sql.gz -d
    • 区切り文字付きテキスト出力を解凍するには、次のコマンドを使用します。

      Copy
      tar xzvf backup.tar.gz

Amazon RDS MySQL または MariaDB DB インスタンスの作成と Amazon EC2 インスタンスからのデータのインポート

Amazon EC2 インスタンスと同じリージョンで Amazon RDS MySQL または MariaDB DB インスタンスを作成することによって、インターネット経由でインポートするよりも速く、Amazon EC2 からデータベースのバックアップファイルをインポートできます。

Amazon RDS MySQL または MariaDB DB インスタンスを作成し、データをインポートするには

  1. この Amazon RDS DB インスタンスについて予想されるワークロードをサポートするのに必要な DB インスタンスクラスとストレージ領域の容量を決定します。このプロセスでは、データロード手順に十分な領域と処理能力および実稼働ワークロードの処理に必要なものを決定します。ソース MySQL または MariaDB データベースのサイズとリソースに基づいてこれを見積もることができます。詳細については、「DB インスタンスクラス」を参照してください。

  2. ワークロードをサポートするために Amazon RDS のプロビジョニングされた 1 秒あたりの入力/出力オペレーション数 (プロビジョンド IOPS) が必要になるかどうかを確認します。プロビジョンド IOPS ストレージは、I/O 集約型であるオンライントランザクション処理 (OLTP) ワークロードに対して高速なスループットを提供します。詳細については、「Amazon RDS Provisioned IOPS ストレージによるパフォーマンスの向上」を参照してください。

  3. Amazon RDS コンソールを開きます。右上隅で、Amazon EC2 インスタンスが含まれているリージョンを選択します。

  4. [Launch a DB Instance] を選択し、続いて DB インスタンスのオプションを選択する手順を実行します。

    1. [エンジンの選択] ページで、必要に応じて、[MySQL] または [MariaDB] を選択します。

    2. [Do you plan to use this database for production purposes?] ページで [いいえ] を選択し、マルチ AZ 配置およびプロビジョニングした IOPS ストレージの設定を省略します。

    3. [Specify DB Details] ページの [Instance Specifications] セクションで、適切であると判断した DB インスタンスクラスと割り当てるストレージサイズを指定します。[マルチ AZ 配置] で [いいえ] を選択します。 ステップ 2 での決定に従って、[Provisioned IOPS] を使用するかどうかを指定します。[DB Engine Version] では、ソースの MySQL インスタンスと互換性のあるバージョンを、次のように選択します。

      • ソースインスタンスが MySQL 5.1.x の場合、Amazon RDS DB インスタンスは MySQL 5.5.x である必要があります。

      • ソースインスタンスが MySQL 5.5.x の場合、Amazon RDS DB インスタンスは MySQL 5.5.x または 5.6.23 以降である必要があります。

      • ソースインスタンスが MySQL 5.6.x の場合、Amazon RDS DB インスタンスは MySQL 5.6.x または MariaDB である必要があります。

      • ソースインスタンスが MySQL 5.7.x の場合、Amazon RDS DB インスタンスは MySQL 5.7.x、5.6.x、または MariaDB である必要があります。

      • ソースインスタンスが MariaDB 5.1、5.2、または 5.3 の場合、Amazon RDSDB インスタンスは、MySQL. 5.1.x である必要があります。

      • ソースインスタンスが MariaDB 5.5 以降の場合、Amazon RDS DB インスタンスには MariaDB である必要があります。

      重要

      バージョン 5.6.4 以前のバージョンのソース MySQL 5.6.x インスタンスを実行する場合、またはソース MySQL 5.6.x インスタンスがバージョン 5.6.4 以前のバージョンからアップグレードされた場合、バージョン 5.6.23 以降を実行する Amazon RDS MySQL DB インスタンスを作成する必要があります。

      このセクションの残りのすべてのボックスのデフォルト値をそのまま使用します。

      [Settings] セクションで、必要なデータベースとユーザーの情報を指定します。完了したら、[Next] を選択します。

    4. [Configure Advanced Settings] ページの [Network & Security] セクションで、Amazon EC2 インスタンスと同じ VPC および VPC セキュリティグループを選択します。これにより、Amazon EC2 インスタンスと Amazon RDS インスタンスはネットワーク上で相互に表示されることが確認できます。[Publicly Accessible] を [Yes] に設定します。 DB インスタンスは、このトピックで後述するように、ソースデータベースでレプリケーションをセットアップするためにパブリックにアクセス可能になっている必要があります。このセクションの残りのすべてのボックスのデフォルト値をそのまま使用します。

      [Database Options] セクションで、データベース名を指定します。このセクションの残りのすべてのボックスのデフォルト値をそのまま使用します。

      [Backup] セクションで、バックアップ保持期間を 0 に設定します。このセクションの残りのすべてのボックスのデフォルト値をそのまま使用します。

      [Maintenance] セクションで、すべてのボックスのデフォルト値を使用します。完了したら、[Launch Instance] を選択します。

    データベースのバックアップのインポートが完了するまで、複数のアベイラビリティゾーン、バックアップ保持、リードレプリカを設定しないでください。インポートが完了したら、本稼働インスタンスでの必要に応じて、マルチ AZ とバックアップ保持を設定します。Amazon RDS MySQL DB インスタンスの作成の手順については、「MySQL データベースエンジンを実行する DB インスタンスの作成」を参照してください。Amazon RDS MariaDB DB インスタンスの作成の手順については、「MariaDB データベースエンジンを実行する DB インスタンスを作成する」を参照してください。

  5. Amazon RDS DB インスタンスのデフォルトの設定オプションを確認します。Amazon RDS マネジメントコンソールの左のナビゲーションペインで、[パラメータグループ] を選択し、続いて [default.mysqlx.x] または [default.mariadbx.x] パラメータグループの横にある虫眼鏡アイコンを選択します。 このパラメータグループに必要な設定オプションがない場合は、必要なオプションが含まれている別のパラメータグループを検索するか新しいパラメータグループを作成します。パラメータグループの作成の詳細については、「DB パラメータグループを使用する」を参照してください。デフォルト以外のパラメータグループを使用する場合は、そのパラメータグループを Amazon RDS DB インスタンスに関連付けます。詳細については、「MySQL データベースエンジンを実行する DB インスタンスの変更」または「MariaDB データベースエンジンを実行する DB インスタンスを変更する」を参照してください。

  6. マスターユーザーとして新しい Amazon RDS DB インスタンスに接続し、インスタンスにアクセスする必要がある管理者、アプリケーション、およびサービスをサポートするために必要なユーザーを作成します。 Amazon RDS DB インスタンスのホスト名は、このインスタンスの [Endpoint] の値からポート番号を除いた値 (例: mysampledb.claxc2oy9ak1.us-west-2.rds.amazonaws.com) です。エンドポイントの値は、Amazon RDS マネジメントコンソールのインスタンスの詳細で確認できます。

  7. Amazon EC2 インスタンスに接続します。詳細については、『Linux 用 Amazon Elastic Compute Cloud ユーザーガイド』の「インスタンスへの接続」を参照してください。

  8. Amazon EC2 インスタンスから mysql コマンドを使用して、リモートホストとして Amazon RDS DB インスタンスに接続します。次に例を示します。

    Copy
    mysql -h <host_name> -P 3306 -u <db_master_user> -p

    ホスト名は Amazon RDS DB インスタンスのエンドポイントの DNS 名です。

  9. mysql プロンプトで、source コマンドを実行し、データベースダンプファイルの名前を渡して、Amazon RDS DB インスタンスにデータをロードします。

    • SQL 形式の場合は、次のコマンドを使用します。

      Copy
      mysql> source backup.sql;
    • 区切り文字付きテキスト形式の場合は、最初にデータベースを作成します (Amazon RDS DB インスタンスをセットアップするときに作成したデフォルトのデータベースではない場合)。

      Copy
      $ mysql> create database <database_name>; $ mysql> use <database_name>;

      次にテーブルを作成します。

      Copy
      $ mysql> source <table1>.sql $ mysql> source <table2>.sql etc…

      次にデータをインポートします。

      Copy
      $ mysql> LOAD DATA LOCAL INFILE 'table1.txt' INTO TABLE table1 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a'; $ mysql> LOAD DATA LOCAL INFILE 'table2.txt' INTO TABLE table2 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a'; etc…

      パフォーマンスを向上させるために、複数の接続からこれらのオペレーションを並列実行して、すべてのテーブルを同時に作成およびロードすることができます。

      注記

      最初にテーブルをダンプしたときに、mysqldump でデータ形式オプションを使用した場合は、データファイルの内容が適切に解釈されるように mysqlimport または LOAD DATA LOCAL INFILE で同じオプションを使用する必要があります。

  10. インポートしたデータベースに含まれるテーブルの 1 つまたは 2 つに対してシンプルな SELECT クエリを実行して、インポートが正常に完了したことを確認します。

注記

この手順で使用された Amazon EC2 インスタンスが今後不要な場合は、Amazon AWS リソース使用率を減らすために EC2 インスタンスを終了する必要があります。EC2 インスタンスを終了するには、「インスタンスを終了する」を参照してください。

外部データベースと新しい Amazon RDS DB インスタンスのレプリケーション

Amazon RDS MySQL または MariaDB DB インスタンスにデータをコピーして転送する間にソースデータベースが更新されている可能性があるため、レプリケーションを使用して、コピーしたデータベースをソースデータベースの最新の状態にできます。

注記

Amazon RDS DB インスタンスでレプリケーションを開始するために必要なアクセス権限は限定されており、Amazon RDS マスターユーザーは利用できません。そのため、Amazon RDS の mysql.rds_set_external_master コマンドまたはmysql.rds_set_external_master_gtid コマンドのいずれかを使用してレプリケーションを設定し、mysql.rds_start_replication コマンドを使用してライブデータベースと Amazon RDS データベース間でレプリケーションを開始する必要があります。

レプリケーションを開始するには

以前に、バイナリログ作成を有効にし、ソースデータベースの一意のサーバー ID を設定しました。これで、ライブデータベースをレプリケーションマスターとして、Amazon RDS DB インスタンスをレプリカとしてセットアップできるようになりました。

  1. Amazon RDS マネジメントコンソールで、ソースデータベースをホストするサーバーの IP アドレスを、Amazon RDS DB インスタンスの VPC セキュリティグループに追加します。VPC セキュリティグループの変更方法の詳細については、『Amazon Virtual Private Cloud ユーザーガイド』の「VPC のセキュリティグループ」を参照してください。

    ソースインスタンスと通信できるようにするために、Amazon RDS DB インスタンスの IP アドレスからの接続を許可するようにローカルネットワークを設定することも必要になる場合があります。Amazon RDS DB インスタンスの IP アドレスを確認するには、host コマンドを使用します。

    Copy
    host <RDS_MySQL_DB_host_name>

    ホスト名は Amazon RDS DB インスタンスのエンドポイントの DNS 名 (例: myinstance.123456789012.us-east-1.rds.amazonaws.com) です。エンドポイントの値は、Amazon RDS マネジメントコンソールのインスタンスの詳細で確認できます。

  2. 選択したクライアントを使用して、ソースインスタンスに接続し、レプリケーションに使用するユーザーを作成します。 このアカウントはレプリケーション専用に使用され、セキュリティを強化するためにドメインに制限する必要があります。次に例を示します。

    Copy
    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY '<password>';
  3. ソースインスタンスについて、REPLICATION CLIENTREPLICATION SLAVE の特権をレプリケーションユーザーに付与します。たとえば、すべてのデータベースに対する REPLICATION CLIENTREPLICATION SLAVE の特権を、「repl_user」ユーザーに付与するには、次のコマンドを実行します。

    Copy
    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY '<password>';
  4. SQL 形式を使用してバックアップファイルを作成しており、外部インスタンスが MariaDB 10.0.2 以降でない場合は、ファイルのコンテンツを表示します。

    Copy
    cat backup.sql

    このファイルに、マスターログファイルの名前と場所を示す CHANGE MASTER TO コメントが含まれています。 mysqldump--master-data オプションを使用した場合に、バックアップファイルにこのコメントが含まれます。MASTER_LOG_FILE と MASTER_LOG_POS の値を書き留めます。

    Copy
    -- -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;

    区切りテキスト形式を使用してバックアップファイルを作成する場合で、外部インスタンスが MariaDB 10.0.2 以降の場合は、「既存のデータベースのバックアップコピーを作成するには」に記載されている手順のステップ 1 で、すでにバイナリログの調整を取得しているはずです。

    外部インスタンスが MariaDB 10.0.2 以降の場合は、既にの手順 2 からのレプリケーションを開始する GTID があるべきです「既存のデータベースのバックアップコピーを作成するには」に記載されている手順のステップ 2 で、レプリケーションを開始する GTID をすでに取得しているはずです。

  5. Amazon RDS DB インスタンスをレプリカにします。外部インスタンスが MariaDB 10.0.2 以降でない場合は、マスターユーザーとして Amazon RDS DB インスタンスに接続し、mysql.rds_set_external_master コマンドを使用して、レプリケーションのマスターノードとしてのデータベースソースを特定します。SQL 形式のバックアップファイルを使用する場合は、前の手順で特定したマスターログファイル名とマスターログの場所を使用します。区切り文字付きテキスト形式を使用した場合は、バックアップファイルの作成時に特定したマスターログファイル名とマスターログの場所を使用します。次に例を示します。

    Copy
    CALL mysql.rds_set_external_master ('mymasterserver.mydomain.com', 3306, 'repl_user', '<password>', 'mysql-bin-changelog.000031', 107, 0);

    外部インスタンスが MariaDB 10.0.2 以降の場合は、マスターユーザーとして Amazon RDS DB インスタンスに接続し、mysql.rds_set_external_master_gtid コマンドを使用して、レプリケーションのマスターノードとしてのデータベースソースを特定します。「既存のデータベースのバックアップコピーを作成するには」の手順のステップ 2 で決定した GTID を使用します。次に例を示します。

    Copy
    CALL mysql.rds_set_external_master_gtid ('Sourcedb.some.com',3306,'ReplicationUser','SomePassW0rd','0-123-456',0);
  6. Amazon RDS DB インスタンスで、mysql.rds_start_replication コマンドを実行してレプリケーションを開始します。

    Copy
    CALL mysql.rds_start_replication;
  7. Amazon RDS DB インスタンスで、SHOW SLAVE STATUS コマンドを実行して、レプリカがいつレプリケーションマスターの最新の状態に更新されたかを特定します。SHOW SLAVE STATUS コマンドの結果には、Seconds_Behind_Master フィールドが含まれています。Seconds_Behind_Master フィールドに 0 が返されている場合、レプリカはマスターの最新の状態です。

  8. Amazon RDS DB インスタンスが最新の状態になったら、必要に応じてデータベースを復元できるように、自動バックアップを有効にします。Amazon RDS マネジメントコンソールを使用して、Amazon RDS DB インスタンスの自動バックアップを有効化または変更できます。詳細については、「バックアップの使用 」を参照してください。

ライブアプリケーションの Amazon RDS インスタンスへのリダイレクト

Amazon RDS MySQL または MariaDB DB インスタンスがレプリケーションマスターの最新の状態になったら、Amazon RDS インスタンスを使用するようにライブアプリケーションを更新できます。

ライブアプリケーションを Amazon RDS MySQL または MariaDB DB インスタンスにリダイレクトし、レプリケーションを停止するには

  1. Amazon RDS DB インスタンスの VPC セキュリティグループを追加するには、アプリケーションをホストするサーバーの IP アドレスを追加します。VPC セキュリティグループの変更方法の詳細については、『Amazon Virtual Private Cloud ユーザーガイド』の「VPC のセキュリティグループ」を参照してください。

  2. SHOW SLAVE STATUS コマンドの結果の Seconds_Behind_Master フィールドが 0 であることを確認します。この値は、レプリカがレプリケーションマスターの最新の状態であることを示します。

    Copy
    SHOW SLAVE STATUS;
  3. mysql.rds_stop_replication コマンドを使用して Amazon RDS インスタンスのレプリケーションを停止します。

    Copy
    CALL mysql.rds_stop_replication;
  4. Amazon RDS DB インスタンスを使用するようにアプリケーションを更新します。この更新には、Amazon RDS DB インスタンスのホスト名とポート、接続に使用するユーザーアカウントとパスワード、および使用するデータベースの識別における接続設定の変更を含む場合がほとんどです。

  5. Amazon RDS DB インスタンスで mysql.rds_reset_external_master コマンドを実行してレプリケーション設定をリセットします。これにより、このインスタンスはレプリカとして識別されなくなります。

    Copy
    CALL mysql.rds_reset_external_master;
  6. マルチ AZ サポートやリードレプリカなど、Amazon RDS のその他の機能を有効にします。詳細については、「高可用性 (マルチ AZ) 」および「PostgreSQL、MySQL、および MariaDB リードレプリカの使用」を参照してください。

注記

この手順で使用された Amazon RDS インスタンスが今後不要な場合は、Amazon AWS リソース使用率を減らすために RDS インスタンスを削除する必要があります。RDS インスタンスを削除するには、「DB インスタンスを削除する」を参照してください。