このセクションでは、テーブルレベル復元の技術原理について説明します。
テーブルレベル復元の全体プロセス
OceanBaseデータベースのテーブルレベル復元機能は、バックアップデータからユーザーが指定したテーブルを既存のテナントに復元することで実現されます。この既存のテナントは、元のテーブルが存在するテナントと同じテナントであっても、同一クラスタ内の異なるテナントであっても、または異なるクラスタのテナントであっても構いません。
テーブルレベル復元機能の全体プロセスは以下のとおりです:
物理復元による補助テナントの作成。
バックアップおよびアーカイブデータから、指定された時点までの補助テナントを復元します。
テナント間でのテーブルデータのインポート。
指定されたテーブルの構造、データ、関連するインデックスなどのスキーマを補助テナントからターゲットテナントにインポートします。
補助テナントのクリーンアップと計算・ストレージリソースの解放。
補助テナントは、テーブルレベル復元プロセスにおいて、Oracleデータベースで使用されるAuxiliary Instanceに類似した役割を果たし、テーブル復元処理で消費される追加の計算・ストレージリソースを提供します。
テナント間でのテーブルデータのインポートの実装メカニズム
現在のバージョンでは、OceanBaseデータベースのテーブルレベル復元機能は、テナント間でのテーブルデータのインポート段階で3段階の並列処理メカニズム(L1/L2/L3)をサポートしています。
テーブルレベル復元機能のテナント間でのテーブルデータのインポートにおける3段階の並列処理メカニズムは以下のとおりです:
L1レベルの複数テーブル並列処理:最大recover_table_concurrency個のテーブルが同時にテナント間でのテーブルデータのインポートタスクを実行できます。
L2レベルのテーブル内パーティション間並列処理:単一テーブルのすべてのパーティションが並列して復元されます。
L3レベルの単一パーティション内部並列処理:システムは各パーティションを最大recover_table_dop個の復元サブタスクに分割し、各サブタスクは独立したテーブルレベル復元スレッドによって実行され、パーティション内部の並列復元を実現します。
L1/L2/L3レベルの並列タスクはすべて、テーブルレベル復元スレッドプールからスレッドリソースを申請する必要があります。テーブルレベル復元スレッドプールのスレッド数は、パラメータddl_thread_scoreによって制御されます。
補助テナントからターゲットテナントへのデータの並列インポートは、ターゲットテナントのリソースを消費するため、業務リクエストへの影響を避けるためには、ターゲットテナントにリソース分離を設定することを推奨します。バックグラウンドタスクのリソース分離の設定方法については、バックグラウンドタスクのリソース分離設定例を参照してください。