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