このトピックでは、MySQL 互換モードの OceanBase データベースから Oracle 互換モードの OceanBase データベースにデータを同期する方法、またはその逆の方法について説明します。
前提条件
データ伝送サービスには、クラウド リソースにアクセスする権限があります。 詳細については、「ロールにデータ伝送の権限を付与する」をご参照ください。
OceanBase Database でデータ同期の専用データベース ユーザーを作成し、必要な権限をユーザーに付与しました。 詳細については、「データ ソースのユーザー権限を構成する」をご参照ください。
制限事項
データ伝送サービスは、オブジェクトのデータベース名、テーブル名、および列名が特殊文字を含まない ASCII エンコードされている場合にのみ、オブジェクトの同期をサポートします。 特殊文字は、改行、スペース、および次の文字です。 . | " ' ` ( ) = ; / & \.
考慮事項
ノード間またはクライアントとサーバー間で時計が同期していない場合、増分同期の際にレイテンシが不正確になる可能性があります。
たとえば、時計が標準時刻よりも早い場合、レイテンシは負になる可能性があります。 時計が標準時刻よりも遅い場合、レイテンシは正になる可能性があります。
データ同期タスクの作成時に 増分同期のみを選択した場合、データ伝送サービスでは、ソース データベースのローカル増分ログが少なくとも 48 時間保持されている必要があります。
データ同期タスクの作成時に 完全同期と 増分同期を選択した場合、データ伝送サービスでは、ソース データベースのローカル増分ログが少なくとも 7 日間保持されている必要があります。 そうしないと、データ伝送サービスが増分ログを取得できないため、データ同期タスクが失敗したり、ソースとターゲットのデータに不整合が生じたりする可能性があります。
ソースまたはターゲットに大文字と小文字のみが異なるテーブル オブジェクトが含まれている場合、ソースまたはターゲットで大文字と小文字が区別されないため、データ同期の結果が期待どおりにならない可能性があります。
大文字と小文字の区別
MySQL 互換モードの OceanBase データベースから Oracle 互換モードの OceanBase データベースにデータを同期する場合、ターゲット テーブル名とテーブル内の列名は、大文字に変換されます。
Oracle 互換モードの OceanBase データベースから MySQL 互換モードの OceanBase データベースにデータを同期する場合、ターゲット テーブル名とテーブル内の列名は、小文字に変換されます。
MySQL 互換モードの OceanBase データベースから Oracle 互換モードの OceanBase データベースにデータを同期する場合、UNIQUE 制約のある列で NULL 値が許可されていると、データ損失が発生する可能性があります。 具体的には、ソース データベースに複数の NULL 値を持つ列が存在する場合、UNIQUE 制約違反のため、列の最初の NULL 値のみが正常に同期され、後続の NULL 値は破棄されます。
サポートされているソースおよびターゲット インスタンス タイプ
ソース | ターゲット |
OB_MySQL (OceanBase クラスタインスタンス) | OB_Oracle (OceanBase クラスタインスタンス) |
OB_MySQL (OceanBase クラスタインスタンス) | OB_Oracle (VPC 内のセルフマネージド データベース) |
OB_MySQL (VPC 内のセルフマネージド データベース) | OB_Oracle (OceanBase クラスタインスタンス) |
OB_MySQL (VPC 内のセルフマネージド データベース) | OB_Oracle (VPC 内のセルフマネージド データベース) |
OB_Oracle (OceanBase クラスタインスタンス) | OB_MySQL (OceanBase クラスタインスタンス) |
OB_Oracle (OceanBase クラスタインスタンス) | OB_MySQL (VPC 内のセルフマネージド データベース) |
OB_Oracle (VPC 内のセルフマネージド データベース) | OB_MySQL (OceanBase クラスタインスタンス) |
OB_Oracle (VPC 内のセルフマネージド データベース) | OB_MySQL (VPC 内のセルフマネージド データベース) |
データ型マッピング
OB_MySQL から OB_Oracle へのマッピング
OB_MySQL | OB_Oracle |
INT | NUMBER(10,0) |
TINYINT | NUMBER(3,0) |
SMALLINT | NUMBER(5,0) |
DECIMAL(p,s) | NUMBER(p,s) |
NUMERIC(p,s) | NUMBER(p,s) |
FLOAT(10,2) | BINARY_FLOAT |
DOUBLE(10,2) | BINARY_DOUBLE |
BIT(1) BIT(n) BIT(64) | RAW(1) RAW(n/8+1) RAW(9) |
MEDIUMINT | NUMBER(7,0) |
BIGINT | NUMBER(19,0) |
TIMESTAMP | TIMESTAMP |
TIME | TIMESTAMP(0) |
TIME(n) | TIMESTAMP(n) |
DATE | DATE |
DATETIME | TIMESTAMP |
YEAR | NUMBER(4) |
VARCHAR(n) | VARCHAR2(n) n=information_schema. CHARACTER_OCTET_LENGTH |
CHAR(n) | CHAR(n) n=information_schema. CHARACTER_OCTET_LENGTH |
BINARY(n) | RAW(n) |
VARBINARY(n) | (n <= 2000) RAW(n) (n > 2000) BLOB |
TINYBLOB/BLOB/MEDIUMBLOB/LONGBLOB | BLOB |
TINYTEXT/TEXT/MEDIUMTEXT/LONGTEXT | CLOB |
ENUM/SET | VARCHAR2(32767) |
JSON |
|
OB_Oracle から OB_MySQL へのマッピング
次の表は、Oracle 互換モードの OceanBase Database V4.2.0 を例としています。
OB_Oracle | OB_MySQL |
CHAR(n CHAR) | VARCHAR(n) |
CHAR(n BYTE) | CHAR(n) |
NCHAR(n) | VARCHAR(n) |
VARCHAR2(n) | VARCHAR(n) |
NVARCHAR2(n) | VARCHAR(n) |
NVARCHAR2(n BYTE) | VARCHAR(n) |
NUMBER(n) | NUMERIC(n) |
NUMBER(p, s) | DECIMAL(p, s)/NUMERIC(p, s) |
RAW | VARBINARY |
CLOB | LONGTEXT |
BLOB | LONGBLOB |
FLOAT(n) | DOUBLE (n) |
BINARY_FLOAT | DOUBLE |
BINARY_DOUBLE | DOUBLE |
DATE | DATETIME |
TIMESTAMP | DATETIME(n) |
TIMESTAMP WITH TIME ZONE | VARCHAR(50) |
TIMESTAMP WITH LOCAL TIME ZONE | TIMESTAMP |
INTERVAL YEAR(p) TO MONTH | VARCHAR(50) |
INTERVAL DAY(p) TO SECOND | VARCHAR(50) |
ROWID | CHAR(18) |
UROWID(n) | VARCHAR(18) |
JSON | JSON |
手順
ApsaraDB for OceanBase コンソール にログインし、データ同期タスクを購入します。
詳細については、「データ同期タスクを購入する」をご参照ください。
[データ伝送] > [データ同期] を選択します。 表示されるページで、データ同期タスクの [構成] をクリックします。

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

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

