このトピックでは、OceanBase データベースの MySQL テナントからクラウドネイティブ データウェアハウスである AnalyticDB for MySQL データベースにデータを同期する方法について説明します。
背景
AnalyticDB for MySQL の基本情報については、「基本的なデータ型」をご参照ください。
AnalyticDB for MySQL のテーブル作成、パーティションテーブル、および分散テーブルについては、「CREATE TABLE」をご参照ください。
前提条件
データ伝送サービスには、クラウドリソースにアクセスするための権限があります。詳細については、「データ伝送のロールに権限を付与する」をご参照ください。
ソース OceanBase データベースにデータ同期用の専用データベースユーザーを作成し、そのユーザーに対応する権限を付与しています。詳細については、「データベースユーザーを作成する」をご参照ください。
制限事項
データ伝送サービスは、AnalyticDB for MySQL V3.0 をサポートしています。
データ伝送サービスは、オブジェクトのデータベース名、テーブル名、および列名が特殊文字を含まない ASCII エンコードである場合にのみ、オブジェクトの同期をサポートします。特殊文字は、改行、スペース、および次の文字です。 . | " ' ` ( ) = ; / & \
考慮事項
ソースが V4.0.0 から V4.3.x(V4.2.5 BP1 を除く)までのバージョンの OceanBase データベースで、増分同期を選択した場合は、生成列に STORED 属性を指定する必要があります。この属性を指定しないと、生成列に関する情報は増分ログに保存されず、増分同期のデータエラーが発生する可能性があります。
ノード間またはクライアントとサーバー間のクロックが同期していない場合、増分同期中のレイテンシが不正確になる可能性があります。
たとえば、クロックが標準時刻よりも早い場合、レイテンシは負になる可能性があります。クロックが標準時刻よりも遅い場合、レイテンシは正になる可能性があります。
OceanBase データベースの MySQL テナントから AnalyticDB for MySQL データベースにデータを同期する場合、インデックスは次のように処理されます。
プライマリキーを持つテーブルを同期する場合、プライマリキーインデックス以外のすべてのインデックスを削除します。
プライマリキーがないが、NULL 以外のユニークインデックスを持つテーブルを同期する場合、最初の NULL 以外のユニークインデックスをプライマリキーとして使用し、他のすべてのインデックスを削除します。
プライマリキーまたは NULL 以外のユニークインデックスがないテーブルは同期できません。
ソースまたはターゲットで TIMESTAMP 型の時間が使用され、その時間が夏時間(DST)の範囲内にある場合、ソースとターゲットで使用される時間形式の処理方法が異なるため、ソースとターゲットのデータに 1 時間のずれが生じる可能性があります。
たとえば、ソースまたはターゲットの TIMEZONE が +8:00 に設定されている場合、OceanBase データベースの MySQL テナントのクエリ結果は DST ではなく、AnalyticDB for MySQL のクエリ結果は DST になります。 AnalyticDB for MySQL のデータは、OceanBase データベースの MySQL テナントのデータよりも 1 時間進んでいます。
データ同期タスクの作成時に [増分同期] のみを選択した場合、データ転送サービスでは、ソースデータベースのローカル増分ログを 48 時間以上保持する必要があります。
データ同期タスクの作成時に [完全同期] と [増分同期] を選択した場合、データ伝送サービスでは、ソースデータベースのローカル増分ログが少なくとも 7 日間保持されている必要があります。保持されていない場合、データ伝送サービスが増分ログを取得できないため、データ同期タスクが失敗したり、ソースデータベースとターゲットデータベースのデータに不整合が生じたりする可能性があります。フル同期差分同期
ソースデータベースまたはターゲットデータベースに、大文字と小文字のみが異なるテーブルオブジェクトが含まれている場合、ソースデータベースまたはターゲットデータベースで大文字と小文字が区別されないため、データ移行の結果が予期したとおりにならない可能性があります。
サポートされているソースおよびターゲットのインスタンスタイプ
次の表では、OB_MySQL は OceanBase データベースの MySQL テナントを表します。
ソース | ターゲット |
OB_MySQL (OceanBase クラスタインスタンス) | AnalyticDB MySQL |
OB_MySQL (サーバーレスインスタンス) | AnalyticDB MySQL |
データ型マッピング
OceanBase データベースの MySQL テナントのデータ型 | AnalyticDB for MySQL V3.0 のデータ型 |
BIGINT | BIGINT |
BINARY | VARBINARY |
BIT | VARBINARY |
BLOB | VARBINARY |
CHAR | VARCHAR |
DATE | DATE |
DATETIME | DATETIME |
DECIMAL | DECIMAL(p,s) p: 1 ~ 1000、s <= p |
DOUBLE | DOUBLE |
ENUM | VARCHAR |
FLOAT | FLOAT |
INT | INT |
INTEGER | INT |
LONGBLOB | VARBINARY |
LONGTEXT | VARCHAR |
MEDIUMBLOB | VARBINARY |
MEDIUMTEXT | VARCHAR |
NUMERIC | DECIMAL |
SET | VARCHAR |
SMALLINT | SMALLINT |
TEXT | VARCHAR |
TIME | TIME |
TIMESTAMP | TIMESTAMP |
TINYBLOB | VARBINARY |
TINYINT | TINYINT |
TINYTEXT | VARCHAR |
VARBINARY | VARBINARY |
VARCHAR | VARCHAR |
YEAR | BIGINT |
手順
ApsaraDB for OceanBase コンソール にログインし、データ同期タスクを購入します。
詳細については、「データ同期タスクを購入する」をご参照ください。
[データ伝送] > [データ同期] を選択します。表示されるページで、データ同期タスクの [構成] をクリックします。

