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