Data Transmission Service (DTS) を使用して、Elastic Compute Service (ECS) でホストされている自己管理型MySQLデータベースの増分データをRDS MySQLに同期できます。 インスタンスをリアルタイムで
前提条件
自己管理型MySQLデータベースのエンジンバージョンは、5.1、5.5、5.6、5.7、または8.0です。
ApsaraDB RDS for MySQLインスタンスが作成されました。 詳細については、「ApsaraDB RDS For MySQLインスタンスの作成」をご参照ください。
注意事項
DTSは、最初の完全データ同期中に、ソースRDSインスタンスとターゲットRDSインスタンスの読み取りおよび書き込みリソースを使用します。 これにより、RDSインスタンスの負荷が増加する可能性があります。 インスタンスのパフォーマンスが悪い場合、仕様が低い場合、またはデータ量が多い場合、データベースサービスが利用できなくなる可能性があります。 たとえば、ソースRDSインスタンスで多数の低速SQLクエリが実行されている場合、テーブルにプライマリキーがない場合、またはターゲットRDSインスタンスでデッドロックが発生する場合、DTSは大量の読み取りおよび書き込みリソースを占有します。 データ同期の前に、ソースRDSインスタンスとターゲットRDSインスタンスのパフォーマンスに対するデータ同期の影響を評価します。 オフピーク時にデータを同期することを推奨します。 たとえば、ソースRDSインスタンスとターゲットRDSインスタンスのCPU使用率が30% 未満の場合にデータを同期できます。
データ同期中にオブジェクトに対してDDL操作を実行するために、gh-ostまたはpt-online-schema-changeを使用しないことを推奨します。 そうしないと、データ同期が失敗する可能性があります。
DTSのみを使用してターゲットデータベースにデータを書き込む場合、データ同期中にデータ管理 (DMS) を使用してオンラインDDL操作を実行できます。 詳細については、「ロックフリーDDL操作の実行」をご参照ください。
移行元データベースで移行するテーブルには、PRIMARY KEYまたはUNIQUE制約が必要であり、すべてのフィールドが一意である必要があります。 そうでない場合、宛先データベースは重複するデータレコードを含み得る。
最初の完全データ同期中に、同時INSERT操作により、ターゲットインスタンスのテーブルが断片化されます。 最初の完全データ同期後、ターゲットクラスターのテーブルスペースはソースデータベースのテーブルスペースよりも大きくなります。
ターゲットデータベースがApsaraDB RDS for MySQLインスタンスの場合 MySQL 5.7または8.0を実行しない場合、DTSはdtssyncwriterデータベースアカウントを作成します。
課金
同期タイプ | タスク設定料金 |
スキーマ同期と完全データ同期 | 無料です。 |
増分データ同期 | 有料。 詳細については、「課金の概要」をご参照ください。 |
サポートしている同期トポロジ
一方向の 1 対 1 の同期
一方向の 1 対多の同期
一方向の多対 1 の同期
一方向のカスケード同期
双方向の 1 対 1 の同期
説明双方向同期の詳細については、「MySQLデータベース間の双方向同期の設定」をご参照ください。
同期可能なSQL操作
操作タイプ | SQL文 |
DML | INSERT、UPDATE、DELETE、および REPLACE |
DDL |
|
制限事項
トリガーとの非互換性
同期するオブジェクトとしてデータベースを選択し、そのデータベースにテーブルを更新するトリガーが含まれている場合、データの不整合が発生する可能性があります。 この問題を解決する方法の詳細については、「トリガーを含むソースデータベースのデータ同期または移行タスクの構成」をご参照ください。
RENAME TABLE操作の制限
RENAME TABLE操作は、ソースデータベースと宛先データベースの間にデータの不一致を引き起こす可能性があります。 たとえば、テーブルAのみが同期するオブジェクトとして選択され、テーブルBの名前が変更された場合、テーブルBはターゲットデータベースに同期できません。 このような状況を回避するには、データ同期タスクを設定するときに、テーブルAが配置されているデータベース全体を同期するオブジェクトとして選択します。
準備
データ同期タスクを設定する前に、データベースアカウントを作成し、バイナリログを設定する必要があります。 詳細については、「自己管理型MySQLデータベースのアカウントの作成とバイナリログの設定」をご参照ください。
手順
データ同期インスタンスを購入します。 詳細については、「DTSインスタンスの購入」をご参照ください。
説明ソースインスタンスとターゲットインスタンスの両方に [MySQL] を選択します。 同期トポロジとして [一方向同期] を選択します。
最初にDTSコンソールにログインします。
説明DTSコンソールからDMSコンソールに移動している場合は、右下隅にあるアイコンの上にポインターを移動し、アイコンをクリックしてDTSコンソールに戻ることができます。
ログイン後に新しいバージョンのDTSコンソールが表示される場合は、右下隅にあるアイコンをクリックして、以前のバージョンに戻ることができます。
左側のナビゲーションウィンドウで、[データ同期] を選択します。
[データ同期タスク] ページの上部で、ターゲットインスタンスが存在するリージョンを選択します。
データ同期インスタンスを見つけ、[操作] 列の [タスクの設定] をクリックします。
ソースデータベースとターゲットデータベースの設定
セクション
パラメーター
説明
非該当
同期タスク名
DTSが自動的に生成するタスク名。 タスクを簡単に識別できるように、わかりやすい名前を指定することをお勧めします。 一意のタスク名を使用する必要はありません。
ソースインスタンスの詳細
インスタンスタイプ
[ECS インスタンスのユーザー作成データベース] を選択します。
インスタンスリージョン
購入ページで選択したソースリージョン。 このパラメーターの値は変更できません。
ECS インスタンス ID
ソースMySQLデータベースをホストするECSインスタンスのID。
データベースエンジン
このパラメーターの値はMySQLに設定されており、変更することはできません。
ポート番号
自己管理型MySQLデータベースのサービスポート番号。 デフォルト値: 3306
データベースアカウント
自己管理型MySQLデータベースのアカウント。 アカウントには、必要なオブジェクトに対するSELECT権限と、REPLICATION CLIENT、REPLICATION SLAVE、およびSHOW VIEW権限が必要です。
データベースパスワード
自己管理MySQLデータベースのアカウントのパスワード。
ターゲットインスタンスの詳細
インスタンスタイプ
RDS インスタンスを選択します。
インスタンスリージョン
購入ページで選択したターゲットリージョン。 このパラメーターの値は変更できません。
インスタンス ID
ターゲットApsaraDB RDSインスタンスのID。
データベースアカウント
ターゲットApsaraDB RDSインスタンスのデータベースアカウント。
説明ターゲットApsaraDB RDSインスタンスのデータベースエンジンがMySQL 5.5またはMySQL 5.6の場合、データベースアカウントまたはデータベースパスワードパラメーターを設定する必要はありません。
データベースパスワード
データベースアカウントのパスワードを設定します。
暗号化
[暗号化なし] または[SSL 暗号化] を選択します。 SSL暗号化を選択する場合、データ同期タスクを設定する前に、ApsaraDB RDSインスタンスのSSL暗号化を有効にする必要があります。 詳細については、「クラウド証明書を使用したSSL暗号化の有効化」をご参照ください。
重要Encryptionパラメーターは、中国本土および中国 (香港) リージョン内でのみ使用できます。
ページの右下隅にある [ホワイトリストの設定] および [次へ] をクリックします。
同期ポリシーと同期するオブジェクトを選択します。
パラメータ /セクション
説明
同期するオブジェクトの選択
[使用可能] セクションから1つ以上のオブジェクトを選択し、アイコンをクリックして、オブジェクトを [選択済み] セクションに移動します。
同期するオブジェクトとしてテーブルまたはデータベースを選択できます。
説明同期するオブジェクトとしてデータベースを選択した場合、データベース内のすべてのスキーマ変更が同期先データベースに同期されます。
既定では、オブジェクトがターゲットデータベースに同期された後、オブジェクトの名前は変更されません。 オブジェクト名マッピング機能を使用して、ターゲットデータベースに同期されるオブジェクトの名前を変更できます。 詳細については、「同期するオブジェクトの名前変更」をご参照ください。
データベースとテーブルの名前変更
オブジェクト名マッピング機能を使用して、ターゲットインスタンスに同期されるオブジェクトの名前を変更できます。 詳細は、オブジェクト名のマッピングをご参照ください。
DDL中に一時テーブルをターゲットデータベースにコピーするソーステーブルDMS_ONLINE_Do
DMSを使用してソースデータベースでオンラインDDL操作を実行する場合、オンラインDDL操作によって生成された一時テーブルを同期するかどうかを指定できます。
Yes: DTSは、オンラインDDL操作によって生成された一時テーブルのデータを同期します。
説明オンラインDDL操作が大量のデータを生成する場合、データ同期タスクが遅延する可能性があります。
No: DTSは、オンラインDDL操作によって生成された一時テーブルのデータを同期しません。 ソースデータベースの元のDDLデータのみが同期されます。
説明[いいえ] を選択すると、ターゲットデータベースのテーブルがロックされる可能性があります。
失敗した接続の再試行時間
既定では、DTSがソースデータベースまたはターゲットデータベースへの接続に失敗した場合、DTSは次の720分 (12時間) 以内に再試行します。 必要に応じて再試行時間を指定できます。 DTSが指定された時間内にソースデータベースとターゲットデータベースに再接続すると、DTSはデータ同期タスクを再開します。 それ以外の場合、データ同期タスクは失敗します。
説明DTSが接続を再試行すると、DTSインスタンスに対して課金されます。 ビジネスニーズに基づいて再試行時間を指定することを推奨します。 ソースインスタンスとターゲットインスタンスがリリースされた後、できるだけ早くDTSインスタンスをリリースすることもできます。
ページの右下に表示される [次へ] をクリックします。
初期同期タイプを選択します。
初期同期中に、DTSは必要なオブジェクトのスキーマとデータをソースインスタンスからターゲットインスタンスに同期します。 スキーマおよびデータは、その後の増分同期の基礎となる。
同期初期化には、スキーマ同期初期化と完全データ同期初期化があります。 ほとんどの場合、[初期スキーマ同期] と [初期フルデータ同期] の両方を選択する必要があります。
ページの右下に表示される [事前確認] をクリックします。
重要データ同期タスクを開始する前に、事前チェックが実行されます。 データ同期タスクは、タスクが事前チェックに合格した後にのみ開始できます。
タスクが事前チェックに合格しなかった場合は、失敗した各項目の横にあるアイコンをクリックして詳細を表示できます。
原因に基づいて問題をトラブルシューティングした後、再度事前チェックを実行できます。
問題をトラブルシューティングする必要がない場合は、失敗した項目を無視して、再度事前チェックを実行できます。
[事前チェックに合格] の後に、[事前チェック] ダイアログボックスを閉じます。 [事前チェック] ダイアログボックスにメッセージが表示されます。 その後、データ同期タスクが開始されます。
初期同期が完了し、データ同期タスクが同期状態になるまで待ちます。
データ同期タスクの状態は、[同期タスク] ページで確認できます。