既存のタスクの構成を参照する場合は、[構成の参照] をクリックします。詳細については、「データ同期タスクの構成を参照およびクリアする」をご参照ください。
[ソースとターゲットの選択] ページで、パラメータを構成します。
パラメータ
説明
同期タスク名
数字と文字の組み合わせに設定することをお勧めします。スペースを含めることはできず、長さは 64 文字以下にする必要があります。
ソース
OceanBase データソースを作成済みの場合は、ドロップダウンリストから選択します。作成していない場合は、ドロップダウンリストの [新しいデータソース] をクリックし、右側に表示されるダイアログボックスで作成します。パラメータの詳細については、「OceanBase データソースを作成する」をご参照ください。
ターゲット
AnalyticDB for MySQL データソースを作成済みの場合は、ドロップダウンリストから選択します。作成していない場合は、ドロップダウンリストの [新しいデータソース] をクリックし、右側に表示されるダイアログボックスで作成します。詳細については、「ADB データソースを作成する」をご参照ください。
タグ(オプション)
ドロップダウンリストからターゲットタグを選択します。また、[タグの管理] をクリックして、タグを作成、変更、および削除することもできます。詳細については、「タグを使用してデータ同期タスクを管理する」をご参照ください。
[次へ] をクリックします。[同期タイプの選択] ページで、現在のデータ同期タスクの同期タイプを指定します。

サポートされている同期タイプは、[スキーマ同期]、[完全同期]、および [増分同期] です。[増分同期] は、[DML 同期] オプションと [DDL 同期] オプションをサポートしています。サポートされている DML 操作は、INSERT、DELETE、および UPDATE です。必要に応じてオプションを選択できます。詳細については、「DDL/DML 同期を構成する」をご参照ください。サポートされている DDL 操作については、「同期でサポートされている DDL 操作」をご参照ください。
[次へ] をクリックします。[同期オブジェクトの選択] ページで、現在のデータ同期タスクで同期するオブジェクトを選択します。
[オブジェクトの指定] オプションまたは [一致ルール] オプションを使用して、同期オブジェクトを指定できます。このトピックでは、[オブジェクトの指定] オプションを使用して同期オブジェクトを指定する方法について説明します。一致ルールの構成方法については、「一致ルールを構成および変更する」トピックの「データベース間のデータ移行/同期のためのワイルドカードパターン」セクションをご参照ください。
重要同期するテーブルの名前、およびテーブル内の列の名前に漢字を含めることはできません。
データベース名またはテーブル名に二重ドル記号($$)が含まれている場合、同期タスクを作成できません。
[DDL 同期] を [同期タイプの選択] ステップで選択した場合は、[一致ルール] オプションを使用して同期オブジェクトを選択することをお勧めします。これにより、一致ルールを満たすすべての新しいオブジェクトが確実に同期されます。[オブジェクトの指定] オプションを使用して同期オブジェクトを選択した場合、新しいオブジェクトまたは名前が変更されたオブジェクトは同期されません。

