このセクションでは、コマンドを使用してテナントレベルで物理リストアを行う方法について説明します。現在、OceanBaseデータベースは、テナントレベルでポイントインタイムに基づくフルリストアと急速リストアをサポートしています。フルリストアと急速リストアの違いについては、物理バックアップとリストアの概要を参照してください。
OceanBaseデータベースのリストアは、同一クラスタ内でのリストアだけでなく、異なるクラスタ間でのリストアもサポートしています。
リストア処理では、ユーザーが入力したコマンドに基づき、バックアップ先から必要なマクロブロックデータを対応するフルバックアップおよび増分バックアップからターゲットテナントにリストアし、同時にトランザクションログを取得・再生します。
前提条件
物理リストアを実行する前に、リストア前の準備が完了していることを確認してください。具体的な操作については、リストア前の準備を参照してください。
注意事項
現在のバージョンでは、データバックアップと同時にテナントレベルのパラメータもバックアップされますが、バックアップされたテナントレベルのパラメータはユーザーの設定参考用であり、物理リストア時にはテナントに直接リストアされません。パラメータのバックアップに関する詳細は、パラメータのバックアップを参照してください。
リストアコマンドを実行する際、クイックリストアを使用した場合、クイックリストア完了後は以下の点に注意してください:
リストアされたテナントは、手動でのメジャーコンパクションの開始、データバックアップ、Switchover/Failoverによるリーダーデータベースへの切り替えをサポートしていません。スタンバイデータベースとしてのみ存在できます。
リストアされたテナントの使用期間中は、そのテナントのすべてのUnitが存在するOBServerノードが、ソーステナントのデータバックアップ内のデータにアクセスできる状態を維持する必要があります。ソーステナントのデータバックアップで使用されているバックアップメディアがNFSの場合、UMOUNT状態であってはなりません。
操作手順
操作手順
rootユーザーでクラスタのsysテナントにログインします。(オプション)以下のステートメントを実行し、バックアップのリストアパスワードを設定します。
バックアップ時にパスワードが追加された場合にのみ、バックアップのリストアパスワードを設定する必要があります。
SET DECRYPTION IDENTIFIED BY 'password';このうち
passwordはバックアップ時に追加されたパスワードに置き換える必要があります。フルバックアップと増分バックアップで設定されたパスワードが異なる場合は、複数のパスワードを入力する必要があり、パスワード同士は半角カンマ(,)で区切ります(フルバックアップのパスワードを先頭に、増分バックアップのパスワードを後方に配置します)。フルバックアップと増分バックアップで設定されたパスワードが同じ場合の例:
SET DECRYPTION IDENTIFIED BY '******';フルバックアップと増分バックアップで設定されたパスワードが異なる場合の例:
SET DECRYPTION IDENTIFIED BY '******','******';以下のステートメントを実行し、暗号化情報を設定します。
説明
暗号化されていない場合、またはリストア時に元のキーマネジメントサービスにアクセスできる場合は、この手順をスキップしてください。
obclient [(none)]> SET @kms_encrypt_info = '<encrypted_string>';このうち、
<encrypted_string>はEXTERNAL_KMS_INFOの値であり、EXTERNAL_KMS_INFOはテナントレベルの構成パラメータです。説明
external_kms_infoは、キーマネジメント情報を格納するために使用されます。この構成パラメータの詳細については、external_kms_infoを参照してください。以下のステートメントを実行し、リストアタスクの実行を開始します。
フルリストアクイックリストアステートメントは以下のとおりです:
指定したタイムスタンプまでリストアする
ALTER SYSTEM RESTORE dest_tenant_name FROM uri UNTIL TIME='timestamp' WITH 'pool_list=pool_list[&locality=locality][&primary_zone=zone_name][&concurrency=int_num][&kms_encrypt={true | false}][&method=full]' [WITH KEY FROM 'backup_key_path' ENCRYPTED BY 'password'] [DESCRIPTION description];指定したSCNまでリストアする
ALTER SYSTEM RESTORE dest_tenant_name FROM uri UNTIL SCN=scn WITH 'pool_list=pool_list[&locality=locality][&primary_zone=zone_name][&concurrency=int_num][&kms_encrypt={true | false}][&method=full]' [WITH KEY FROM 'backup_key_path' ENCRYPTED BY 'password'] [DESCRIPTION description];最新のポイントまでリストアする
ALTER SYSTEM RESTORE dest_tenant_name FROM uri WITH 'pool_list=pool_list[&locality=locality][&primary_zone=zone_name][&concurrency=int_num][&kms_encrypt={true | false}][&method=full]' [WITH KEY FROM 'backup_key_path' ENCRYPTED BY 'password'] [DESCRIPTION description];
ステートメントは以下のとおりです。
指定したタイムスタンプまでリストアする
ALTER SYSTEM RESTORE dest_tenant_name FROM uri UNTIL TIME='timestamp' WITH 'pool_list=pool_list[&locality=locality][&primary_zone=zone_name][&concurrency=int_num][&kms_encrypt={true | false}]&method=quick' [WITH KEY FROM 'backup_key_path' ENCRYPTED BY 'password'] [DESCRIPTION description];指定したSCNまでリストアする
ALTER SYSTEM RESTORE dest_tenant_name FROM uri UNTIL SCN=scn WITH 'pool_list=pool_list[&locality=locality][&primary_zone=zone_name][&concurrency=int_num][&kms_encrypt={true | false}]&method=quick' [WITH KEY FROM 'backup_key_path' ENCRYPTED BY 'password'] [DESCRIPTION description];最新のポイントまでリストアする
ALTER SYSTEM RESTORE dest_tenant_name FROM uri WITH 'pool_list=pool_list[&locality=locality][&primary_zone=zone_name][&concurrency=int_num][&kms_encrypt={true | false}]&method=quick' [WITH KEY FROM 'backup_key_path' ENCRYPTED BY 'password'] [DESCRIPTION description];
ステートメント内の一部のパラメータについては、以下のように説明します:
TIME='timestamp'、SCN=scn:リストアの終点を指定し、そのポイントまでリストアします。ステートメント内でTIMEまたはSCNを選択する詳細については、物理リストア関連パラメータの紹介を参照してください。uri:バックアップ時に設定したデータバックアップパスbackup_data_destとログアーカイブパスlog_archive_destを指定します。この値には少なくとも1つのデータバックアップパスと1つのログアーカイブパスが含まれている必要があり、パス同士は半角カンマ(,)で区切ります。pool_list:ユーザーのリソースプールを入力します。複数のリソースプールは半角カンマ(,)で区切ります。locality、primary_zone:新しいテナントのレプリカ分布のローカリティ情報および Leader レプリカの優先位置を指定します。オプションです。これらのパラメータの詳細については、ALTER SYSTEM - RESTOREを参照してください。注意
物理リストアはカラムストアレプリカをサポートしていません。新しいテナントのローカリティを指定する際には、Cレプリカを指定することはできません。Cレプリカの詳細および使用方法については、カラムストアレプリカを参照してください。
concurrency:データリストアの並列度を指定します。オプションです。デフォルトは、そのテナントに割り当てられたUnitのMAX_CPU数に等しいです。kms_encrypt:オプションです。trueの場合、リストア時にリストア前に指定したkms_encrypt_infoを使用する必要があることを示します。method:データリストアの方式を指定します。大文字と小文字は区別されません。指定できる値は以下のとおりです:full:フルリストアです。明示的に指定しない場合、デフォルトはfullです。quick:クイックリストアです。
WITH KEY FROM 'backup_key_path' ENCRYPTED BY 'password':テナントのマスターキーバックアップ情報を指定します。ソーステナントで透過的データ暗号化が設定されている場合にのみ、リストア時にマスターキーバックアップ関連情報を指定する必要があります。backup_key_path:マスターキーのバックアップパスです。password:マスターキーのバックアップ設定時に指定した暗号化パスワードです。
マスターキーバックアップに関する操作については、バックアップ前の準備のマスターキーのバックアップを参照してください。
物理リストアにおける各パラメータの詳細については、ALTER SYSTEM - RESTOREを参照してください。
リストアの例:
Alibaba Cloud OSSNFSAWS S3S3プロトコルに対応したオブジェクトストレージOSSバックアップパスとログアーカイブパスから、テナント
mysqlを指定されたタイムスタンプ2020-06-01 00:00:00までリストアします。リソースプールはrestore_poolを指定し、フルリストアモードでリストアします。同時に、ソーステナントのキー情報もリストアします。obclient> ALTER SYSTEM RESTORE mysql FROM 'oss://oceanbase-test-bucket/backup/data/?host=***.aliyun-inc.com&access_id=***&access_key=***,oss://oceanbase-test-bucket/backup/archive/?host=***.aliyun-inc.com&access_id=***&access_key=***' UNTIL TIME='2020-06-01 00:00:00' WITH 'pool_list=restore_pool' WITH KEY FROM 'oss://oceanbase-test-bucket/data_backup_dest/key?host=***.aliyun-inc.com&access_id=***&access_key=***' ENCRYPTED BY '******';データバックアップパスとログアーカイブパスから、テナント
mysqlを指定されたSCN1658285759724047000までリストアします。リソースプールはrestore_poolを指定し、フルリストアモードでリストアします。obclient> ALTER SYSTEM RESTORE mysql FROM 'oss://oceanbase-test-bucket/backup/data/?host=***.aliyun-inc.com&access_id=***&access_key=***,oss://oceanbase-test-bucket/backup/archive/?host=***.aliyun-inc.com&access_id=***&access_key=***' UNTIL SCN=1658285759724047000 WITH 'pool_list=restore_pool&method=full';データバックアップパスとログアーカイブパスから、テナント
mysqlを最新のアーカイブポイントまでリストアします。リソースプールはrestore_poolを指定し、リストアの並列度concurrencyを50に設定して、フルリストアモードでリストアします。obclient> ALTER SYSTEM RESTORE mysql FROM 'oss://oceanbase-test-bucket/backup/data/?host=***.aliyun-inc.com&access_id=***&access_key=***,oss://oceanbase-test-bucket/backup/archive/?host=***.aliyun-inc.com&access_id=***&access_key=***' WITH 'pool_list=restore_pool&concurrency=50';データバックアップパスとログアーカイブパスから、テナント
mysqlを指定されたタイムスタンプ2020-06-01 00:00:00までリストアします。リソースプールはrestore_poolを指定し、レプリカローカリティはF@z1,F@z2,F@z3に設定して、フルリストアモードでリストアします。obclient> ALTER SYSTEM RESTORE mysql FROM 'oss://oceanbase-test-bucket/backup/data/?host=***.aliyun-inc.com&access_id=***&access_key=***,oss://oceanbase-test-bucket/backup/archive/?host=***.aliyun-inc.com&access_id=***&access_key=***' UNTIL TIME='2020-06-01 00:00:00' WITH 'pool_list=restore_pool&locality=F@z1,F@z2,F@z3';データバックアップパスとログアーカイブパスから、テナント
mysqlを指定されたタイムスタンプ2020-06-01 00:00:00までリストアします。リソースプールはrestore_poolを指定し、レプリカローカリティはF@z1,F@z2,F@z3に設定します。さらにprimary_zoneをz1に指定して、フルリストアモードでリストアします。obclient> ALTER SYSTEM RESTORE mysql FROM 'oss://oceanbase-test-bucket/backup/data/?host=***.aliyun-inc.com&access_id=***&access_key=***,oss://oceanbase-test-bucket/backup/archive/?host=***.aliyun-inc.com&access_id=***&access_key=***' UNTIL TIME='2020-06-01 00:00:00' WITH 'pool_list=restore_pool&locality=F@z1,F@z2,F@z3&primary_zone=z1';
urlパラメータが変更された点を除き、その他のパラメータの使用方法はOSSと一致します。データバックアップパスとログアーカイブパスからテナント
mysqlを指定タイムスタンプ2020-06-01 00:00:00までリストアし、リソースプールをrestore_poolに指定してフルリストアモードでリストアします。同時に、ソーステナントのキー情報もリストアします。obclient> ALTER SYSTEM RESTORE mysql FROM 'file:///data/nfs/backup/data,file:///data/nfs/backup/archive' UNTIL TIME='2020-06-01 00:00:00' WITH 'pool_list=restore_pool' WITH KEY FROM 'file:///data_backup_dest/key' ENCRYPTED BY '******';データバックアップパスとログアーカイブパスからテナント
mysqlを最新のアーカイブポイントまでリストアし、リソースプールをrestore_poolに指定します。同時に、リストアの並列度concurrencyを50に指定してフルリストアモードでリストアします。obclient> ALTER SYSTEM RESTORE mysql FROM 'file:///data/nfs/backup/data,file:///data/nfs/backup/archive' WITH 'pool_list=restore_pool&concurrency=50';
urlパラメータが変更された点を除き、その他のパラメータの使用方法はNFSと一致します。S3バックアップパスとS3ログアーカイブパスからテナント
mysqlを指定タイムスタンプ2024-01-15 00:00:00までリストアし、リソースプールをrestore_poolに指定してフルリストアモードでリストアします。ALTER SYSTEM RESTORE mysql FROM 's3://oceanbase-test-bucket/backup/data?host=s3.<region>.amazonaws.com&access_id=***&access_key=***&s3_region=***, s3://oceanbase-test-bucket/backup/archive?host=s3.<region>.amazonaws.com&access_id=***&access_key=***&s3_region=***' UNTIL TIME='2024-01-15 00:00:00' WITH 'pool_list=restore_pool';urlパラメータが変更された点を除き、その他のパラメータの使用方法はOSSと同じです。OBSバックアップパスとログアーカイブパスからテナント
mysqlを指定タイムスタンプ2023-06-01 00:00:00までリストアし、リソースプールをrestore_poolにリストアして、フルリストアモードでリストアします。obclient> ALTER SYSTEM RESTORE mysql FROM 's3://oceanbase-test-bucket/backup/data/?host=obs.***.myhuaweicloud.com&access_id=***&access_key=***,s3://oceanbase-test-bucket/backup/archive/?host=obs.***.myhuaweicloud.com&access_id=***&access_key=***' UNTIL TIME='2023-06-01 00:00:00' WITH 'pool_list=restore_pool';GCSバックアップパスとログアーカイブパスからテナント
mysqlを指定タイムスタンプ2023-06-01 00:00:00までリストアし、リソースプールをrestore_poolに指定して、フルリストアモードでリストアします。obclient> ALTER SYSTEM RESTORE mysql FROM 's3://oceanbase-test-bucket/backup/data/?host=https://storage.googleapis.com&access_id=***&access_key=***,s3://oceanbase-test-bucket/backup/archive/?host=https://storage.googleapis.com&access_id=***&access_key=***' UNTIL TIME='2023-06-01 00:00:00' WITH 'pool_list=restore_pool';COSバックアップパスとログアーカイブパスからテナント
mysqlを指定タイムスタンプ2023-06-01 00:00:00までリストアし、リソースプールをrestore_poolに指定して、フルリストアモードでリストアします。obclient> ALTER SYSTEM RESTORE mysql FROM 's3://oceanbase-test/backup/data?host=cos.ap-xxxx.myqcloud.com&access_id=***&access_key=***,s3://oceanbase-test/backup/archive?host=cos.ap-xxxx.myqcloud.com&access_id=***&access_key=***' UNTIL TIME='2023-06-01 00:00:00' WITH 'pool_list=restore_pool';
(オプション)リストア対象テナントに対応するMetaテナントの作成が完了した後、リストアを高速化する必要がある場合は、構成パラメータ
ha_high_thread_scoreを使用してリストアタスクの並列スレッド数を設定できます。oceanbase.DBA_OB_TENANTSビューを使用して、リストア対象テナントに対応するMetaテナントが正常に作成されているかどうかを確認します。ステートメントは以下のとおりです:
SELECT * FROM oceanbase.DBA_OB_TENANTS;クエリ結果で、
TENANT_NAME列がMETA$で始まるテナントがMetaテナントです。Metaテナントの状態がNORMALの場合、Metaテナントの作成は成功しています。ビュー
DBA_OB_TENANTSのフィールド説明の詳細については、DBA_OB_TENANTSを参照してください。構成パラメータ
ha_high_thread_scoreを設定します。テナントレベルの構成パラメータ
ha_high_thread_scoreは、高可用性・高優先順位スレッドの現在のワーカースレッド数を設定するために使用されます。デフォルト値は0で、取り得る範囲は[0, 100]です。10に変更することを推奨します。構成パラメータha_high_thread_scoreの詳細については、ha_high_thread_scoreを参照してください。ステートメントの例:
ALTER SYSTEM SET ha_high_thread_score =10 TENANT = mysql;
次のステップ
リストアタスクを開始した後、ビューを通じてリストアの進捗状況と結果を確認できます。具体的な操作については、リストアの進捗状況を確認するを参照してください。
リストアタスクが完了した後、低いバージョンのバックアップデータから高いバージョンのクラスタにリストアした場合は、リストアされたテナントをアップグレードする必要があります。具体的な操作については、リストア完了後のテナントのアップグレードを参照してください。
物理リストアのプロセスは物理スタンバイデータベースと統一されています。物理リストア後のテナントはスタンバイテナントとなり、その後スタンバイテナントとして関連サービスを提供するか、プライマリテナントに切り替えてサービスを提供することができます。スタンバイテナントとしてソーステナントからのログアーカイブを継続する詳細な操作については、スタンバイテナントによるログのセグメントリプレイを参照してください。スタンバイテナントをプライマリテナントに切り替える詳細な操作については、スタンバイテナントをプライマリテナントに切り替えるを参照してください。
関連ドキュメント
リストアに関する詳細は、リストアプロセスを参照してください。