Amazon Relational Database Service
ユーザーガイド (API バージョン 2014-10-31)

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

シナリオでサポートされている場合は、バックアップファイルおよび Amazon S3 を使用して Amazon RDS との間でデータを移動する方が簡単です。詳細については、「Amazon RDS MySQL 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 の設定が含まれます。これらのオプションを設定すると、サーバーはデータベーストランザクションのログ作成を開始し、このプロセスの後でこのサーバーをレプリケーションマスターにするために準備します。

注記

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

  • ダンプファイルから次のスキーマを除外します: sysperformance_schemainformation_schemamysqldump ユーティリティを使用すると、これらのスキーマをデフォルトで除外できます。

  • ユーザーや権限を移行する必要がある場合は、再作成するデータ制御言語 (DCL) を生成するツールの使用を検討します。たとえば、pt-show-grants ユーティリティがあります。

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

  1. my.cnf ファイルを編集します (このファイルは通常 /etc にあります)。

    sudo vi /etc/my.cnf

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

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

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

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

  2. mysql サービスを再起動します。

    sudo service mysqld restart

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

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

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

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

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

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

    重要

    Windows で、管理者としてコマンドウィンドウを実行します。

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

      Linux、OS X、Unix の場合:

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

      Windows の場合:

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

      Linux、OS X、Unix の場合:

      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 の場合:

      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 の値を書き留めます。レプリケーションを設定するときにこの値が必要となります。

      -- 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 に変換します。

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

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

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

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

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

      tar -zcvf backup.tar.gz <target_directory>

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

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

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

  1. RDS DB インスタンスを作成して MySQL データベースエンジンを実行する AWS リージョンに、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 セキュリティグループの操作 (EC2-Classic プラットフォーム)」を参照してください。

  2. Amazon EC2 マネジメントコンソールを開き、Amazon EC2 インスタンスと Amazon RDS DB インスタンスの両方が含まれる AWS リージョンを選択します。ステップ 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 クライアントを使用してファイルをコピーできます。次に例を示します。

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

    重要

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

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

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

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

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

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

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

      tar xzvf backup.tar.gz

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

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

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

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

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

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

  4. ナビゲーションペインで、[Instances] を選択します。

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

    1. [Select engine] ページで、必要に応じて [MySQL] または [MariaDB] を選択してから、[Next] を選択します。

    2. [Choose use case] ページで、[Dev/Test – MySQL] を選択してマルチ AZ 配置およびプロビジョンド IOPS ストレージをスキップします。

    3. [Specify DB details] ページの [Instance specifications] セクションで、適切であると判断した DB インスタンスクラスと割り当てるストレージサイズを指定します。[Multi-AZ deployment] で [No] を選択します。[Storage type] に、ステップ 2 での決定に従って、[Provisioned IOPS (SSD)] を使用するかどうかを指定します。[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.27 以降を実行する RDS MySQL DB インスタンスを作成する必要があります。

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

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

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

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

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

      残りのオプションについては、デフォルト値をそのまま使用します。完了したら、[Launch DB instance] を選択します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      $ 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 で同じオプションを使用する必要があります。

  11. インポートしたデータベースに含まれるテーブルの 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 コマンドを使用します。

    host <RDS_MySQL_DB_host_name>

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

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

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

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

    cat backup.sql

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

    -- -- 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 形式のバックアップファイルがある場合は、前の手順で決定したマスターログのファイル名とマスターログの位置を使用します。または、区切り文字形式を使用した場合は、バックアップファイルの作成時に決定した名前と位置を使用します。次に例を示します。

    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 を使用します。次に例を示します。

    CALL mysql.rds_set_external_master_gtid ('<master_server_ip_address>', 3306, 'ReplicationUser', '<password>', '<GTID>', 0);

    master_server_ip_address は、マスター MySQL インスタンスのプライベート IP アドレスです。EC2 プライベート DNS アドレスは現在サポートされていません。

  6. Amazon RDS DB インスタンスで、mysql.rds_start_replication コマンドを実行してレプリケーションを開始します。

    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 であることを確認します。この値は、レプリカがレプリケーションマスターの最新の状態であることを示します。

    SHOW SLAVE STATUS;
  3. トランザクションが終了したら、ソースへのすべての接続を閉じます。

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

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

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

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

注記

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