このトピックでは、ホワイトリスト内のユーザーとして、データ伝送サービスを使用して、MySQL 互換モードの OceanBase データベースから MySQL データベースにデータを移行する方法について説明します。ホワイトリストへの参加が必要な場合は、OceanBase テクニカルサポートにお問い合わせください。
長期間非アクティブな状態のままになっているデータ移行タスクは、増分ログの保持期間によっては復元に失敗する可能性があります。非アクティブな状態は、失敗、停止、完了です。データ伝送サービスは、関連リソースを回収するため、3 日を超えて非アクティブな状態のままになっているデータ移行タスクを解放します。データ移行タスクのアラートを設定し、タスクの例外を速やかに処理することをお勧めします。
前提条件
データ伝送サービスには、クラウド リソースにアクセスする権限があります。詳細については、「データ伝送のロールに権限を付与する」をご参照ください。
ソースの MySQL 互換モードの OceanBase データベースとターゲットの MySQL データベース用に、データ移行専用のデータベース ユーザーを作成し、必要な権限をユーザーに付与しました。詳細については、「データソースのユーザー権限を設定する」をご参照ください。
制限事項
ソースデータベースの制限事項
スキーマ移行または完全移行中に、データベースまたはテーブル スキーマを変更する DDL 操作を実行しないでください。そうしないと、データ移行タスクが中断される可能性があります。
データ伝送サービスは、MySQL 5.5、5.6、5.7、および 8.0 をサポートしています。
データ伝送サービスは、FLOAT 型と BINARY 型の両方のデータを含むプライマリキーまたは一意キーをサポートしていません。
データ伝送サービスは、MySQL 5.6 では、長さが 767 バイト(または 191 文字)を超えるインデックス フィールドをサポートしていません。
ターゲットがデータベースの場合、データ伝送サービスはターゲットのトリガーをサポートしていません。ターゲット データベースにトリガーが存在する場合、データ移行が失敗する可能性があります。
データ伝送サービスは、オブジェクトのデータベース名、テーブル名、および列名が特殊文字を含まない ASCII エンコードである場合にのみ、オブジェクトの移行をサポートします。特殊文字は、改行、スペース、および次の文字です。 . | " ' ` ( ) = ; / & \.
データ伝送サービスは、スタンバイ OceanBase データベースをソースとしてサポートしていません。
考慮事項
ソースで UTF-8 文字セットを使用する場合、文字化けを避けるために、ターゲットで UTF-8 または UTF-16 などの互換性のある文字セットを使用することをお勧めします。
ノード間またはクライアントとサーバー間でクロックが同期していない場合、増分同期または逆増分中のレイテンシが不正確になる可能性があります。
たとえば、クロックが標準時刻よりも早い場合、レイテンシは負になる可能性があります。クロックが標準時刻よりも遅い場合、レイテンシは正になる可能性があります。
ソースの
explicit_defaults_for_timestamp変数の値がターゲットの値と異なる場合、検証中に TIMESTAMP 型のデータに不整合が生じる可能性があります。DDL 同期が無効になっているときにターゲットの一意なインデックスを変更する場合は、データの不整合を避けるためにデータ移行タスクを再起動する必要があります。
DECIMAL、FLOAT、DOUBLE などのデータ型の列に対するデータ伝送サービスの移行精度が予想どおりであるかどうかを確認します。ターゲット フィールド型の精度がソース フィールド型の精度よりも低い場合、精度が高い値は切り捨てられる可能性があります。これにより、ソース フィールドとターゲット フィールド間でデータの不整合が生じる可能性があります。
MySQL 互換モードの OceanBase データベースでサポートされている TIMESTAMP 値の範囲は 0000-00-00 00:00:00.000000 から 9999-12-31 23:59:59.999999 で、MySQL でサポートされている範囲は 1970-01-01 00:00:01.000000 から 2038-01-19 03:14:07.999999 です。ターゲットのサポート範囲外の TIMESTAMP 値がソースに書き込まれた場合、データ伝送サービスは引き続きこの値をターゲットに挿入しますが、
error.logファイルまたは例外テーブルにも記録します。ソースが OceanBase データベースで DDL 同期が有効になっているデータ移行タスクでは、ソースのテーブルで RENAME 操作が実行された場合、増分同期中のデータ損失を避けるためにタスクを再起動することをお勧めします。
複数のテーブルを集約する場合、次の点に注意してください。
一致ルールを指定して、ソースとターゲット間のマッピングを設定することをお勧めします。
ターゲットでスキーマを手動で作成することをお勧めします。データ伝送サービスを使用してスキーマを作成する場合は、スキーマ移行ステップで失敗したオブジェクトをスキップします。
ソースとターゲットのテーブル スキーマの違いにより、データ整合性が生じる可能性があります。既知のシナリオを以下に示します。
ターゲットでテーブル スキーマを手動で作成する場合、いずれかの列のデータ型がデータ伝送サービスでサポートされていないと、ターゲットで暗黙的なデータ型変換が発生し、ソースとターゲット間で列型に不整合が生じる可能性があります。
ターゲットの列の長さがソースの列の長さよりも短い場合、この列のデータが自動的に切り捨てられ、ソースとターゲット間でデータの不整合が生じる可能性があります。
データ移行タスクを作成する際に [増分同期] のみを選択した場合、データ伝送サービスでは、ソースデータベースのローカル増分ログを少なくとも 48 時間保持する必要があります。
データ移行タスクの作成時に[完全移行]および[増分同期]を選択した場合、データ転送サービスでは、ソースデータベースのローカル増分ログを少なくとも 7 日間保持する必要があります。データ転送サービスが増分ログを取得できない場合、データ移行タスクが失敗したり、移行後にソースとターゲット間でデータに不整合が生じたりするおそれがあります。
ソースまたはターゲットに大文字と小文字のみが異なるテーブル オブジェクトが含まれている場合、ソースまたはターゲットで大文字と小文字が区別されないため、データ移行の結果が予期したとおりにならない可能性があります。
サポートされているソースおよびターゲット インスタンス タイプ
次の表では、MySQL 互換モードの OceanBase データベースは OB_MySQL と呼ばれ、OceanBase クラスタ インスタンスとサーバーレス インスタンスをサポートしています。
ソース | ターゲット |
OB_MySQL | MySQL (RDS インスタンス) |
OB_MySQL | MySQL (PolarDB インスタンス) |
OB_MySQL | MySQL (VPC 内のセルフマネージド データベース) |
OB_MySQL | MySQL (パブリック IP アドレスを持つセルフマネージド データベース) |
データ型マッピング
MySQL 互換モードの OceanBase データベースのデータ型 | MySQL データベースのデータ型 |
INTEGER | INTEGER |
TINYINT | TINYINT |
SMALLINT | SMALLINT |
MEDIUMINT | MEDIUMINT |
BIGINT | BIGINT |
FLOAT | FLOAT |
DOUBLE | DOUBLE |
REAL | REAL |
DECIMAL | DECIMAL |
NUMERIC | NUMERIC |
BOOL | TINYINT(1) |
DATE | DATE |
DATETIME | DATETIME |
TIMESTAMP | TIMESTAMP |
TIME | TIME |
YEAR | YEAR |
CHAR | CHAR |
VARCHAR | VARCHAR TEXT ( 65535 バイト超) |
BLOB | BLOB |
TEXT | TEXT |
BINARY | BINARY |
VARBINARY | VARBINARY |
BIT | BIT |
ENUM | ENUM |
SET | SET |
GEOMETRY | GEOMETRY |
POINT | POINT |
LINESTRING | LINESTRING |
POLYGON | POLYGON |
MULTIPOINT | MULTIPOINT |
MULTILINESTRING | MULTILINESTRING |
MULTIPOLYGON | MULTIPOLYGON |
GEOMETRYCOLLECTION | GEOMETRYCOLLECTION |
手順
ApsaraDB for OceanBase コンソール にログインし、データ移行タスクを購入します。
詳細については、「データ移行タスクを購入する」をご参照ください。
[データ伝送] > [データ移行] を選択します。表示されるページで、データ移行タスクの [構成] をクリックします。

