本記事では、OceanBaseデータベースのMySQL互換モードからOracle互換モードへのデータ移行方法、およびOceanBaseデータベースのOracle互換モードからMySQL互換モードへのデータ移行方法について説明します。
注意
データ移行タスクが長期間非アクティブ状態(タスクステータスが 失敗、一時停止、または 完了)にある場合、増分ログの保持期間などの影響でタスクがリストアできない可能性があります。データ移行システムは、非アクティブ状態が7日を超えるタスクを自動的に解放し、関連リソースを回収します。タスクに対してアラートを設定し、タスク関連の異常を速やかに処理することを推奨します。
前提条件
データ送信先のOceanBaseデータベースに対応するスキーマが作成されていること。
データ送信元およびデータ送信先のOceanBaseデータベースのクラスタとテナントが作成されていること。詳細については、クラスタの作成およびテナントの作成を参照してください。
OceanBaseデータベースにデータ移行専用のデータベースユーザーを作成し、関連する権限を付与していること。詳細については、データ移行ユーザー権限を参照してください。
利用制限
プロジェクトロールが プロジェクト所有者、プロジェクト管理者、または データサービス管理者 のユーザーのみが新規データ移行タスクの作成をサポートします。
データ送信元データベースの操作上の制限
構造移行およびフル移行段階では、データベースまたはテーブル構造変更のDDL操作を実行しないでください。そうでない場合、データ移行タスクが中断する可能性があります。
現在、データ移行はOceanBaseデータベース(MySQL互換モードおよびOracle互換モードを含む)V2.x、V3.x、およびV4.xをサポートしています。
データ移行はクラスタインスタンスのみをサポートしており、共有インスタンスは現在サポートしていません。
データ移行は、データベース名、テーブル名、列名がASCIIコードであり、特殊文字(.|"'`()=;/&および改行を含む)を含まないオブジェクトのみの移行をサポートしています。
データ送信先がデータベースの場合、データ移行はデータ送信先にトリガー(Trigger)が存在することをサポートしていません。存在する場合、データ移行が失敗する可能性があります。
注意事項
データ送信元の文字セットがUTF-8の場合、データ送信先ではデータ送信元と互換性のある文字セット(例:UTF-8、UTF-16など)を使用することを推奨します。これにより、文字セットの非互換性によるデータ送信先での文字化けなどの問題を回避できます。
- ノード間の時刻同期が取れていない場合、またはコンピュータ端末とサーバー間の時刻同期が取れていない場合、増分同期の遅延時間が正確でない可能性があります。
例えば、時計が標準時より進んでいる場合、遅延時間が負の値になる可能性があります。時計が標準時より遅れている場合、遅延が発生する可能性があります。
DDL同期を有効にしていない状態で、データ送信先の一意インデックスを変更した場合、データ移行タスクを再起動する必要があります。そうでない場合、データの不整合が発生する可能性があります。
データ移行によるDECIMAL、FLOAT、DATETIMEなどの列型の移行精度が予想通りか確認してください。データ送信先のフィールド型の精度がデータ送信元のフィールド型の精度より低い場合、切り捨てが発生し、データ送信元とデータ送信先のデータが一致しなくなる可能性があります。
データ送信元がOceanBaseデータベースでDDL同期が有効なデータ移行タスクにおいて、データ送信元のデータベース内のテーブルにRENAME操作が発生した場合、増分同期でのデータ損失を避けるため、タスクの再起動を推奨します。
データ送信元またはデータ送信先に大文字と小文字が異なるテーブルオブジェクトが存在する場合、データ送信元またはデータ送信先の大文字小文字不感応により、データ同期の結果が予想通りにならない可能性があります。
大文字小文字の感度に関する説明
OceanBaseデータベースのMySQLテナントのデータをOceanBaseデータベースのOracleテナントに同期する場合、データ送信先のテーブル名、フィールド名などはすべて大文字に変換されます。
OceanBaseデータベースのOracleテナントのデータをOceanBaseデータベースのMySQLテナントに同期する場合、データ送信先のテーブル名、フィールド名などはすべて小文字に変換されます。
- 新規データ移行タスク作成時に、増分同期 のみを設定した場合、データ移行はデータ送信元データベースのローカル増分ログを48時間以上保存することを要求します。
新規データ移行タスク作成時に、フル移行 + 増分同期 を設定した場合、データ移行はデータ送信元データベースのローカル増分ログを少なくとも7日間以上保持することを要求します。そうでない場合、増分ログを取得できないためデータ移行タスクが失敗する可能性があり、さらにはデータ送信元とデータ送信先のデータが一致しなくなる可能性があります。
- OceanBaseデータベースのMySQL互換モードのデータをOceanBaseデータベースのOracle互換モードに移行する際、一意制約列がNULL値を許容する場合、データ損失が発生する可能性があります。OceanBaseデータベースのMySQL互換モードで複数のNULL値をOceanBaseデータベースのOracle互換モードに同期すると、最初のNULL値のみが正常に挿入され、その後のNULL値は一意制約列の競合により破棄されます。
サポートされているデータ送信元およびデータ送信先インスタンスのタイプ
クラウドベンダー |
データ送信元 |
データ送信先 |
|---|---|---|
| AWS | OceanBase MySQL Compatible(トランザクション型) | OceanBase Oracle Compatible(トランザクション型) |
| Huawei Cloud | OceanBase MySQL Compatible(トランザクション型) | OceanBase Oracle Compatible(トランザクション型) |
| Tencent Cloud | OceanBase MySQL Compatible(トランザクション型) | OceanBase Oracle Compatible(トランザクション型) |
| Alibaba Cloud | OceanBase MySQL Compatible(トランザクション型) | OceanBase Oracle Compatible(トランザクション型) |
| AWS | OceanBase Oracle Compatible(トランザクション型) | OceanBase MySQL Compatible(トランザクション型) |
| Huawei Cloud | OceanBase Oracle Compatible(トランザクション型) | OceanBase MySQL Compatible(トランザクション型) |
| Tencent Cloud | OceanBase Oracle Compatible(トランザクション型) | OceanBase MySQL Compatible(トランザクション型) |
| Alibaba Cloud | OceanBase Oracle Compatible(トランザクション型) | OceanBase MySQL Compatible(トランザクション型) |
データ型のマッピング
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 | V4.1.0 以前バージョン:CLOB V4.1.0以降のバージョン:JSON |
OB_OracleからOB_MySQLへのデータ型マッピング
以下のテーブルのデータ型マッピングは、OceanBaseデータベースのOracle互換モード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 |
操作手順
データ移行タスクを新規作成します。

OceanBase Cloudコンソールにログインします。
左側のナビゲーションバーで、データサービス > データ移行 をクリックします。
データ移行 ページで、データ移行 タブをクリックします。
データ移行 タブで、右上の 移行タスクの新規作成 をクリックします。
タスク名編集テキストボックスに、カスタムの移行タスク名を入力します。
名前には漢字、数字、英字の組み合わせを推奨します。スペースを含めず、64文字以内で入力してください。
データ送信元とデータ送信先の設定 ページで、各パラメータを設定します。
データ送信元 セクションで、各パラメータを設定します。
既に作成・保存されているデータソースを参照する必要がある場合、データ送信元 の右側にある データソースの参照 をクリックし、ドロップダウンリストからターゲットデータソースを選択します。選択後、データ送信元の各設定が自動的に入力されます。現在の設定を新しいデータソースとして保存する場合、データ送信元 セクションの右上にある 保存 アイコンをクリックします。
データソースの参照 のドロップダウンリストで データソース管理 をクリックすると、データソース ページに移動し、データソースの表示や管理ができます。このページでは異なる種類のデータソースを一元管理します。詳細については、データソースモジュールのドキュメントを参照してください。
パラメータ説明クラウドベンダー 現在、AWS、Huawei Cloud、Alibaba Cloud、および Tencent Cloud をサポートしています。 リージョン データ送信元データベースのリージョンを選択します。 データベースタイプ 実際の状況に応じて、データ送信元を OceanBase MySQL Compatible または OceanBase Oracle Compatible から選択します。 インスタンスタイプ 現在、クラスタインスタンス(トランザクション型) をサポートしています。 インスタンス OceanBaseデータベースが配置されているインスタンスのIDまたは名前です。インスタンスリスト ページで、ターゲットインスタンスのIDまたは名前を確認できます。 説明
クラウドプロバイダーがAlibaba Cloudの場合、アカウント間認証をサポートするAlibaba Cloudのメインアカウントインスタンスも選択できます。詳細については、Alibaba Cloudアカウント認証を参照してください。
テナント OceanBaseデータベースのテナントIDまたは名前です。インスタンスリスト ページで、ターゲットインスタンスを展開し、そのインスタンス下のターゲットテナントのIDまたは名前を確認できます。 アカウント データ移行に使用するOceanBaseデータベースのユーザー名です。 パスワード データベースユーザーのパスワード。 データ送信先 セクションで、各パラメータを設定します。
既に作成・保存されているデータソースを参照する必要がある場合、データ送信先 の右側にある データソースの参照 をクリックし、ドロップダウンリストから対象のデータソースを選択します。選択後、データ送信先の各設定が自動的に入力されます。現在の設定を新しいデータソースとして保存する場合、データ送信先 セクションの右上にある 保存 アイコンをクリックします。
データソースの参照 のドロップダウンリストで データソース管理 をクリックすると、データソース ページに移動し、データソースの表示や管理ができます。このページでは異なる種類のデータソースを一元管理します。詳細については、データソースモジュールのドキュメントを参照してください。
パラメータ説明クラウドベンダー 現在、AWS、Huawei Cloud、Alibaba Cloud、および Tencent Cloud をサポートしています。データ送信元と同じクラウドプロバイダーを選択することも、異なるクラウド間でのデータ移行も可能です。 説明
現在、クラウド間のデータ移行機能はデフォルトで有効になっていません。この機能を使用する場合は、OceanBase Cloudテクニカルサポートにお問い合わせください。
リージョン データ送信先データベースのリージョンを選択します。 データベースタイプ データ送信元データベースのタイプに応じて、データ送信先の対応するデータベースタイプ OceanBase MySQL Compatible または OceanBase Oracle Compatible を選択してください。 インスタンスタイプ 現在、クラスタインスタンス(トランザクション型) をサポートしています。 インスタンス OceanBaseデータベースが配置されているインスタンスのIDまたは名前です。インスタンスリスト ページで、ターゲットインスタンスのIDまたは名前を確認できます。 テナント OceanBaseデータベースのテナントIDまたはテナント名です。インスタンスリスト ページで、ターゲットインスタンスを展開し、そのインスタンス内のターゲットテナントのIDまたは名前を確認できます。 アカウント データ移行に使用するOceanBaseデータベースのユーザー名。 パスワード データベースユーザーのパスワード。
接続テストをして、次へ移動 をクリックします。
タイプとオブジェクトの選択 ページで、各パラメータを設定します。
同期トポロジー セクションで、一方向の同期 を選択します。
注意
現在、OceanBaseデータベースの異なる互換モード間でのデータ移行は、単方向の同期のみをサポートしています。
移行タイプ セクションで、現在のデータ移行タスクの移行タイプを選択します。
移行タイプ には、スキーマ移行、フル移行、増分同期 が含まれます。
パラメータ説明構造移行 構造移行では、文字セットのマッピング関係を自ら定義する必要があります。データ移行は、ソースデータベースのデータ(構造)をターゲットデータベースにコピーするだけで、ソースデータ(構造)に影響を与えません。 フル移行 フル移行タスク開始後、データ移行サービスは、ソースデータベース内のテーブルの既存データをデータ送信先データベースの対応するテーブルに移行します。 増分同期 増分同期タスク開始後、データ移行は、データ送信元データベースで変更されたデータ(追加、変更、削除)をデータ送信先データベースの対応するテーブルに同期します。増分同期 には DML同期 と DDL同期期間 が含まれ、ニーズに応じてカスタマイズ設定できます。詳細は DML/DDLのカスタム設定 を参照してください。 移行オブジェクトの選択 セクションで、移行オブジェクトの選択方法を設定します。
オブジェクトの指定 と マッチングルール の2つの方法で移行オブジェクトを選択できます。
移行範囲の選択 セクションで、移行するオブジェクトを選択します。
オブジェクトの指定 を選択した場合、データ移行は データベース内のテーブル移行 と データベース全体の移行 をサポートします。データベース内のテーブル移行では、1つまたは複数のデータベース内のテーブルやビューを移行オブジェクトとして選択できます。データベース全体の移行では、データベース全体を移行オブジェクトとして選択できます。データベース内のテーブル移行を選択したデータベースでは、データベース全体の移行は利用できません。データベース全体の移行を選択したデータベースでは、データベース内のテーブル移行は利用できません。
データベース内のテーブル移行 または データベース全体の移行 の方法を選択した場合、左側で移行するオブジェクトを選択し、> をクリックして右側のリストに追加します。
データ移行では、テキスト形式でのオブジェクトのインポート、データ送信先のオブジェクト名の変更、行フィルタリングの設定、列情報の表示、および個別またはすべての移行オブジェクトの削除などの操作をサポートしています。

説明
データベース全体の移行 を選択した場合:
右側のリストにはデータベース名のみが表示され、具体的なオブジェクトは表示されません。
増分同期-DDL同期期間 の移行タイプを選択した場合、データ送信元で新規作成されたテーブルはデータ送信先に同期されます。
操作説明インポート 選択領域の右側のリストで、右上の オブジェクトのインポート をクリックします。移行オブジェクトのインポートを参照してください。 名前の変更 データ移行では、移行オブジェクトの名前を変更できます。データベース内のテーブルの名前変更を参照してください。 行フィルタリング データ移行では WHERE条件を使用した行フィルタリングがサポートされています。SQL条件でデータをフィルタリングするを参照してください。また、カラムを表示 領域で、移行オブジェクトの列情報を確認できます。すべて削除/クリア データ移行では、データマッピング時に、一時的にデータ送信先に選択された単一または複数のオブジェクトを削除する操作がサポートされています。 - 単一の移行オブジェクトの削除
選択領域の右側のリストで、ターゲットオブジェクトの後ろにある 削除 アイコンをクリックすると、その移行オブジェクトを削除できます。 - すべての移行オブジェクトの削除
選択領域の右側のリストで、右上の すべてクリア をクリックします。ダイアログボックスで、OK をクリックすると、すべての移行オブジェクトを削除できます。
マッチングルール を選択した場合、詳細については データベース間のマッチングルールの設定を参照してください。
次へ をクリックします。移行オプション ページで、各パラメータを設定します。
フル移行
タイプとオブジェクトの選択 ページで、一方向の同期 > フル移行 を選択した場合にのみ、以下のパラメータが表示されます。
パラメータ説明読み取り同時実行数設定 このパラメータは、フル移行段階でデータ送信元からデータを読み取る同時実行数を設定します。最大値は512です。同時実行数が高すぎると、データ送信元の負荷が過大になり、業務に影響を与える可能性があります。 書き込み同時実行数設定 このパラメータは、フル移行段階でデータ送信先にデータを書き込む同時実行数を設定します。最大値は512です。同時実行数が高すぎると、データ送信先の負荷が過大になり、業務に影響を与える可能性があります。 フル移行速度の制限 実際のニーズに応じて、フル移行速度の制限を有効にするかを決定できます。有効にする場合は、RPS(フル移行段階で1秒間にデータ送信先に移行できるデータ行数の最大値)とBPS(フル移行段階で1秒間にデータ送信先に移行できるデータ量の最大値)を設定してください。 説明
ここで設定されたRPSとBPSは、スロットリング機能としてのみ機能し、フル移行で実際に達成可能な性能は、データ送信元、データ送信先、インスタンス仕様の設定などの要因の影響を受けます。
データ送信先テーブルにレコードが存在する場合の処理ポリシー 処理ポリシーには、移行停止 と 無視 が含まれます: - 移行停止 を選択した場合、データ送信先のテーブルにデータが存在すると、フル移行はエラーとなり、移行は許可されません。データ送信先のデータを適切に処理してから、移行を続行してください。
注意
エラー発生後にリストアをクリックすると、データ移行はこの設定オプションを無視し、テーブルデータの移行を続行します。ご注意ください。
- 無視 を選択した場合、データ送信先のテーブルにデータが存在し、元のデータと書き込むデータが競合すると、データ移行は競合するデータをログに記録し、元のデータを変更せずに保持するポリシーでデータを書き込みます。
インデックスの転置許可 インデックスの転置機能は、フル移行の所要時間を短縮できます。ここでは、フルデータ移行完了後にインデックスを作成できるかどうかを設定します。インデックスの遅延作成を選択する際の注意事項については、表の下部の説明を参照してください。 注意
移行タイプの選択ページで 構造移行 と フル移行 の両方を選択している場合にのみ、このオプションの設定がサポートされます。
- 一意キー以外のインデックスのみ遅延作成がサポートされます。
インデックスの転置を許可する場合、OceanBaseデータベースのハードウェア条件と現在の業務トラフィック状況に基づき、CLIツールを使用して以下のビジネステナントパラメータを調整することを推奨します。
// ファイルメモリバッファサイズの制限 ALTER SYSTEM SET _temporary_file_io_area_size = '10' tenant = 'xxx'; // OceanBaseデータベースV4.xのスロットリングの無効化 ALTER SYSTEM SET sys_bkgd_net_percentage = 100;- 移行停止 を選択した場合、データ送信先のテーブルにデータが存在すると、フル移行はエラーとなり、移行は許可されません。データ送信先のデータを適切に処理してから、移行を続行してください。
増分同期
タイプとオブジェクトの選択 ページで、一方向の同期 > 増分同期 を選択した場合にのみ、以下のパラメータが表示されます。
パラメータ説明Write Concurrent Configuration このパラメータは、増分同期フェーズでデータ送信先にデータを書き込む同時実行数を設定します。最大制限は512です。同時実行数が高すぎると、データ送信先の負荷が過大になり、業務に影響を与える可能性があります。 Incremental Migration Rate Limit 実際のニーズに応じて、増分同期速度の制限を有効にするかどうかを決定できます。有効にする場合は、RPS(増分同期フェーズで1秒間にデータ送信先に同期できるデータ行数の最大値の制限)とBPS(増分同期フェーズで1秒間にデータ送信先に同期できるデータ量の最大値の制限)を設定してください。 説明
ここで設定されたRPSとBPSは、速度制限とトラフィック制限の能力としてのみ機能します。増分同期が実際に達成できるパフォーマンスは、データ送信元、データ送信先、インスタンス仕様の設定などの要因の影響を受けます。
Incremental Synchronization Start Timestamp - 移行タイプとして フル移行 を選択した場合、このパラメータは表示されません。
- 移行タイプとして フル移行 を選択せず、増分同期 を選択した場合は、この時間以降のデータを移行するように指定してください。デフォルトは現在のシステム時刻です。詳細については、増分同期の開始時刻の設定を参照してください。
詳細オプション
データ送信先のOceanBaseデータベースがV4.3.0以降のバージョンであり、かつ タイプとオブジェクトの選択 ページで スキーマ移行 または 増分同期 > DDL同期期間 を選択した場合にのみ、このセクションのパラメータが表示されます。

データ送信先のテーブルオブジェクトのストレージタイプには、デフォルト、行ストレージ、リスト、行列混合ストレージ が含まれます。この設定は、構造移行または増分同期時のデータ送信先テーブルオブジェクトのストレージタイプを決定するために使用されます。
説明
デフォルト オプションは、データ送信先のパラメータ設定に応じて他のオプションを自動的に適用します。これにより、構造移行のテーブルオブジェクトや増分DDLによって新規作成されたテーブルオブジェクトは、設定されたストレージタイプに従って対応する構造が書き込まれます。
次へ をクリックすると、システムがデータ移行タスクの事前チェックを実行します。
事前チェック ステップでは、データ移行はデータベースユーザーの読み書き権限やデータベースのネットワーク接続などが要件を満たしているかどうかをチェックします。すべてのチェック項目が合格した場合にのみ、データ移行タスクを開始できます。事前チェックでエラーが発生した場合:
問題を調査・処理した後、事前チェックを再実行し、成功するまで繰り返します。
失敗した事前チェック項目の操作列にある スキップ をクリックすると、ダイアログボックスが表示され、この操作をスキップした場合の具体的な影響が示されます。スキップしてもよいことを確認したら、ダイアログボックスの OK をクリックします。
事前チェックに成功したら、購入 をクリックし、データ移行インスタンスの購入 ページで購入を行います。
購入が完了すると、データ移行タスクを開始できます。購入の詳細については、データ移行インスタンスの購入を参照してください。データ移行インスタンスの購入が一時的に不要な場合は、保存 をクリックしてデータ移行タスクの詳細ページに移動し、後から手動で購入することができます。
データ移行の詳細ページの右上にある 検証タスクの設定 をクリックすると、データ送信元データベースとデータ送信先データベースのデータ差異を比較できます。詳細については、データ検証タスクの新規作成のドキュメントを参照してください。
データ移行サービスでは、データ移行タスクの実行中に移行オブジェクトを変更できます。詳細については、移行オブジェクトの表示と変更を参照してください。データ移行タスクは、選択した移行タイプに従って順次実行されます。詳細については、データ移行タスクの詳細を見るの「移行の詳細を見る」モジュールを参照してください。