このセクションでは、コマンドを使用してテナントレベルで物理復元を行う方法について説明します。現在、OceanBaseデータベースは、テナントレベルでポイントインタイムに基づくフル復元と高速復元をサポートしています。フル復元と高速復元の違いについては、物理バックアップと復元の概要を参照してください。
OceanBaseデータベースの復元は、同一クラスタ内での復元だけでなく、異なるクラスタ間での復元もサポートしています。
復元処理では、ユーザーが入力したコマンドに基づき、バックアップのターゲット側から必要なマクロブロックデータを対応するフルバックアップおよび増分バックアップからターゲットテナントに復元し、トランザクションログの取得と再生を同時に行います。
前提条件
物理復元を実行する前に、復元前の準備が完了していることを確認してください。具体的な操作については、復元前の準備を参照してください。
注意事項
現在のバージョンでは、データバックアップと同時にテナントレベルのパラメータもバックアップされますが、バックアップされたテナントレベルのパラメータはユーザーの設定参考用であり、物理復元時にはテナントに直接復元されません。パラメータのバックアップに関する詳細は、パラメータのバックアップを参照してください。
復元コマンドを実行する際、クイック復元方式を使用した場合、クイック復元完了後は以下の点に注意してください:
復元されたテナントは、手動でのメジャーコンパクションの開始、データバックアップ、Switchover/Failoverによるリーダーデータベースへの切り替えをサポートしていません。スタンバイデータベースとしてのみ存在できます。
復元されたテナントの使用中も、当該テナントのすべてのUnitが配置されているOBServerノードが、ソーステナントのデータバックアップに含まれるデータにアクセス可能であることを保証する必要があります。ソーステナントのデータバックアップでNFSバックアップ媒体を使用している場合、その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:新しいテナントのレプリカ配置のローカリティ情報およびリーダーレプリカの優先位置を指定します。オプションです。これらのパラメータの詳細については、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;
次のステップ
リストアタスクを開始した後、ビューを通じてリストアの進捗状況と結果を確認できます。具体的な操作については、リストアの進捗状況を確認するを参照してください。
リストアタスクが完了した後、低バージョンのバックアップデータから高バージョンのクラスタにリストアした場合は、リストアされたテナントをアップグレードする必要があります。具体的な操作については、リストア完了後のテナントのアップグレードを参照してください。
物理リストアのプロセスは物理スタンバイデータベースと統一されています。物理リストア後のテナントはスタンバイテナントとなり、その後スタンバイテナントとして関連サービスを提供するか、プライマリテナントに切り替えてサービスを提供することができます。スタンバイテナントとしてソーステナントからのログ再生を継続する詳細な操作については、スタンバイテナントによるログのセグメント再生を参照してください。スタンバイテナントをプライマリテナントに切り替える詳細な操作については、スタンバイテナントをプライマリテナントに切り替えるを参照してください。
関連ドキュメント
リストアに関する詳細は、リストアプロセスを参照してください。