[同期オブジェクトの選択] セクションで、[オブジェクトの指定] を選択します。
[同期スコープの選択] セクションで、[ソース オブジェクト] リストから同期するオブジェクトを選択します。 1 つ以上のデータベースのテーブルを同期オブジェクトとして選択できます。
[>] をクリックして、[ターゲット オブジェクト] リストに追加します。
データ伝送サービスでは、テキストを使用してオブジェクトをインポートできます。 また、オブジェクトの名前変更、行フィルターの設定、単一またはすべてのオブジェクトの削除も可能です。
説明[ルールの一致] を選択して同期オブジェクトを指定する場合、オブジェクトの名前変更は、指定された一致ルールの構文に基づいて実装されます。 操作エリアでは、フィルタリング条件を設定し、シャーディング列と同期する列を選択することしかできません。 詳細については、「一致ルールを構成および変更する」をご参照ください。
操作
説明
オブジェクトのインポート
右側のリストで、右上隅にある [オブジェクトのインポート] をクリックします。
表示されるダイアログ ボックスで、[OK] をクリックします。
重要この操作を実行すると、以前の選択が上書きされます。 注意して進めてください。
[同期オブジェクトのインポート] ダイアログ ボックスで、同期するオブジェクトをインポートします。 CSV ファイルをインポートして、データベースまたはテーブルの名前を変更し、行のフィルタリング条件を設定できます。 詳細については、「同期オブジェクトの設定をダウンロードおよびインポートする」をご参照ください。
[検証] をクリックします。
検証が成功したら、[OK] をクリックします。
オブジェクトの名前変更
データ伝送サービスでは、同期オブジェクトの名前を変更できます。 詳細については、「データベース テーブルの名前を変更する」をご参照ください。
設定の構成
データ伝送サービスでは、
WHERE条件を使用して行をフィルタリングできます。 詳細については、「SQL 条件を使用してデータをフィルタリングする」をご参照ください。[列の表示] セクションで、同期オブジェクトの列情報をクエリできます。
1 つまたはすべてのオブジェクトを削除する
データ伝送サービスでは、データ マッピング中に右側リストに追加された単一またはすべての同期オブジェクトを削除できます。
単一の同期オブジェクトを削除する
右側のリストで、削除するオブジェクトにカーソルを合わせ、[削除] をクリックして同期オブジェクトを削除します。
すべての同期オブジェクトを削除する
右側のリストで、右上隅にある [すべて削除] をクリックします。 表示されるダイアログ ボックスで、[OK] をクリックして、すべての同期オブジェクトを削除します。
[次へ] をクリックします。 [同期オプション] ページで、パラメーターを構成します。
完全同期
次の表に、完全同期パラメーターを示します。これらのパラメーターは、[同期タイプの選択] ページで [完全同期] を選択した場合にのみ表示されます。

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