既存のタスクの構成を参照する場合は、[構成の参照] をクリックします。詳細については、「データ移行タスクの構成を参照する」をご参照ください。
[ソースとターゲットの選択] ページで、パラメーターを設定します。
パラメーター
説明
移行タスク名
数字と文字の組み合わせに設定することをお勧めします。スペースを含めることはできず、長さは 64 文字を超えることはできません。
ソース
MySQL 互換モードの OceanBase データソースを作成済みの場合は、ドロップダウン リストから選択します。それ以外の場合は、ドロップダウン リストの [新しいデータソース] をクリックし、右側に表示されるダイアログ ボックスで作成します。パラメーターの詳細については、「OceanBase データソースを作成する」をご参照ください。
ターゲット
MySQL データソースを作成済みの場合は、ドロップダウン リストから選択します。それ以外の場合は、ドロップダウン リストの [新しいデータソース] をクリックし、右側に表示されるダイアログ ボックスで作成します。パラメーターの詳細については、「MySQL データソースを作成する」をご参照ください。
タグ (オプション)
ドロップダウン リストからターゲット タグを選択します。[タグの管理] をクリックして、タグを作成、変更、および削除することもできます。詳細については、「タグを使用してデータ移行タスクを管理する」をご参照ください。
[次へ] をクリックします。[移行タイプの選択] ページで、[同期トポロジ] に [一方向同期] を選択します。
データ伝送サービスは、一方向同期と双方向同期の両方をサポートしています。このトピックでは、一方向同期タスクを設定する方法について説明します。双方向同期の詳細については、「双方向同期タスクを設定する」をご参照ください。
現在のデータ移行タスクのタイプを選択します。
[同期トポロジ] に [一方向同期] を選択した場合、サポートされている移行タイプは、スキーマ移行、完全移行、増分同期、完全検証、および逆増分です。

