このセクションでは、ログアーカイブを実施する前に行う準備作業について説明します。
アーカイブの並列度の設定(オプション)
アーカイブモードを有効にする前に、ログアーカイブの並列度を設定することで、テナントのログアーカイブ速度を向上させることができます。
sysテナントまたはユーザーテナントのテナント管理者としてデータベースにログインします。適切なステートメントを選択し、パラメータ
log_archive_concurrencyを設定します。テナントレベルの構成パラメータ
log_archive_concurrencyは、ログアーカイブのワーカースレッドの総数を設定します。この構成パラメータは動的に反映され、OBServerノードの再起動は不要です。値の範囲は [0, 100] で、デフォルト値は0です。これは、OceanBaseデータベースの適応型ログアーカイブ並列度を使用することを意味します。デフォルト値の使用を推奨します。注意
小規模なテナント(CPUが4コア以下のテナント)では、デフォルト値を使用し、この構成パラメータの値を調整しないことを推奨します。
設定方法は以下のとおりです:
sysテナントが指定したテナントのログアーカイブ並列度を調整する場合ALTER SYSTEM SET log_archive_concurrency = 10 TENANT = mysql_tenant;sysテナントがすべてのテナントのログアーカイブ並列度を調整する場合ALTER SYSTEM SET log_archive_concurrency = 10 TENANT = all_user;または
ALTER SYSTEM SET log_archive_concurrency = 10 TENANT = all;説明
OceanBaseデータベースはV4.2.1バージョンから、
TENANT = all_userとTENANT = allの意味が同じになりました。有効範囲をすべてのユーザーテナントにする必要がある場合は、TENANT = all_userの使用を推奨します。TENANT = allは今後廃止されます。ユーザーテナントが自身のテナントのログアーカイブ並列度を調整する場合
ALTER SYSTEM SET log_archive_concurrency = 10;
パラメータ
log_archive_concurrencyの詳細については、log_archive_concurrencyを参照してください。
アーカイブ宛先の設定
ログアーカイブタスクを開始する前に、ALTER SYSTEM コマンドを使用して LOG_ARCHIVE_DEST パラメータを設定する必要があります。システムテナントにはユーザーデータが含まれておらず、クラスタ管理用のテナントであるため、バックアップ・リストアはサポートされていません。そのため、sys テナントではアーカイブ宛先を設定する必要はありません。
アーカイブ宛先を設定する主な操作は、LOCATION、BINDING、PIECE_SWITCH_INTERVAL プロパティを設定することです。
注意事項
アーカイブの出力先を設定する際、各テナントのアーカイブパスは独立した空ディレクトリに設定する必要があります。異なるテナント間で同じアーカイブパスを設定することはできません。
手順
sysテナントまたはユーザーテナントのテナント管理者としてデータベースにログインします。説明
MySQLモードの管理者ユーザーは
rootユーザー、Oracleモードの管理者ユーザーはSYSユーザーです。アーカイブ宛先を設定します。
システムテナントが指定テナントのアーカイブ宛先を設定する場合
ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=archive_path [BINDING=archive_mode] [PIECE_SWITCH_INTERVAL=piece_switch_interval]' TENANT = tenant_name;ユーザーテナントが自身のテナントのアーカイブ宛先を設定する場合
ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=archive_path [BINDING=archive_mode] [PIECE_SWITCH_INTERVAL=piece_switch_interval]';
注意
OceanBaseデータベースV4.0.xからV4.1.0へのバージョンアップグレードの場合、バージョンアップ後にアーカイブパスを変更する必要があります。OceanBaseデータベースV4.1.xからV4.2.xへのバージョンアップグレードの場合、バージョンアップ後にアーカイブパスを変更する必要はありません。また、OceanBaseデータベースV4.1.xからV4.2.xへのバージョンアップ時には、アップグレード中のログアーカイブがサポートされます。
詳細な設定方法は以下の通りです:
LOCATIONの設定 (必須)LOCATIONプロパティはアーカイブパスを指定するために使用されます。現在、OceanBaseデータベースでサポートされているアーカイブメディアは、NFS、Alibaba Cloud OSS、Azure Blob、AWS S3、およびS3プロトコル互換のオブジェクトストレージ(例:Huawei OBS、Google GCS、Tencent Cloud COS)です。一部のアーカイブメディアは使用する前にいくつかの基本要件を満たす必要がある場合があります。各アーカイブメディアの具体的な要件については、物理バックアップとリストアの概要のバックアップメディア要件を参照してください。Alibaba Cloud OSSNFSAWS S3S3プロトコルに対応したオブジェクトストレージAzure BlobOSSをアーカイブメディアとして使用する場合、アーカイブパス、
host、access_key、access_idの設定に加えて、delete_modeパラメータを使用してアーカイブファイルのクリーンアップモードを構成できます。delete_modeパラメータは現在deleteモードとtaggingモードをサポートしています。delete_modeパラメータを明示的に設定しない場合、デフォルトでdeleteモードが使用されます。さらに、OSSは
checksum_typeパラメータを使用して検証アルゴリズムを指定し、アーカイブファイルの整合性を検証することもサポートしています。サポートされている値はmd5とno_checksumです。checksum_typeパラメータを明示的に設定しない場合、デフォルト値はmd5です。同時に、OceanBaseデータベースは、コンプライアンス保持ポリシーが設定されたAlibaba Cloud OSSバケットをアーカイブパスとして使用することもサポートしています。アーカイブパスを設定する際、
enable_wormパラメータを使用して、OceanBaseデータベースがバケットの保持ポリシー(WORMポリシー)に従ってそのパスに対する書き込みおよび削除操作を実行するかどうかを指定できます。このパラメータがサポートする値はtrueとfalseです。enable_wormパラメータを明示的に設定しない場合、デフォルトはfalseです。enable_worm=trueを設定する場合は、同時にchecksum_type=md5を明示的に設定する必要があります。このパラメータは一度設定すると変更できません。注意
OceanBaseデータベースは現在、コンプライアンス保持ポリシーの設定を代行するものではありません。アーカイブパスを設定する前に、OSSバケットに保持ポリシー(WORMポリシー)が正しく設定され、ロックされていることを確認してください。
各パラメータの詳細については、SET LOG_ARCHIVE_DESTを参照してください。
注意
オブジェクトストレージをアーカイブメディアとして使用する場合、オブジェクトストレージパスの各パラメータは
&記号で区切られます。入力するパラメータ値には、英字の大文字と小文字、数字、/-_$+=およびワイルドカードのみ含まれていることを確認してください。上記以外の文字を入力した場合、設定が失敗する可能性があります。例:
OSSをアーカイブメディアとして使用する場合、システムテナントが指定テナント
mysql_tenantのアーカイブパスを設定し、クリーンアップモードをdeleteに設定します。同時に、検証アルゴリズムをmd5に指定します。obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=oss://oceanbase-test-bucket/backup/archive?host=****.aliyun-inc.com&access_id=****&access_key=****&delete_mode=delete&checksum_type=md5' TENANT = mysql_tenant;アーカイブファイルの整合性を検証したくない場合、
checksum_typeパラメータをno_checksumに設定できます。例:obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=oss://oceanbase-test-bucket/backup/archive?host=****.aliyun-inc.com&access_id=****&access_key=****&delete_mode=delete&checksum_type=no_checksum' TENANT = mysql_tenant;OSSをアーカイブメディアとして使用する場合、システムテナントが指定テナント
mysql_tenantのアーカイブパスを設定し、クリーンアップモードをtaggingに設定します。WORMがサポートする方法でObjectの書き込みと削除を行い、同時に検証アルゴリズムをmd5に指定します。注意
- OceanBaseデータベースは現在、コンプライアンス保持ポリシーの設定を代行するものではありません。アーカイブパスを設定する前に、OSSバケットに保持ポリシー(WORMポリシー)が正しく設定され、ロックされていることを確認してください。
- WORMポリシーが設定されたバケットをアーカイブパスとして使用する場合、クリーンアップモードとして
taggingモードの使用を推奨します。
obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=oss://oceanbase-test-bucket/backup/archive?host=****.aliyun-inc.com&access_id=****&access_key=****&delete_mode=tagging&checksum_type=md5&enable_worm=true' TENANT = mysql_tenant;OSSをアーカイブメディアとして使用する場合、ユーザーテナントが自身のテナントにアーカイブパスを設定し、クリーンアップモードを
deleteに設定します。同時に、検証アルゴリズムをmd5に指定します。obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=oss://oceanbase-test-bucket/backup/archive?host=****.aliyun-inc.com&access_id=****&access_key=****&delete_mode=delete&checksum_type=md5';
例では、
oss://はOSSをアーカイブメディアタイプとして使用することを表し、バケット名はoceanbase-test-bucket、バケット内のパスは/backup/archiveです。また、?を使用してパスとパラメータを区切り、パラメータ間は&で区切ります。hostはバケットのホストアドレスを設定するために使用され、access_idとaccess_keyはOSSのアクセスキーを設定するために使用されます。クリーンアップモードはdeleteで、MD5アルゴリズムを使用してアーカイブファイルの整合性を検証します。enable_worm=trueは、システムがWORMの仕様に従って書き込みと削除操作を実行することを意味します。なお、OceanBaseデータベースは現在、コンプライアンス保持ポリシーの設定を代行するものではありません。アーカイブパスを設定する前に、OSSバケットに保持ポリシー(WORMポリシー)が正しく設定され、ロックされていることを確認してください。注意
NFSをアーカイブメディアとして使用する場合、以下の点に注意してください:
LOCATIONの値は、疑問符(?)を含む文字列に設定できません。LOCATIONの値は絶対パスに設定し、OBServerサーバーがLOCATIONに対する読み書き権限を持っていることを確認してください。- すべてのOBServerサーバーが同一サーバーのNFSをマウントしている必要があります。また、アーカイブがスムーズに進行するように、本記事で推奨されているパラメータを使用してNFSをマウントしてください。NFSの具体的なマウント手順については、NFSクライアントのデプロイを参照してください。
NFSをアーカイブメディアとして使用する場合、システムテナントが指定テナント
mysql_tenantにアーカイブパスを設定する例は以下のとおりです:obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///data/nfs/backup/archive' TENANT = mysql_tenant;NFSをアーカイブメディアとして使用する場合、ユーザーテナントが自身のテナントにアーカイブパスを設定する例は以下のとおりです:
obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///data/nfs/backup/archive';例では、
file://はNFSをアーカイブメディアタイプとして使用することを表し、アーカイブパスは/data/nfs/backup/archiveです。OSSと同様に、AWS S3も
delete_modeパラメータを使用してアーカイブファイルのクリーンアップモードを設定できます。設定方法はOSSと同じです。同様に、AWS S3はchecksum_typeパラメータを使用して検証アルゴリズムを指定し、アーカイブファイルの整合性を検証することもサポートしています。指定可能な値はmd5とcrc32です。checksum_typeパラメータを明示的に設定しない場合、デフォルト値はmd5です。delete_modeパラメータとchecksum_typeパラメータの詳細については、SET LOG_ARCHIVE_DESTを参照してください。注意
オブジェクトストレージをアーカイブ媒体として使用する場合、オブジェクトストレージパスの各パラメータは
&記号で区切られます。入力するパラメータ値には、英字の大文字小文字、数字、/-_$+=およびワイルドカードのみ含まれていることを確認してください。上記以外の文字を入力した場合、設定が失敗する可能性があります。S3をアーカイブ媒体として使用する設定例は以下のとおりです:
S3をアーカイブ媒体として使用する場合、システムテナントは指定テナント
mysql_tenantにアーカイブパスを設定し、クリーンアップモードをdelete、検証アルゴリズムをcrc32に指定します。obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=s3://oceanbase-test-bucket/backup/archive?host=s3.<region>.amazonaws.com&access_id=******&access_key=******&s3_region=******&delete_mode=delete&checksum_type=crc32' TENANT = mysql_tenant;S3をアーカイブ媒体として使用する場合、ユーザーテナントは自身のテナントにアーカイブパスを設定し、クリーンアップモードを
delete、検証アルゴリズムをcrc32に指定します。obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=s3://oceanbase-test-bucket/backup/archive?host=s3.<region>.amazonaws.com&access_id=******&access_key=******&s3_region=******&delete_mode=delete&checksum_type=crc32';
上記の例では、
s3://はAWS S3をアーカイブ媒体タイプとして使用することを表し、バケット名はoceanbase-test-bucket、バケット内のパスは/backup/archiveです。また、?を使用してパスとパラメータを区切り、パラメータ間は&で区切ります。hostはAmazon S3サービスのドメイン名を設定するために使用され、access_idとaccess_keyはAWSサービスのアクセスキーを設定するために使用されます。s3_regionはS3をアーカイブ媒体として使用する場合に必須のパラメータで、S3のバケットが存在するリージョンを表します。クリーンアップモードはdelete、アーカイブファイルの整合性はCRC32アルゴリズムで検証されます。AWS S3パス形式の詳細については、付:AWS S3パス形式説明を参照してください。
ほとんどのオブジェクトストレージはS3プロトコルに対応しているため、S3プロトコルに対応し、かつOceanBaseデータベースの要件(オブジェクトストレージはOceanBaseシステムコールを実装したいくつかのS3 APIの動作に対応している必要がある)を満たすオブジェクトストレージは、OceanBaseデータベースのアーカイブメディアとして使用できます。S3にアクセスすることで、対応するオブジェクトストレージにアクセスできます。例えば、OBS、GCS、COSなどはすべてS3プロトコルでアクセスされます。
S3プロトコルでアクセスするOBS、GCS、COSなどのオブジェクトストレージでは、
checksum_typeパラメータを使用してチェックサムアルゴリズムを指定し、アーカイブファイルの整合性を検証することもサポートされています。サポートされている値はmd5のみです。checksum_typeパラメータを明示的に設定しない場合、デフォルト値はmd5です。checksum_typeパラメータの詳細については、SET LOG_ARCHIVE_DESTを参照してください。注意
- オブジェクトストレージをアーカイブメディアとして使用する場合、オブジェクトストレージパスの各パラメータは
&記号で区切られます。入力するパラメータ値には、英字の大文字と小文字、数字、/-_$+=、およびワイルドカードのみ含まれていることを確認してください。上記以外の文字を入力した場合、設定が失敗する可能性があります。 - S3プロトコルに対応する一部のオブジェクトストレージでは、AWS S3 SDKのデフォルトのURLエンコーディング方式をサポートしていない場合があります。
s3://プロトコルでアクセスする際に、9129、9026などのオブジェクトストレージ関連のエラーコードが発生した場合は、クラスタレベル構成パラメータob_storage_s3_url_encode_typeを設定し、AWS S3がリクエストを送信する際のURLエンコーディング方式をRFC3986標準に準拠させることを推奨します。詳細な設定方法については、以下のCOSをアーカイブメディアとして使用する操作手順と例を参照してください。
OBSをアーカイブメディアとして使用する設定例:
OBSをアーカイブメディアとして使用する場合、システムテナントが指定テナント
mysql_tenantにアーカイブパスを設定します。obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=s3://oceanbase-test-bucket/backup/archive?host=obs.****.myhuaweicloud.com&access_id=****&access_key=****' TENANT = mysql_tenant;OBSをアーカイブメディアとして使用する場合、ユーザーテナントが自身のテナントにアーカイブパスを設定します。
obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=s3://oceanbase-test-bucket/backup/archive?host=obs.****.myhuaweicloud.com&access_id=****&access_key=****';
上記の例では、
s3://はS3プロトコルを使用してアーカイブ宛先にアクセスすることを表し、バケット名はoceanbase-test-bucket、バケット内のパスは/backup/archiveです。同時に?を使用してパスとパラメータを区切り、パラメータ間は&で区切ります。hostはOBSサービスのドメイン名を設定するために使用され、access_idとaccess_keyはOBSサービスのアクセスキーを設定するために使用されます。GCSをアーカイブメディアとして使用する設定例:
GCSをアーカイブメディアとして使用する場合、システムテナントが指定テナント
mysql_tenantにアーカイブパスを設定します。obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=s3://oceanbase-test-bucket/backup/archive?host=https://storage.googleapis.com&access_id=****&access_key=****' TENANT = mysql_tenant;GCSをアーカイブメディアとして使用する場合、ユーザーテナントが自身のテナントにアーカイブパスを設定します。
obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=s3://oceanbase-test-bucket/backup/archive?host=https://storage.googleapis.com&access_id=****&access_key=****';
上記の例では、
s3://はS3プロトコルを使用してアーカイブ宛先にアクセスすることを表し、バケット名はoceanbase-test-bucket、バケット内のパスは/backup/archiveです。同時に?を使用してパスとパラメータを区切り、パラメータ間は&で区切ります。hostはGCSサービスのドメイン名を設定するために使用され、access_idとaccess_keyはGCSサービスのアクセスキーを設定するために使用されます。COSをアーカイブメディアとして使用する操作手順と例:
クラスタレベル構成パラメータ
ob_storage_s3_url_encode_typeの値を確認します。obclient> SHOW PARAMETERS LIKE '%ob_storage_s3_url_encode_type%';結果は次のとおりです:
+-------+----------+----------------+----------+-------------------------------+-----------+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+ | zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level | +-------+----------+----------------+----------+-------------------------------+-----------+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+ | zone1 | observer | 172.xx.xxx.xxx | 2882 | ob_storage_s3_url_encode_type | NULL | default | Determines the URL encoding method for S3 requests."default": Uses the S3 standard URL encoding method."compliantRfc3986Encoding": Uses URL encoding that adheres to the RFC 3986 standard. | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | +-------+----------+----------------+----------+-------------------------------+-----------+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+ 1 row in set値が
defaultの場合、compliantRfc3986Encodingに変更します。obclient> ALTER SYSTEM SET ob_storage_s3_url_encode_type='compliantRfc3986Encoding';この構成パラメータの詳細については、ob_storage_s3_url_encode_typeを参照してください。
アーカイブパスを設定し、
delete_modeパラメータを使用してアーカイブファイルのクリーンアップモードを設定します。COSをアーカイブメディアとして使用する場合、システムテナントが指定テナント
mysql_tenantにアーカイブパスを設定し、deleteクリーンアップモードに設定する例は以下のとおりです:obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=s3://oceanbase-test/backup/archive?host=cos.ap-xxxx.myqcloud.com&access_id=***&access_key=***&delete_mode=delete' TENANT = mysql_tenant;COSをアーカイブメディアとして使用する場合、ユーザーテナントが自身のテナントにアーカイブパスを設定し、
deleteクリーンアップモードに設定する例は以下のとおりです:obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=s3://oceanbase-test/backup/archive?host=cos.ap-xxxx.myqcloud.com&access_id=***&access_key=***&delete_mode=delete';例では、
s3://はS3プロトコルを使用してアーカイブ宛先にアクセスすることを表し、バケット名はoceanbase-test、バケット内のパスは/backup/archiveです。同時に?を使用してパスとパラメータを区切り、パラメータ間は&で区切ります。hostはCOSのホストアドレス、すなわちendpoint(バケット名なしのアドレス)を設定するために使用され、access_idとaccess_keyはCOSのアクセスキーを設定するために使用されます。クリーンアップモードはdeleteに設定されます。注意
アーカイブの運用中に、アーカイブで使用するアクセスプロトコルを切り替えることはサポートされていません。例えば、S3からOSSへ、またはOSSからS3への切り替えはサポートされていません。
OSSと同様に、Azure Blobも
delete_modeパラメータとchecksum_typeパラメータをサポートしています。delete_modeパラメータはアーカイブファイルのクリーンアップモードを設定するために使用されます。delete_modeパラメータを明示的に設定しない場合、デフォルトでdeleteモードが使用されます。checksum_typeパラメータは、アーカイブファイルの整合性を検証するためのチェックサムアルゴリズムを指定するために使用されます。サポートされている値はmd5とno_checksumです。checksum_typeパラメータを明示的に設定しない場合、デフォルト値はmd5です。その他のパラメータの詳細については、SET LOG_ARCHIVE_DESTを参照してください。
例:
注意
- オブジェクトストレージをアーカイブ媒体として使用する場合、オブジェクトストレージパスの各パラメータは
&記号で区切られます。入力するパラメータ値には、英字の大文字と小文字、数字、/-_$+=およびワイルドカードのみ含まれていることを確認してください。上記以外の文字を入力した場合、設定が失敗する可能性があります。 - Azure Blobをアーカイブ媒体として使用する場合、
hostパラメータのプレフィックスは、http://またはhttps://。同时,由于 を指定する必要があります。Azure Blobはデフォルトでセキュリティ転送が有効になっており、通常はhttps://からアクセスします。http://からアクセスする必要がある場合は、Azure Blobのセキュリティ転送オプションを無効にする必要があります。Azure Blobのセキュリティ転送オプションを無効にする手順の詳細については、Azure Blob公式ドキュメントを参照してください。
Azure Blobをアーカイブ媒体として使用する場合、システムテナントが指定テナント
mysql_tenantにアーカイブパスを設定し、クリーンアップモードをdeleteに、チェックサムアルゴリズムをmd5に指定します。obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=azblob://oceanbase-test-bucket/backup/archive?host=http://****.blob.core.windows.net&access_id=****&access_key=****&delete_mode=delete&checksum_type=md5' TENANT = mysql_tenant;Azure Blobをアーカイブ媒体として使用する場合、ユーザーテナントが自身のテナントにアーカイブパスを設定し、クリーンアップモードを
deleteに、チェックサムアルゴリズムをmd5に指定します。obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=azblob://oceanbase-test-bucket/backup/archive?host=http://****.blob.core.windows.net&access_id=****&access_key=****&delete_mode=delete&checksum_type=md5';
例では、
azblob://はAzure Blobをアーカイブ媒体タイプとして使用することを表し、バケット名はoceanbase-test-bucket、バケット内のパスは/backup/archiveです。また、?を使用してパスとパラメータを区切り、パラメータ間は&で区切ります。hostはバケットのホストアドレスで、コンテナのプロパティまたはストレージアカウントの接続文字列を連結して取得できます。access_idはストレージアカウント名、access_keyはAzure Blobのアクセスキーです。クリーンアップモードはdeleteで、MD5アルゴリズムを使用してアーカイブファイルの整合性を検証します。BINDINGプロパティの設定 (オプション)BINDINGプロパティは、アーカイブと業務の優先モードを設定するために使用されます。現在、OptionalモードとMandatoryモードがサポートされています。設定しない場合、デフォルトはOptionalモードです。Optionalモードは、ユーザー業務を優先することを意味します。このモードでは、アーカイブ(ログアーカイブ)の速度がログ生成の速度に追いつかない場合、ログがアーカイブされる前に回収され、その結果、ログストリームが途絶える可能性があります。Mandatoryモードは、アーカイブを優先することを意味します。このモードでは、アーカイブがユーザーデータの書き込みに追いつかない場合、ユーザーがデータを書き込めなくなる可能性があります。
NFSをアーカイブメディアとして使用する場合、システムテナントが指定テナント
mysql_tenantのアーカイブパスを設定し、BINDINGプロパティを設定する例は以下の通りです:obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///data/nfs/backup/archive BINDING=Optional' TENANT = mysql_tenant;NFSをアーカイブメディアとして使用する場合、ユーザーテナントが自身のテナントのアーカイブパスを設定し、
BINDINGプロパティを設定する例は以下の通りです:obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///data/nfs/backup/archive BINDING=Optional';PIECE_SWITCH_INTERVALプロパティの設定 (オプション)PIECE_SWITCH_INTERVALプロパティは、pieceの切り替え間隔を設定するために使用されます。値の範囲は[1d, 7d]です。設定しない場合、デフォルトは1dです。NFSをアーカイブメディアとして使用する場合、システムテナントが指定テナント
mysql_tenantのアーカイブパスを設定し、1日ごとにログpieceを分割する例は以下の通りです:obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///data/nfs/backup/archive BINDING=Optional PIECE_SWITCH_INTERVAL=1d' TENANT = mysql_tenant;NFSをアーカイブメディアとして使用する場合、ユーザーテナントが自身のテナントのアーカイブパスを設定し、1日ごとにログ
pieceを分割する例は以下の通りです:obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///data/nfs/backup/archive BINDING=Optional PIECE_SWITCH_INTERVAL=1d';
設定が完了したら、ビューを参照して詳細なパラメータ設定情報を確認できます。
sysテナントはCDB_OB_ARCHIVE_DESTビューを参照してパラメータ設定情報を確認できます。ユーザーテナントはDBA_OB_ARCHIVE_DESTビューを参照してパラメータ設定情報を確認できます。パラメータ設定の詳細な操作手順については、アーカイブパラメータの確認を参照してください。
設定後の注意事項と説明
パラメータ
LOG_ARCHIVE_DESTの設定が成功すると、システムはデフォルトで、設定されたアーカイブ先ディレクトリにformatファイルを作成します。このファイルは、バックアップ先の有効性情報を検証し、先データの整合性を確保するために使用されます。そのため、ログアーカイブの先ディレクトリを設定する際には、以下の点に注意してください:formatファイルが存在しない場合、設定対象の先ディレクトリは空である必要があります。そうでない場合、システムは-9080エラーを返し、format ファイルが存在しないことを示します。formatファイルが既に存在する場合、その内容の検証に合格している必要があります。そうでない場合、システムは-9081エラーを返し、format ファイルがマッチしないことを示します。format ファイルの内容検証では、主にクラスタ、テナント、バックアップ先タイプなどが、現在実行中の操作のクラスタ、テナント、バックアップ先タイプと一致しているかどうかをチェックします。バックアップタスクの実行時に、
formatファイルが存在しない、またはformatファイルの検証に失敗した場合、タスクの開始は失敗します。
アーカイブ先ディレクトリの設定が成功した後、増分設定はサポートされません。例えば、NFS下のアーカイブパス
/data/nfs/backup/archiveのBINDINGプロパティをMandatory、PIECE_SWITCH_INTERVALプロパティを1dに設定したとします。PIECE_SWITCH_INTERVALを2dに更新し、BINDINGプロパティの設定Mandatoryを維持する場合でも、コマンド内で他のプロパティの値を指定する必要があります。指定しないプロパティはデフォルト値が使用されます。変更するには、以下のステートメントを再度実行する必要があります。
システムテナントが指定テナントを変更する場合
obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST = 'LOCATION=file:///data/nfs/backup/archive BINDING=Mandatory PIECE_SWITCH_INTERVAL=2d' TENANT = mysql_tenant;ユーザーテナントが自身のテナントを変更する場合
obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST = 'LOCATION=file:///data/nfs/backup/archive BINDING=Mandatory PIECE_SWITCH_INTERVAL=2d';
アーカイブ先ディレクトリの設定が成功した後、ユーザーがセキュリティ上の理由などでオブジェクトストレージのキー情報を変更した場合、設定済みのアーカイブパスの
access_idとaccess_key情報を更新する必要があります。具体的な操作については、オブジェクトストレージのキー情報の更新を参照してください。
(オプション)アーカイブの遅延時間を設定する
OceanBaseデータベースは、テナントレベルの構成パラメータ archive_lag_target を使用して、テナントのログアーカイブの遅延時間を制御します。この構成パラメータはミリ秒(ms)、秒(s)、分(m)、時間(h)単位をサポートしており、デフォルトは2分です。これは、前後のアーカイブI/Oの最大間隔時間を指定し、オンラインログがタイムリーにアーカイブされることを保証し、データ損失のリスクを低減するために使用されます。
OceanBaseデータベースのアーカイブはログストリーム単位で行われます。現在のログストリームにログの書き込みがあり、かつそのログストリームの前回のアーカイブからの時間が構成パラメータ archive_lag_target で指定された時間間隔を超えた場合、そのログストリームはアーカイブ処理をトリガーし、未アーカイブのログをすべてアーカイブします。
例えば、構成パラメータを archive_lag_target='120s'(つまり2分)に設定した場合、各ログストリームは2分ごとにアーカイブ処理を試みます(ログアーカイブのキャッシュ集約Bufferがいっぱいになるなど、他の条件が満たされる場合は除く)。これにより、そのログストリームの今回のアーカイブ処理から前回のアーカイブ時間までの時間が2分未満になります。なお、構成パラメータ archive_lag_target の値を0に設定すると、リアルタイムアーカイブの効果が得られます。
構成パラメータ archive_lag_target の詳細については、archive_lag_targetを参照してください。
前提条件
構成パラメータ archive_lag_target の値を変更する際は、アーカイブ先の設定が完了していることを確認してください。アーカイブ先が設定されていない場合、archive_lag_target の値を変更すると、システムは log_archive_dest has not been set, set archive_lag_target is not allowed というメッセージを表示します。
注意事項
アーカイブ媒体がOSS/NFSの場合、構成パラメータ
archive_lag_targetの値は許容範囲内の任意の値に設定できます。アーカイブ媒体がS3またはS3プロトコル互換の他のオブジェクトストレージの場合、構成パラメータarchive_lag_targetの値は60sより小さくすることはできません。60sより小さい場合、システムはエラーを返します。構成パラメータ
archive_lag_targetは、過度に頻繁なI/Oがシステム性能に影響を与えないよう、適切な値に設定することを推奨します。特にオブジェクトストレージを使用する場合が該当します。同時に、値が高すぎるとデータ復旧の即時性を満たせない可能性もあるため、具体的なビジネス要件とアーカイブ媒体の性能に基づいてRPOを適切にバランスさせる必要があります。
設定方法
sysテナントまたはユーザーテナントのテナント管理者としてデータベースにログインします。実際の状況に応じて、適切なステートメントを選択し、アーカイブの遅延時間を設定します。
設定方法は以下のとおりです:
sysテナントが特定のテナントのアーカイブ遅延時間を設定する場合obclient> ALTER SYSTEM SET archive_lag_target = '120s' TENANT = mysql_tenant;注意
archive_lag_targetパラメータを設定する際、sysテナントはTENANT = all_userを使用してすべてのユーザーテナントを指定することはサポートされていません。ユーザーテナントが自身のテナントのアーカイブ遅延時間を設定する場合
obclient> ALTER SYSTEM SET archive_lag_target = '120s';