[同期オブジェクトの選択] セクションで、[オブジェクトの指定] を選択します。
次の [同期スコープの選択] セクションで、同期するオブジェクトを [ソースオブジェクト] リスト。
クリック [>] して、[ターゲットオブジェクト] リストに追加します。
データ伝送サービスでは、テキストを使用してオブジェクトをインポートできます。また、オブジェクトの名前変更、行フィルタの設定、単一またはすべてのオブジェクトの削除も可能です。
説明[一致ルール] を選択して同期オブジェクトを指定する場合、オブジェクトの名前変更は、指定された一致ルールの構文に基づいて実装されます。操作エリアでは、フィルタリング条件を設定し、シャーディング列と同期する列を選択することのみ可能です。詳細については、「一致ルールを構成および変更する」をご参照ください。
操作
説明
オブジェクトのインポート
右側のリストで、右上隅にある オブジェクトのインポート をクリックします。
表示されるダイアログボックスで、[OK] をクリックします。
重要この操作は以前の選択を上書きします。注意して進めてください。
同期オブジェクトのインポート ダイアログボックスで、同期するオブジェクトをインポートします。
CSV ファイルをインポートして、データベースまたはテーブルの名前を変更し、行フィルタリング条件を設定できます。詳細については、「同期オブジェクトの設定をダウンロードおよびインポートする」をご参照ください。
検証する をクリックします。
同期オブジェクトをインポートした後、その有効性を確認します。列フィールドマッピングはサポートされていません。
検証が成功したら、OK をクリックします。
オブジェクトの名前変更
データ伝送サービスでは、同期オブジェクトの名前を変更できます。詳細については、「データベーステーブルの名前を変更する」をご参照ください。
設定の構成
WHERE句を使用して、同期する列をフィルタリングおよび選択し、プライマリキー列、分散キー、およびパーティションキーを設定できます。右側のリストで、設定するオブジェクトにカーソルを合わせます。
[設定] をクリックします。
[設定] ダイアログボックスでは、次の操作を実行できます。
標準 SQL
WHERE句を指定して、行ごとにデータをフィルタリングします。詳細については、「SQL 条件を使用してデータをフィルタリングする」をご参照ください。プライマリキー列を設定します。
デフォルトでは、現在のテーブルのプライマリキー列が表示されます。複数のプライマリキー列がサポートされています。ドロップダウンリストから列を選択するか、検索ボックスで列を検索することで、現在のプライマリキー列を削除し、新しいプライマリキー列を設定できます。複数のプライマリキー列がサポートされています。
(オプション)分散キーを設定します。
パーティションキーを設定します。パーティションキーを設定するには、次の操作を実行します。
[パーティションキー式] フィールドに
PARTITION BY VALUE('id')などの式を入力します。パーティションを管理するために使用されるテーブルライフサイクルを設定します。テーブルライフサイクルが設定されると、パーティションがソートされ、最初の N 個のパーティションのみが保持されます。
[OK] をクリックします。
1 つまたはすべてのオブジェクトを削除する
データ伝送サービスでは、データマッピング中に右側リストに追加された 1 つまたはすべての同期オブジェクトを削除できます。
単一の同期オブジェクトを削除する
右側のリストで、削除するオブジェクトにカーソルを合わせ、[削除] をクリックして同期オブジェクトを削除します。
すべての同期オブジェクトを削除する
右側のリストで、右上隅にある [すべて削除] をクリックします。表示されるダイアログボックスで、[OK] をクリックしてすべての同期オブジェクトを削除します。
[次へ] をクリックします。[同期オプション] ページで、パラメータを構成します。
完全同期
次の表に、完全同期パラメータを示します。これらのパラメータは、[完全同期][同期タイプの選択] ページで を選択した場合にのみ表示されます。