移行タイプ
説明
スキーマ移行
スキーマ移行タスクが開始されると、データ伝送サービスは、データベース オブジェクト(テーブル、インデックス、制約、コメント、ビューなど)の定義をソース データベースからターゲット データベースに移行し、一時テーブルを自動的に除外します。
完全移行
完全移行タスクが開始されると、データ伝送サービスは、ソース データベースのテーブルの既存データをターゲット データベースの対応するテーブルに移行します。[完全移行] を選択した場合は、データ移行の前に MySQL 互換モードの OceanBase データベースの統計情報を収集することをお勧めします。
増分同期
増分同期タスクが開始されると、データ伝送サービスは、変更されたデータ(追加、変更、または削除されたデータ)をソース データベースからターゲット データベースの対応するテーブルに同期します。
[増分同期] のオプションは、[DML 同期] と [DDL 同期] です。必要に応じてオプションを選択できます。詳細については、「DDL/DML 同期を設定する」をご参照ください。[増分同期] には次の制限があります。
[DDL 同期] を選択した場合、ソース データベースでデータ伝送サービスでサポートされていない DDL 操作を実行すると、データ移行が中断される可能性があります。
DDL 操作が ADD COLUMN の場合は、列を NULL 列に設定することをお勧めします。そうしないと、データ移行が中断される可能性があります。
完全検証
完全移行タスクと増分同期タスクが完了すると、データ伝送サービスは自動的に完全検証タスクを開始し、ソース データベースとターゲット データベースのテーブルを検証します。
[完全検証] を選択した場合は、完全検証の前に MySQL 互換モードの OceanBase データベースの統計情報を収集し、
ANALYZE文を使用して MySQL データベースの統計情報を収集することをお勧めします。[増分同期] を選択したが、[DML 同期] セクションですべての DML 操作を選択していない場合、データ伝送サービスは完全検証をサポートしていません。
逆増分
ビジネス データベースの切り替え後にターゲット データベースで行われたデータ変更は、逆増分によってソース データベースにリアルタイムで同期されます。
通常、増分同期の構成は逆増分で再利用されます。必要に応じて、逆増分の構成をカスタマイズすることもできます。
[次へ] をクリックします。[移行オブジェクトの選択] ページで、データ移行タスクの移行オブジェクトを指定します。
[オブジェクトの指定] または [一致ルール] を選択して、移行オブジェクトを指定できます。このトピックでは、[オブジェクトの指定] を使用して移行オブジェクトを指定する方法について説明します。一致ルールの詳細については、「一致ルールを設定および変更する」トピックの「データベース間のデータ移行/同期のワイルドカード パターン」セクションをご参照ください。
重要移行するテーブルの名前、およびテーブル内の列の名前には、漢字を含めることはできません。
データベース名またはテーブル名に二重ドル記号($$)が含まれている場合、移行タスクを作成することはできません。
[移行タイプの選択] ページで [DDL 同期] を選択した場合は、[一致ルール] オプションを使用して移行オブジェクトを選択することをお勧めします。このようにして、移行ルールを満たすすべての新しいオブジェクトが同期されます。[オブジェクトの指定] オプションを使用して移行オブジェクトを選択した場合、新規または名前変更されたオブジェクトは同期されません。

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