パラメーター
説明
書き込み同時実行性
増分同期中にターゲットにデータを書き込むための同時実行性。 最大値は 512 です。 書き込み同時実行性が高いと、ターゲットに過度のストレスがかかり、ビジネスに影響を与える可能性があります。
増分同期レート制限
必要に応じて、増分同期レートを制限するかどうかを選択できます。 増分同期レートを制限することを選択した場合は、RPS と BPS を指定する必要があります。 RPS は、増分同期中にターゲットに同期されるデータ行の最大数を 1 秒あたりで指定し、BPS は、増分同期中にターゲットに同期されるデータの最大量をバイト単位で 1 秒あたりで指定します。
説明ここで指定された RPS 値と BPS 値は、調整のためだけにあります。 実際の増分同期パフォーマンスは、ソースとターゲットの設定やインスタンス仕様などの要因の影響を受けます。
増分同期の開始タイムスタンプ
[完全同期] を選択した場合、このパラメーターは使用できません。
[増分同期] を選択したが、[完全同期] を選択していない場合は、データを同期する開始時点を指定します。 デフォルト値は現在のシステム時刻です。 詳細については、「増分同期のタイムスタンプを設定する」をご参照ください。
詳細パラメーター

パラメーター
説明
ターゲット テーブル ストレージ タイプ
このセクションは、ターゲットが OceanBase Database V4.3.0 以降で、[同期タイプの選択] ページで [スキーマ同期] を選択するか、[増分同期] の [DDL 同期] を選択した場合にのみ表示されます。
このパラメーターは、スキーマ同期または増分同期中のターゲット テーブル オブジェクトのストレージ タイプを指定します。 ターゲット テーブル オブジェクトでサポートされているストレージ タイプは、[デフォルト]、[行ストア]、[列ストア]、および [ハイブリッド列ストア] です。 詳細については、「default_table_store_format」をご参照ください。
このパラメーターは、スキーマ同期または増分同期中のターゲット テーブル オブジェクトのストレージ タイプを指定します。 ターゲット テーブル オブジェクトでサポートされているストレージ タイプは、[デフォルト]、[行ストア]、[列ストア]、および [ハイブリッド列ストア] です。 詳細については、「default_table_store_format」をご参照ください。
説明[デフォルト] 値は、ターゲットのパラメーター構成に基づいて他のパラメーターが自動的に設定されることを意味します。 スキーマ同期におけるテーブル オブジェクト、または増分 DDL 同期における新しいテーブル オブジェクトは、指定されたストレージ タイプに基づいて対応するスキーマに書き込まれます。
NULL 以外のユニーク キーのないテーブルに非表示列を追加する
このパラメーターは、互換モードの異なる OceanBase データベース間でデータを同期するタスクを作成する際に、[同期タイプの選択] ページで増分同期について [スキーマ同期] または [DDL 同期] を選択した場合にのみ表示されます。 詳細については、「データ伝送サービスの隠し列メカニズム」をご参照ください。
[事前チェック] をクリックします。
事前チェック中に、データ伝送サービスは、データベース ユーザーの読み取りおよび書き込み権限とデータベースのネットワーク接続性をチェックします。 データ同期タスクは、すべてのチェック項目に合格した後でのみ開始できます。 事前チェック中にエラーが返された場合は、次の操作を実行できます。
問題を特定してトラブルシューティングし、事前チェックを再実行します。
失敗した事前チェック項目の [アクション] 列で [スキップ] をクリックします。 操作の結果を促すダイアログ ボックスで、[OK] をクリックします。
事前チェックに合格したら、[タスクの開始] をクリックします。
タスクを今すぐ開始する必要がない場合は、[保存] をクリックします。 後で [同期タスク] ページで、またはバッチ操作を実行することで、タスクを手動で開始できます。 バッチ操作の詳細については、「データ同期タスクのバッチ操作を実行する」をご参照ください。
データ伝送サービスでは、同期タスクの実行中に同期オブジェクトを変更できます。 詳細については、「同期オブジェクトとそのフィルター条件を表示および変更する」をご参照ください。 データ同期タスクが開始されると、選択した同期タイプに基づいて実行されます。 詳細については、「データ同期タスクの詳細を表示する」をご参照ください。
ネットワーク障害またはプロセスの起動が遅いなどの理由でデータ同期タスクで実行例外が発生した場合は、同期タスクの [同期タスク] または [詳細] ページで [復元] をクリックできます。