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

MariaDB DB インスタンスへのデータのインポート

以下に、 MariaDB を実行中の Amazon RDS DB インスタンスに MariaDB データをインポートする方法を示します。

MariaDB DB インスタンスに初期データのインポートを行うには、次のように、「Amazon RDS MySQL DB インスタンスへのバックアップの復元」に記載されている手順を使用します。

また、AWS Database Migration Service (AWS DMS) を使用して Amazon RDS DB インスタンスにデータをインポートできます。AWS DMS はダウンタイムなしでデータベースを移行でき、多くのデータベースエンジンに対して、ターゲットデータベースに切り替える準備ができるまで、進行中のレプリケーションを続行できます。AWS DMS を使用して、同じデータベースエンジンまたは異なるデータベースエンジンから MariaDB に移行できます。別のデータベースエンジンから移行する場合は、AWS Schema Conversion Tool を使用して、AWS DMS では移行されないスキーマオブジェクトを移行できます。AWS DMS の詳細については、「AWS Database Migration Service とは」を参照してください。

外部インスタンスが MariaDB バージョン 10.0.24 以降、または 10.0.24 以前のバージョンで MySQL インスタンスまたは MariaDB インスタンス向けに調整されたバイナリログを使用する場合は、MariaDB グローバルトランザクション識別子 (GTID) を使用して Amazon RDS MariaDB DB インスタンスにレプリケーションを設定できます。MariaDB GTID の実装方法は、Amazon RDS ではサポートされていない MySQL GTID と異なることに注意してください。

MariaDB DB インスタンスにレプリケーションを設定するには、次の手順を使用します。

注記

mysql システムデータベースには、DB インスタンスへのログインとデータへのアクセスに必要な認証情報が含まれています。 DB インスタンスにある mysql データベースのテーブル、データ、または他のコンテンツを削除、変更、名前変更、または切り取りを行うとエラーが発生し、DB インスタンスとデータにアクセスできなくなる場合があります。 この場合、AWS CLI の restore-db-instance-from-db-snapshot を使用してスナップショットから DB インスタンスを復元するか、restore-db-instance-to-point-in-time コマンドを使用して DB インスタンスを復元できます。

Amazon RDS MariaDB DB インスタンスへの GTID ベースレプリケーションの設定

バージョン 10.0.24 以降の外部 MariaDB インスタンスの外部から、Amazon RDS MariaDB DB インスタンスに GTID ベースのレプリケーションをセットアップできます。外部のレプリケーションマスターと Amazon RDS にあるレプリカをセットアップする場合、以下のガイドラインに従ってください。

  • レプリカである Amazon RDS MariaDB DB インスタンスのフェイルオーバーのイベントをモニタリングします。フェイルオーバーが発生すると、レプリカである DB インスタンスが、新しいホスト上に別のネットワークアドレスで再作成されます。フェイルオーバーイベントをモニタリングする方法については、「Amazon RDS イベント通知の使用」を参照してください。

  • マスターインスタンスの binlog は、それらがレプリカに適用されていることを確認するまで保持します。このメンテナンスによって、障害発生時にマスターインスタンスを復元できます。

  • Amazon RDS にある MariaDB DB インスタンスの自動バックアップを有効にします。自動バックアップを有効にすると、マスターとレプリカを再同期する必要がある場合に、特定の時点にレプリカを復元できます。バックアップとポイントインタイム復元の詳細については、「Amazon RDS DB インスタンスのバックアップと復元」を参照してください。

注記

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

外部のマスターインスタンスと Amazon RDS 上の MariaDB DB インスタンス間でレプリケーションを開始するには、次の手順に従います。

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

  1. ソース MariaDB インスタンスを読み取り専用にします。

    mysql> FLUSH TABLES WITH READ LOCK; mysql> SET GLOBAL read_only = ON;
  2. 外部 MariaDB インスタンスの現在の GTID を取得します。mysql または選択したクエリエディタを使用して SELECT @@gtid_current_pos; を実行することで、取得できます。

    GTID は、<domain-id>-<server-id>-<sequence-id> の形式となります。 一般的な GTID は 0-1234510749-1728 のようになります。 GTID とコンポーネント部分の詳細については、MariaDB ドキュメントの「グローバルトランザクション ID」を参照してください。

  3. mysqldump を使用して、外部 MariaDB インスタンスから Amazon RDS MariaDB DB インスタンスにデータベースをコピーします。非常に大きなデータベースでは、「わずかなダウンタイムでの Amazon RDS MySQL または MariaDB DB インスタンスへのデータのインポート」の手順を使用することが必要になる場合があります。

    注記

    -p オプションと入力するパスワードの間にスペースがないことを確認します。

    Linux、OS X、Unix の場合:

    mysqldump \ --databases <database_name> \ --single-transaction \ --compress \ --order-by-primary \ -u <local_user> \ -p<local_password> | mysql \ --host=hostname \ --port=3306 \ -u <RDS_user_name> \ -p <RDS_password>

    Windows の場合:

    mysqldump ^ --databases <database_name> ^ --single-transaction ^ --compress ^ --order-by-primary \ -u <local_user> \ -p<local_password> | mysql ^ --host=hostname ^ --port=3306 ^ -u <RDS_user_name> ^ -p <RDS_password>

    mysql コマンドで、--host--user (-u)--port-p オプションを使用して、Amazon RDS MariaDB DB インスタンスに接続するためのホスト名、ユーザー名、ポート、パスワードを指定します。 ホスト名は Amazon RDS MariaDB DB インスタンスのエンドポイントの DNS 名 (例: myinstance.123456789012.us-east-1.rds.amazonaws.com) です。 エンドポイントの値は、Amazon RDS マネジメントコンソールのインスタンスの詳細で確認できます。

  4. もう一度ソース MariaDB インスタンスを書き込み可能にします。

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

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

    host <RDS_MariaDB_DB_host_name>

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

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

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

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY '<password>';
  8. Amazon RDS MariaDB DB インスタンスをレプリカにします。Amazon RDS MariaDB DB インスタンスにマスターユーザーとして接続し、mysql.rds_set_external_master_gtid コマンドを使用して、外部の MariaDB データベースをレプリケーションマスターとして指定します。ステップ 2 で決定した GTID を使用します。次に例を示します。

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

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

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

    CALL mysql.rds_start_replication;