パラメーター
説明
読み取り同時実行性
完全移行中にソースからデータを読み取るための同時実行性。最大値は 512 です。読み取り同時実行性が高いと、ソースに過度のストレスがかかり、ビジネスに影響を与える可能性があります。
書き込み同時実行性
完全移行中にターゲットにデータを書き込むための同時実行性。最大値は 512 です。書き込み同時実行性が高いと、ターゲットに過度のストレスがかかり、ビジネスに影響を与える可能性があります。
完全移行レート制限
必要に応じて、完全移行レートを制限するかどうかを選択できます。完全移行レートを制限することを選択した場合は、1 秒あたりのレコード数 (RPS) と 1 秒あたりのバイト数 (BPS) を指定する必要があります。RPS は、完全移行中にターゲットに移行されるデータ行の最大数を 1 秒あたりで指定し、BPS は、完全移行中にターゲットに移行されるデータの最大量をバイト単位で 1 秒あたりで指定します。
説明ここで指定された RPS 値と BPS 値は調整専用です。実際の完全移行のパフォーマンスは、ソースとターゲットの設定やインスタンスの仕様などの要因の影響を受けます。
ターゲット データベースの空でないテーブルの処理
有効な値は、[無視] と [移行の停止] です。
[無視] を選択した場合、挿入されるデータがターゲット テーブルの既存のデータと競合すると、データ伝送サービスは競合するデータをログに記録し、既存のデータを保持します。
重要[無視] を選択すると、完全検証中に IN モードでデータがプルされます。この場合、ターゲットにソースに存在しないデータが含まれていると検証は適用されず、検証のパフォーマンスが低下します。
[移行の停止] を選択し、ターゲット テーブルにレコードが含まれている場合、完全移行中に移行がサポートされていないことを示すエラーが報告されます。この場合、移行を続行する前に、ターゲット テーブルのデータを処理する必要があります。
重要エラーを促すダイアログ ボックスで [復元] をクリックすると、データ伝送サービスはこのエラーを無視してデータの移行を続行します。注意して進めてください。
事後インデックス作成
完全移行の完了後にインデックスを作成するかどうかを指定します。事後インデックス作成により、完全移行に必要な時間を短縮できます。事後インデックス作成に関する考慮事項については、以下の説明をご参照ください。
重要このパラメーターは、[移行タイプの選択] ページでスキーマ移行と[フル移行]の両方を選択した場合にのみ表示されます。
移行の完了後に作成できるのは、非一意キー インデックスのみです。
事後インデックス作成が許可されている場合は、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 と BPS を指定する必要があります。RPS は、増分同期中にターゲットに同期されるデータ行の最大数を 1 秒あたりで指定し、BPS は、増分同期中にターゲットに同期されるデータの最大量をバイト単位で 1 秒あたりで指定します。
説明ここで指定された RPS 値と BPS 値は調整専用です。実際の増分同期のパフォーマンスは、ソースとターゲットの設定やインスタンスの仕様などの要因の影響を受けます。
増分同期の開始タイムスタンプ
[移行タイプの選択] ページで [完全移行] を選択した場合は、このパラメーターは表示されません。
[増分同期] を選択したが [完全移行] を選択していない場合は、データの同期を開始する時点を指定します。デフォルト値は現在のシステム時刻です。詳細については、「増分同期のタイムスタンプを設定する」をご参照ください。
逆増分
次のパラメーターは、[移行タイプの選択] ページで [一方向同期] と [逆増分] を順番に選択した場合にのみ表示されます。デフォルトでは、増分同期の構成は逆増分で再利用されます。