パラメータ
説明
読み取り同時実行性
完全同期中にソースからデータを読み取るための同時実行性。最大値は 512 です。同時実行性が高いと、ソースに過度のストレスがかかり、ビジネスに影響を与える可能性があります。
書き込み同時実行性
完全同期中にターゲットにデータを書き込むための同時実行性。最大値は 512 です。書き込み同時実行性が高いと、ターゲットに過度のストレスがかかり、ビジネスに影響を与える可能性があります。
完全同期レート制限
必要に応じて、完全同期レートを制限するかどうかを選択できます。完全同期レートを制限することを選択した場合は、1 秒あたりのレコード数(RPS)と 1 秒あたりのバイト数(BPS)を指定する必要があります。RPS は、完全同期中にターゲットに同期されるデータ行の最大数を 1 秒あたりで指定し、BPS は、完全同期中にターゲットに同期されるデータの最大量をバイト単位で 1 秒あたりで指定します。
説明ここで指定する RPS 値と BPS 値は、調整のためだけのものです。実際の完全同期のパフォーマンスは、ソースとターゲットの設定やインスタンスの仕様などの要因によって異なります。
ターゲットデータベース内の空でないテーブルの処理
[無視] を選択した場合、挿入するデータがターゲットテーブルの既存のデータと競合すると、データ伝送サービスは競合するデータをログに記録し、既存のデータを保持します。
重要[無視] を選択した場合、完全検証のために IN モードでデータがプルされます。この場合、ターゲットにソースに存在しないデータが含まれていると検証は適用されず、検証のパフォーマンスが低下します。
[移行の停止] を選択し、ターゲットテーブルにレコードが含まれている場合、完全移行中に移行がサポートされていないことを示すエラーが報告されます。この場合、移行を続行する前に、ターゲットテーブルのデータを処理する必要があります。
重要エラーを促すダイアログボックスで [復元] をクリックすると、データ伝送サービスはこのエラーを無視してデータの移行を続行します。注意して進めてください。
増分同期
次の表に、増分同期パラメータを示します。これらのパラメータは、差分同期同期の種類を選択 ページで を選択した場合にのみ表示されます。

パラメータ
説明
書き込み同時実行性
増分同期中にターゲットにデータを書き込むための同時実行性。最大値は 512 です。書き込み同時実行性が高いと、ターゲットに過度のストレスがかかり、ビジネスに影響を与える可能性があります。
増分同期レート制限
必要に応じて、増分同期レートを制限するかどうかを選択できます。増分同期レートを制限することを選択した場合は、RPS と BPS を指定する必要があります。RPS は、増分同期中にターゲットに同期されるデータ行の最大数を 1 秒あたりで指定し、BPS は、増分同期中にターゲットに同期されるデータの最大量をバイト単位で 1 秒あたりで指定します。
説明ここで指定する RPS 値と BPS 値は、調整のためだけのものです。実際の増分同期のパフォーマンスは、ソースとターゲットの設定やインスタンスの仕様などの要因によって異なります。
増分同期の開始タイムスタンプ
[完全同期] を選択した場合は、このパラメータは使用できません。
[増分同期] を選択したが [完全同期] を選択していない場合は、データの同期を開始する時点を指定します。デフォルト値は現在のシステム時刻です。詳細については、「増分同期のタイムスタンプを設定する」をご参照ください。
[事前チェック] をクリックします。
事前チェック中、データ転送サービスはソースとターゲット間の接続を検出します。 事前チェック中にエラーが返された場合は、次の操作を実行できます。
問題を特定してトラブルシューティングし、事前チェックを再実行します。
失敗した事前チェック項目の [アクション] 列で [スキップ] をクリックします。操作の結果を通知するダイアログボックスで、
[OK] をクリックします。
事前チェックに合格したら、[タスクの開始] をクリックします。
タスクを今すぐ開始する必要がない場合は、[保存] をクリックします。後で [同期タスク] ページで、またはバッチ操作を実行することで、タスクを手動で開始できます。バッチ操作の詳細については、「データ同期タスクのバッチ操作を実行する」をご参照ください。
データ伝送サービスでは、同期タスクの実行中に同期オブジェクトを変更できます。詳細については、「同期オブジェクトとそのフィルタ条件を表示および変更する」をご参照ください。データ同期タスクが開始されると、選択した同期タイプに基づいて実行されます。詳細については、「データ同期タスクの詳細を表示する」をご参照ください。
ネットワーク障害またはプロセスの起動の遅延が原因でデータ同期タスクで実行例外が発生した場合は、同期タスクの [同期タスク] ページまたは [詳細] ページで [復元] をクリックできます。