この記事では、コマンドラインを使用してテナントレベルの物理的リストアを行う方法について説明します。現在、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 = '<暗号化文字列>';ここで、
<暗号化文字列>は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];tab クイックリストア
ステートメントは次のとおりです:
- 指定されたタイムスタンプにリストアする
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、concurrency、kms_encrypt:オプションです。これらのパラメータの詳細については、ALTER SYSTEM - RESTOREを参照してください。注意
物理リストアはカラムストアレプリカをサポートしていません。新規テナントのローカリティを指定する際、Cレプリカを指定することはできません。Cレプリカの詳細については、カラムストアレプリカを参照してください。
method:データリストアの方法を指定します。大文字と小文字は区別されません。有効な値は以下のとおりです:full:完全データリストア。明示的に指定しない場合、デフォルト値はfullです。quick:クイックリストア。WITH KEY FROM 'backup_key_path' ENCRYPTED BY 'password':暗号化テナントのキーのバックアップ情報を指定します。ソーステナントで透過的暗号化が有効になっている場合にのみ、リストア時にキーのバックアップ情報を指定する必要があります。backup_key_path:キーのバックアップパスです。password:キーのバックアップ時に設定した暗号化パスワードです。
キーのバックアップに関する操作については、バックアップ前の準備のキーのバックアップを参照してください。
物理リストアの各パラメータの詳細については、ALTER SYSTEM - RESTOREを参照してください。
リストア例は以下のとおりです:
Alibaba Cloud OSSOSSのデータバックアップパスとログアーカイブパスから、
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';
tab NFS
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';
tab AWS S3
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';tab S3プロトコル互換オブジェクトストレージ
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;
次のステップ
恢復タスクを開始した後、ビューを使用してリストアの進捗状況と結果を確認できます。詳細については、リストアの進捗状況の確認を参照してください。
リストアタスクが完了した後、低バージョンのバックアップデータを高バージョンのクラスタにリストアする場合は、リストアされたテナントをアップグレードする必要があります。詳細については、リストア完了後のテナントのアップグレードを参照してください。
物理リストアプロセスはフィジカル・スタンバイ・データベースと統一されており、物理リストア後のテナントはスタンバイテナントとなります。このテナントは、その後、スタンバイテナントとしてサービスを提供するか、マスターテナントに切り替えてサービスを提供することも可能です。スタンバイテナントとして継続してログアーカイブを行う場合の詳細操作については、スタンバイテナントのログのセグメントごとのリプレイを参照してください。スタンバイテナントをマスターテナントに切り替える詳細操作については、スタンバイテナントをマスターテナントに切り替えるを参照してください。
関連ドキュメント
リストアに関する詳細については、リストアプロセスを参照してください。