本記事では、OceanBaseデータベースのMySQL互換モードからOracle互換モードへのデータ移行方法、およびOceanBaseデータベースのOracle互換モードからMySQL互換モードへのデータ移行方法について説明します。
注意
データ移行タスクが長期間非アクティブ状態(タスク状態が 失敗、一時停止、または 完了)の場合、増分ログの保持期間などの影響でタスクが復旧できない可能性があります。データ移行システムは、非アクティブ状態が7日を超えるタスクを自動的に解放し、関連リソースを回収します。タスクに対してアラートを設定し、タスク関連の異常を速やかに処理することを推奨します。
前提条件
ターゲット側のOceanBaseデータベースに対応するスキーマが作成されていること。
ソース側とターゲット側のOceanBaseデータベースのクラスタおよびテナントが作成されていること。詳細については、クラスタの作成およびテナントの作成をご参照ください。
OceanBaseデータベースにデータ移行専用のデータベースユーザーを作成し、関連する権限を付与していること。詳細については、データ移行ユーザー権限をご参照ください。
制限事項
プロジェクトロールが プロジェクトオーナー、プロジェクト管理者、または データサービス管理者 のいずれかであるユーザーのみが、新規データ移行タスクの作成をサポートします。
ソースデータベースの操作制限
構造移行およびフル移行段階では、データベースまたはテーブル構造の変更を行うDDL操作を実行しないでください。そうでない場合、データ移行タスクが中断する可能性があります。
現在、データ移行はOceanBaseデータベース(MySQLおよびOracle互換モードを含む)V2.x、V3.x、およびV4.xをサポートしています。
データ移行は、データベース名、テーブル名、列名がASCIIコードであり、特殊文字(.|"'`()=;/&および改行を含む)を含まないオブジェクトのみの移行をサポートします。
ターゲット側がデータベースの場合、データ移行はターゲット側にトリガー(Trigger)が存在することをサポートしていません。存在する場合、データ移行が失敗する可能性があります。
注意事項
ソース側の文字セットがUTF-8の場合、ターゲット側ではソース側と互換性のある文字セット(UFF-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互換モードからOceanBaseデータベースのOracle互換モードに複数のNULL値を同期する際、最初のNULL値のみが正常に挿入され、その後のNULL値は一意制約列の競合により破棄されます。
OceanBaseデータベースをソースとして増分同期を行う場合、データベーステーブルオブジェクトにUDT列が含まれていると、UDT列をサポートしていないため増分同期タスクが異常終了する可能性があります。
サポートされているソースおよびターゲットインスタンスの種類
クラウドプロバイダー |
ソース |
ターゲット |
|---|---|---|
| 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 |
操作手順
データ移行タスクを新規作成します。

OB 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、ファーウェイ・クラウド、Alibaba Cloud、および テンセント・クラウド をサポートしています。ソースと同じクラウドプロバイダーを選択することも、異なるクラウド間でのデータ移行も可能です。 説明
現在、クラウド間のデータ移行機能はデフォルトで無効です。この機能を使用する場合は、OB 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は、速度制限とトラフィック制限の機能としてのみ機能します。フル移行で実際に達成可能な性能は、ソース側、ターゲット側、インスタンス仕様の設定などの要因の影響を受けます。
ターゲット側テーブルにレコードが存在する場合の処理ポリシー 処理ポリシーには、移行を停止 と 無視する が含まれます: - 移行を停止 を選択した場合、ターゲット側のテーブルにデータが存在すると、フル移行はエラーとして「移行を許可できません」と表示されます。ターゲット側のデータを適切に処理してから、移行を続行してください。
注意
エラー発生後に「復元」をクリックすると、データ移行はこの設定オプションを無視し、テーブルデータの移行を続行します。操作は慎重に行ってください。
- 無視する を選択した場合、ターゲット側のテーブルにデータが存在すると、元のデータと書き込むデータが競合する場合、データ移行は競合データをログに記録し、元のデータを変更せずにデータ書き込みを行うポリシーを採用します。 </ ul>
インデックスの後付けを許可するかどうか インデックスの後付け機能は、フル移行の所要時間を短縮できます。ここで、フルデータ移行完了後にインデックスを作成するかどうかを設定できます。インデックスの後付けを選択する際の注意事項については、表の下部の説明をご参照ください。 注意
移行タイプの選択 ページで 構造移行 と フル移行 の両方を選択した場合にのみ、このオプションの設定がサポートされます。
- 一意でないキーインデックスのみ、後付け作成がサポートされます。
インデックスの後付けを許可する場合は、OceanBaseデータベースのハードウェア条件と現在の業務トラフィック状況に基づき、CLIツールを使用して以下のビジネステナントパラメータを調整することを推奨します。
// ファイルメモリバッファサイズの制限 ALTER SYSTEM SET _temporary_file_io_area_size = '10' tenant = 'xxx'; // OceanBaseデータベースV4.xでのトラフィック制限の無効化 ALTER SYSTEM SET sys_bkgd_net_percentage = 100;- 移行を停止 を選択した場合、ターゲット側のテーブルにデータが存在すると、フル移行はエラーとして「移行を許可できません」と表示されます。ターゲット側のデータを適切に処理してから、移行を続行してください。
増分同期
タイプとオブジェクトを選択してください ページで、一方向同期 > 増分同期 を選択した場合に、以下のパラメータが表示されます。
パラメータ説明書き込み並列設定 このパラメータは、増分同期段階でターゲット側にデータを書き込む並列数を設定します。最大値は512です。並列数が高すぎると、ターゲット側の負荷が過大になり、業務に影響を与える可能性があります。 増分移行レートの制限 実際のニーズに応じて、増分同期レートの制限を有効にするかどうかを決定できます。有効にする場合は、RPS(増分同期段階で1秒間にターゲット側に同期できるデータ行数の最大値の制限)とBPS(増分同期段階で1秒間にターゲット側に同期できるデータ量の最大値の制限)を設定してください。 説明
ここで設定されたRPSとBPSは、速度制限とトラフィック制限の機能としてのみ機能します。増分同期で実際に達成可能な性能は、ソース側、ターゲット側、インスタンス仕様の設定などの要因の影響を受けます。
増分同期開始時刻 - 移行タイプの選択時に 全量移行 を選択している場合、このパラメータは表示されません。
- 移行タイプの選択時に 完全移行 を選択していないが、増分同期 を選択している場合は、特定の時刻以降のデータの移行を指定してください。デフォルトは現在のシステム時刻です。増分同期の開始時刻の設定をご参照ください。
上級オプション
ターゲット側のOceanBaseデータベースがV4.3.0以降のバージョンであり、かつ タイプとオブジェクトを選択してください ページで スキーマ移行 または 増分同期 > DDL同期 を選択した場合にのみ、このセクションのパラメータが表示されます。

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