このトピックでは、データ伝送サービスを使用して、クラウドネイティブマルチモデル Lindorm データベースから OBKV にデータを移行する方法について説明します。
データ移行タスクが非アクティブな状態のまま長時間残っていると、増分ログの保存期間によっては復元できない場合があります。非アクティブな状態とは、失敗、停止、完了です。データ転送サービスは、関連リソースを再利用するために、3 日間を超えて非アクティブな状態のままであるデータ移行タスクを解放します。データ移行タスクのアラートを設定し、タスクの例外をタイムリーに処理することをお勧めします。
背景
ApsaraDB for OceanBase コンソールでタスクを作成して、スキーマ移行、完全移行、および増分同期を通じて、既存および増分のビジネスデータを Lindorm データベースから OBKV にシームレスに移行できます。
Lindorm は、モノのインターネット(IoT)、インターネット、および車載インターネット(IoV)向けに設計および最適化されたクラウドネイティブのマルチモデル統合データベースです。データ伝送サービスは、ワイドテーブルエンジンサービスである LindormTable をサポートしています。詳細については、「概要」をご参照ください。
OBKV は、ApsaraDB for OceanBase Standard Edition でサポートされている Standard Edition(Key-Value)シリーズに属しています。リレーショナル SQL データベースシステムである OceanBase Database に基づいて開発されており、OceanBase Database の Shared-Nothing アーキテクチャを完全に再利用しています。詳細については、「製品シリーズ」をご参照ください。
前提条件
データ伝送サービスには、クラウドリソースにアクセスする権限があります。詳細については、「データ伝送のロールに権限を付与する」をご参照ください。
データ移行のためにソース Lindorm データベースに専用のユーザーを作成し、必要な権限をユーザーに付与しています。詳細については、「Lindorm データソース」をご参照ください。
データ移行のためにターゲット OBKV インスタンスに専用のユーザーを作成し、必要な権限をユーザーに付与しています。詳細については、「OBKV インスタンスのデータベースアカウントを作成し、アカウントに権限を付与する」をご参照ください。
制限事項
現在、データ伝送サービスは LindormTable V2.x、および OBKV V4.2.1 と V4.2.4 をサポートしています。
データ伝送サービスは、
tablename
とcolumnfamily
の値が数字(0~9)、小文字(a~z)、大文字(A~Z)、およびアンダースコア(_)で構成されているデータのみを Lindorm データベースから OBKV に移行できます。Lindorm データベースから OBKV にデータを移行する場合、HBase テーブル オブジェクトのみがサポートされます。その他のタイプのテーブル オブジェクトでは、データ品質の問題が発生する可能性があります。
増分同期設定を構成する場合は、Kafka パーティションの数を 1 に設定することをお勧めします。
考慮事項
Lindorm データベースと OBKV 間のデータ移行タスクは、データ移行のためだけに作成することをお勧めします。長期間のデータ同期には使用しないでください。以下の場合、増分同期フェーズでデータ品質の問題が発生し、完全検証フェーズで検出される可能性があります。
タイムスタンプであるバージョンを指定して値を更新する場合、データ転送サービスは更新を識別できません。
行キーのフィールド値を空の文字列("")に設定する Put 操作を実行すると、増分同期フェーズで値が削除される可能性があります。
Lindorm データベースから OBKV にデータを移行する場合、完全検証中は IN モードでのみデータがプルされます。このモードでは、ターゲットにソースに存在しないデータが含まれている場合、検証は適用されず、結果として検証パフォーマンスが低下します。
ソースまたはターゲットデータベースに大文字と小文字のみが異なるテーブルオブジェクトが含まれている場合、ソースまたはターゲットデータベースの大文字と小文字の区別がないため、データ移行の結果が予期したとおりにならない可能性があります。
ノード間、またはクライアントとサーバー間のクロックが同期していない場合、増分同期または逆増分同期の待機時間が不正確になる可能性があります。
たとえば、クロックが標準時刻よりも早い場合、待機時間は負になる可能性があります。クロックが標準時刻よりも遅い場合、待機時間は正になる可能性があります。
Lindorm データベースと OBKV に設定されている Time To Live(TTL)値が一致しない場合、ソースとターゲットのデータに不整合が生じる可能性があります。
データ移行タスクの作成時に [増分同期] のみを選択した場合、データ転送サービスでは、ソースデータベースのデータが Kafka に 48 時間以上保持されている必要があります。ソース データベースのデータが Kafka に 48 時間以上保持されます。
選択した場合、フル移行 および 増分同期データ移行タスクを作成したときに、データ転送サービスでは、ソースデータベースのデータが Kafka に 7 日間以上保持されている必要があります。保持されていない場合、データ転送サービスは Kafka から保持データを取得できません。その結果、データ移行タスクが失敗したり、移行後にソースとターゲットのデータに不整合が生じたりする可能性があります。
手順
ApsaraDB for OceanBase コンソール にログインし、データ移行タスクを購入します。
詳細については、「データ移行タスクを購入する」をご参照ください。
[データ送信] > [データ移行] を選択します。表示されるページで、データ移行タスクの [構成] をクリックします。
既存のタスクの構成を参照する場合は、[構成の参照] をクリックします。詳細については、「データ移行タスクの構成を参照する」をご参照ください。
[ソースとターゲットの選択] ページで、パラメーターを構成します。
パラメーター
説明
移行タスク名
数字と文字の組み合わせに設定することをお勧めします。スペースを含めることはできず、長さは 64 文字以内にする必要があります。
ソース
Lindorm データソースを作成済みの場合は、ドロップダウンリストから選択します。それ以外の場合は、ドロップダウンリストの [新しいデータソース] をクリックし、右側に表示されるダイアログボックスで作成します。パラメーターの詳細については、「Lindorm データソースを作成する」をご参照ください。
ターゲット
OBKV データソースを作成済みの場合は、ドロップダウンリストから選択します。それ以外の場合は、ドロップダウンリストの [新しいデータソース] をクリックし、右側に表示されるダイアログボックスで作成します。パラメーターの詳細については、「OceanBase データソースを作成する」をご参照ください。
タグ
ドロップダウンリストからターゲットタグを選択します。また、[タグの管理] をクリックして、タグの作成、変更、削除を行うこともできます。詳細については、「タグを使用してデータ移行タスクを管理する」をご参照ください。
[次へ] をクリックします。[移行タイプの選択] ページで、現在のデータ移行タスクの移行タイプを指定します。
サポートされている移行タイプは、スキーマ移行、完全移行、増分同期、完全検証、および逆増分同期です。
移行タイプ
説明
スキーマ移行
スキーマ移行タスクが開始されると、データ送信サービスは、テーブルやカラムファミリなどのデータオブジェクトの定義をソースデータベースからターゲットデータベースに移行し、一時テーブルを自動的に除外します。
完全移行
完全移行タスクが開始されると、データ送信サービスは、ソースデータベースのテーブルにある既存のデータをターゲットデータベースの対応するテーブルに移行します。
増分同期
増分同期タスクが開始されると、データ送信サービスは、変更されたデータ (追加、変更、または削除されたデータ) をソースデータベースからターゲットデータベースの対応するテーブルに同期します。
[増分同期] では、[DML 同期] がサポートされています。必要に応じて操作を選択できます。詳細については、「DDL/DML 同期を構成する」をご参照ください。
説明Kafka データソースにバインドせずに Lindorm データソースを作成した場合、[増分同期] を選択することはできません。
[増分同期] で [DML 同期] を選択する場合は、Alibaba Cloud テクニカルサポートに連絡して、Kafka に配信されるデータが順序付けられていることを確認してください。そうでない場合、ソースとターゲットのデータに不整合が生じる可能性があります。Lindorm から Kafka へのデータ配信の構成の詳細については、「概要」をご参照ください。
完全検証
完全移行タスクと増分同期タスクが完了すると、データ送信サービスは自動的に完全検証タスクを開始し、ソースデータベースとターゲットデータベースのテーブルを検証します。
逆増分同期
ビジネスデータベースのスイッチオーバー後にターゲットデータベースで行われたデータ変更は、逆増分同期によってソースデータベースにリアルタイムで同期されます。
通常、増分同期の構成は逆増分同期に再利用されます。必要に応じて、逆増分同期の構成をカスタマイズすることもできます。
(オプション) [次へ] をクリックします。[データソースの詳細] ダイアログボックスで、Kafka データソースと対応するトピックを選択します。次に、[接続テスト] をクリックします。テストが成功したら、[保存] をクリックします。
説明Lindorm データソースの作成時に [増分同期設定] を選択せず、[移行タイプの選択] ステップで [増分同期] を選択した場合にのみ、タスク作成中に [データソースの詳細] ダイアログボックスが表示されます。パラメーターの詳細については、「Lindorm データソースを作成する」をご参照ください。
[次へ] をクリックします。[移行オブジェクトの選択] ページで、現在のデータ移行タスクの移行オブジェクトを選択します。
左側の移行するオブジェクトを選択し、> をクリックして右側のリストに追加します。
データ送信サービスでは、テキストファイルからのオブジェクトのインポート、ターゲットオブジェクトの名前変更、パーティションの設定、および単一の移行オブジェクトまたはすべての移行オブジェクトの削除を行うことができます。
操作
説明
オブジェクトのインポート
右側のリストの右上隅にある [オブジェクトのインポート] をクリックします。
表示されるダイアログボックスで、[OK] をクリックします。
重要この操作を実行すると、以前の選択が上書きされます。注意して進めてください。
[オブジェクトのインポート] ダイアログボックスで、移行するオブジェクトをインポートします。
CSV ファイルをインポートして、データベースまたはテーブルの名前を変更し、行フィルタリング条件を設定できます。詳細については、「移行オブジェクトの設定をダウンロードしてインポートする」をご参照ください。
[検証] をクリックします。
移行オブジェクトをインポートした後、その有効性を確認します。
検証が成功したら、[OK] をクリックします。
オブジェクトの名前変更
データ送信サービスでは、移行オブジェクトの名前を変更できます。移行オブジェクトの名前は、
tablename$columnfamily
形式です。詳細については、「データベーステーブルの名前を変更する」をご参照ください。重要Lindorm データベースから OBKV にデータを移行する場合、デフォルトの名前空間のオブジェクトのみを OBKV のデフォルトデータベースに移行でき、デフォルトデータベースの名前を変更することはできません。
設定の構成
データ送信サービスでは、[スキーマ移行] が選択されている場合にのみ、パーティションを設定できます。
[パーティション設定] ダイアログボックスでは、[パーティション方式] は [キーパーティション] のみをサポートしています。次のオプションを構成できます。
パーティションキー
デフォルト値は K で、変更できません。
パーティション数
1 ~ 1024 の値を指定できます。
複合仮想カラムパーティションを使用する
デフォルトでは、このオプションは選択されていません。これは、仮想カラムを追加せずにキーパーティションを使用することを指定します。
このオプションを選択した場合は、[仮想カラム定義] を指定する必要があります。部分文字列仮想カラムのみがサポートされています (例:
substring(K,1,4)
)。
1 つまたはすべてのオブジェクトを削除する
データ送信サービスでは、データマッピング中に右側のリストに追加された単一のオブジェクトまたはすべての移行オブジェクトを削除できます。
単一の移行オブジェクトを削除する
右側のリストで、削除するオブジェクトにポインターを移動し、[削除] をクリックして移行オブジェクトを削除します。
すべての移行オブジェクトを削除する
右側のリストの右上隅にある [すべて削除] をクリックします。表示されるダイアログボックスで、[OK] をクリックしてすべての移行オブジェクトを削除します。
[次へ] をクリックします。[移行オプション] ページで、パラメーターを構成します。
完全移行
次の表に、完全移行のパラメーターを示します。これらのパラメーターは、フル移行移行の種類を選択 ページで を選択した場合にのみ表示されます。
パラメーター
説明
読み取り同時実行性
完全移行中にソースからデータを読み取るための同時実行性。最大値は 512 です。読み取り同時実行性が高いと、ソースに過度の負荷がかかり、ビジネスに影響を与える可能性があります。
書き込み同時実行性
完全移行中にターゲットにデータを書き込むための同時実行性。最大値は 512 です。書き込み同時実行性が高いと、ターゲットに過度の負荷がかかり、ビジネスに影響を与える可能性があります。
完全移行レート制限
必要に応じて、完全移行レートを制限するかどうかを選択できます。完全移行レートを制限することを選択した場合は、1 秒あたりのレコード数 (RPS) と 1 秒あたりのバイト数 (BPS) を指定する必要があります。RPS は、完全移行中にターゲットに移行されるデータ行の最大数を指定し、BPS は、完全移行中にターゲットに移行されるデータの最大バイト数を指定します。
説明ここで指定された RPS 値と BPS 値は、速度制限のためだけにあります。実際の完全移行性能は、ソースとターゲットの設定やインスタンスの仕様などの要因の影響を受けます。
ターゲットデータベースの空でないテーブルの処理
ターゲットテーブルにレコードが含まれている場合に採用される処理方法。このパラメーターは、[移行タイプの選択] ページで [完全移行] が選択されている場合にのみ表示されます。有効な値: [上書き] および [移行の停止]。
[上書き] を選択すると、ターゲットの既存のデータがソースのデータによって上書きされる可能性があります。たとえば、ターゲットにソースのデータレコードと同じキーとタイムスタンプを持つデータレコードが含まれている場合、ターゲットのこのデータレコードの他の値はソースの値に置き換えられます。
[移行の停止] を選択し、ターゲットテーブルにレコードが含まれている場合、完全移行中に移行がサポートされていないことを示すエラーが報告されます。この場合、移行を続行する前に、ターゲットテーブルのデータを処理する必要があります。
重要エラーを知らせるダイアログボックスで [復元] をクリックすると、データ送信サービスはこのエラーを無視してデータの移行を続行します。注意して進めてください。
データバージョンの移行
Lindorm はマルチバージョンストレージをサポートしており、データ行のバージョンをタイムスタンプでマークします。[すべてのバージョン] を選択すると、完全移行中にすべてのバージョンの行が移行されます。[最新バージョン] を選択すると、完全移行中に最新のタイムスタンプの行のみが移行されます。
増分同期
次の表に、増分同期のパラメーターを示します。これらのパラメーターは、[移行タイプの選択] ページで [増分同期] を選択した場合にのみ表示されます。
パラメーター
説明
書き込み同時実行性
増分同期中にターゲットにデータを書き込むための同時実行性。最大値は 512 です。書き込み同時実行性が高いと、ターゲットに過度の負荷がかかり、ビジネスに影響を与える可能性があります。
増分同期レート制限
必要に応じて、増分同期レートを制限するかどうかを選択できます。増分同期レートを制限することを選択した場合は、RPS と BPS を指定する必要があります。RPS は、増分同期中にターゲットに同期されるデータ行の最大数を指定し、BPS は、増分同期中にターゲットに同期されるデータの最大バイト数を指定します。
説明ここで指定された RPS 値と BPS 値は、速度制限のためだけにあります。実際の増分同期性能は、ソースとターゲットの設定やインスタンスの仕様などの要因の影響を受けます。
増分同期の開始タイムスタンプ
このパラメーターは、[移行タイプの選択] ページで [フル移行] を選択した場合、表示されません。
[増分同期] を選択したが [完全移行] を選択していない場合は、データの同期を開始する時点を指定します。デフォルト値は現在のシステム時刻です。詳細については、「増分同期のタイムスタンプを設定する」をご参照ください。
逆増分同期
次の表に、逆増分同期のパラメーターを示します。これらのパラメーターは、[移行タイプの選択] ページで [逆増分] を選択した場合にのみ表示されます。デフォルトでは、増分同期の構成は逆増分同期に再利用されます。
増分同期の構成を再利用せず、必要に応じて逆増分同期を構成することもできます。
パラメーター
説明
書き込み同時実行性
逆増分同期中にソースにデータを書き込むための同時実行性。最大値は 512 です。同時実行性が高いと、ソースに過度の負荷がかかり、ビジネスに影響を与える可能性があります。
逆増分レート制限
必要に応じて、逆増分同期レートを制限するかどうかを選択できます。逆増分同期レートを制限することを選択した場合は、1 秒あたりのリクエスト数 (RPS) と 1 秒あたりのバイト数 (BPS) を指定する必要があります。RPS は、逆増分同期中にソースに同期されるデータ行の最大数を指定し、BPS は、逆増分同期中にソースに同期されるデータの最大バイト数を指定します。
説明ここで指定された RPS 値と BPS 値は、速度制限のためだけにあります。実際の逆増分同期性能は、ソースとターゲットの設定やインスタンスの仕様などの要因の影響を受けます。
増分同期の開始タイムスタンプ
このパラメーターは、[移行タイプの選択] ページで [完全移行] を選択した場合、表示されません。
[増分同期] を選択したが [完全移行] を選択していない場合は、デフォルトで前方スイッチオーバーの開始タイムスタンプ (存在する場合) が使用されます。このパラメーターは変更できません。
完全検証
このセクションは、[移行タイプの選択] ページで [完全検証] を選択した場合にのみ表示されます。
Lindorm はマルチバージョンストレージをサポートしており、データ行のバージョンをタイムスタンプでマークします。[検証データバージョン] で [すべてのバージョン] を選択すると、完全検証中にすべてのデータ行バージョンが検証されます。[検証データバージョン] で [最新バージョン] を選択すると、完全検証中に最新のタイムスタンプのデータ行のみが検証されます。
[事前チェック] をクリックして、データ移行タスクの事前チェックを開始します。
[事前チェック] 中に、データ送信サービスは、データベースユーザーの読み取り権限と書き込み権限、およびデータベースのネットワーク接続を確認します。データ移行タスクは、すべてのチェック項目に合格した後でのみ開始できます。事前チェック中にエラーが返された場合は、次の操作を実行できます。
問題を特定してトラブルシューティングし、再度事前チェックを実行します。
失敗した事前チェック項目の [アクション] 列で [スキップ] をクリックします。操作の結果を確認するダイアログボックスで、[OK] をクリックします。
事前チェックに合格したら、[タスクの開始] をクリックします。
タスクをすぐに開始する必要がない場合は、[保存] をクリックします。後で [移行タスク] ページで、またはバッチ操作を実行することでタスクを開始できます。バッチ操作の詳細については、「データ移行タスクのバッチ操作を実行する」をご参照ください。データ移行タスクが開始されると、選択した移行タイプに基づいて実行されます。詳細については、「移行の詳細を表示する」をご参照ください。
データ送信サービスでは、データ移行中に移行オブジェクトを削除できます。詳細については、「移行オブジェクトを削除する」をご参照ください。
重要Lindorm データベースから OBKV にデータを移行するタスクの実行中に、移行オブジェクトを追加することはできません。