増分同期の構成を再利用せず、必要に応じて逆増分同期を設定することもできます。
パラメーター
説明
書き込み同時実行性
逆増分中にソースにデータを書き込むための同時実行性。最大値は 512 です。同時実行性が高いと、ソースに過度のストレスがかかり、ビジネスに影響を与える可能性があります。
逆増分レート制限
必要に応じて、逆増分レートを制限するかどうかを選択できます。逆増分レートを制限することを選択した場合は、RPS と BPS を指定する必要があります。RPS は、逆増分中にソースに同期されるデータ行の最大数を 1 秒あたりで指定し、BPS は、逆増分中にソースに同期されるデータの最大量をバイト単位で 1 秒あたりで指定します。
説明ここで指定された RPS 値と BPS 値は調整専用です。実際の逆増分のパフォーマンスは、ソースとターゲットの設定やインスタンスの仕様などの要因の影響を受けます。
増分同期の開始タイムスタンプ
[移行タイプの選択] ページで [完全移行] を選択した場合は、このパラメーターは表示されません。
[増分同期] を選択したが [完全移行] を選択していない場合は、デフォルトで転送切り替えの開始タイムスタンプ(存在する場合)が使用されます。このパラメーターは変更できません。
詳細パラメーター
このセクションは、ソースが OceanBase データベース V4.3.0 以降であり、[移行タイプの選択] ページで [逆増分] の [DDL 同期] を選択した場合にのみ表示されます。

ソース テーブル オブジェクトのストレージ タイプを指定します。ソース テーブル オブジェクトでサポートされているストレージ タイプは、[デフォルト]、[行ストレージ]、[列ストレージ]、および [ハイブリッド列ストレージ] です。詳細については、「default_table_store_format」をご参照ください。
説明[デフォルト] 値は、ターゲットのパラメーター構成に基づいて他のパラメーターが自動的に設定されることを意味します。逆増分 DDL 同期の新しいテーブル オブジェクトは、指定されたストレージ タイプに基づいて対応するスキーマに書き込まれます。
[事前チェック] をクリックして、データ移行タスクの事前チェックを開始します。
事前チェック中に、データ伝送サービスは、データベース ユーザーの読み取りおよび書き込み権限とデータベースのネットワーク接続を確認します。データ同期タスクは、すべてのチェック項目に合格した後でのみ開始できます。事前チェック中にエラーが返された場合は、次の操作を実行できます。
問題を特定してトラブルシューティングし、再度事前チェックを実行します。
失敗した事前チェック項目の [アクション] 列で [スキップ] をクリックします。操作の結果を促すダイアログ ボックスで、[OK] をクリックします。
事前チェックに合格したら、[タスクの開始] をクリックします。
タスクを今すぐ開始する必要がない場合は、[保存] をクリックします。後で [移行タスク] ページで、またはバッチ操作を実行することでタスクを開始できます。バッチ操作の詳細については、「データ移行タスクのバッチ操作を実行する」をご参照ください。
データ伝送サービスでは、移行タスクの実行中に、移行オブジェクトとその行フィルタリング条件を変更できます。詳細については、「移行オブジェクトとそのフィルター条件を表示および変更する」をご参照ください。データ移行タスクが開始されると、選択した移行タイプに基づいて実行されます。詳細については、「移行の詳細を表示する」をご参照ください。