この記事では、ログアーカイブを行う前の準備について説明します。
アーカイブ並列度の設定(オプション)
アーカイブモードを有効にする前に、ログアーカイブの並列度を設定することで、テナントのログアーカイブ速度を向上させることができます。
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(V4.3.5バージョンでは、V4.3.5 BP3バージョンからサポート開始)、AWS S3、およびS3プロトコルに対応したオブジェクトストレージ(例:Huawei OBS、Google GCS、Tencent Cloud COSなど)です。一部のアーカイブメディアは、使用するためにはいくつかの基本的な要件を満たす必要があります。各アーカイブメディアの具体的な要件については、物理バックアップと復旧の概要のバックアップメディア要件を参照してください。アリババクラウド OSSNFSAWS S3S3プロトコル互換のオブジェクトストレージAzure BlobアーカイブメディアとしてOSSを使用する場合、アーカイブパス、
host、access_key、およびaccess_idを設定するほか、delete_modeパラメータを使用してアーカイブファイルのクリーンアップモードを構成することもサポートされています。delete_modeパラメータは現在、deleteモードとtaggingモードの2種類がサポートされています。delete_modeパラメータを明示的に設定しない場合は、デフォルトでdeleteモードが使用されます。さらに、OSSは
checksum_typeパラメータを使用して検証アルゴリズムを指定し、アーカイブファイルの整合性を検証することもサポートしています。サポートされる値はmd5およびno_checksumです。checksum_typeパラメータを明示的に設定しない場合は、デフォルト値はmd5となります。V4.3.5バージョンでは、V4.3.5 BP2バージョンから、OceanBaseデータベースはコンプライアンス保持ポリシーが設定済みのアリババクラウドOSSバケットをアーカイブパスとして使用できるようになりました。アーカイブパスを設定する際には、
enable_wormパラメータを使用して、OceanBaseデータベースがバケットの保持ポリシー(WORMポリシー)に基づいて該当パスに対して書き込みおよび削除操作を行うかどうかを指定できます。このパラメータのサポートされる値はtrueおよびfalseです。enable_wormパラメータを明示的に設定しない場合は、デフォルトはfalseとなります。enable_worm=trueを設定する場合は、同時にchecksum_type=md5を明示的に設定する必要があります。このパラメータは一度設定すると変更できなくなります。注意
OceanBaseデータベースは現在、既存のコンプライアンス保持ポリシーを置き換えることはありません。アーカイブパスを設定する前に、OSSバケットに正しく保持ポリシー(WORMポリシー)が設定されており、ロックされていることを確認してください。
各パラメータの詳細については、SET LOG_ARCHIVE_DESTを参照してください。
注意
OSSをアーカイブメディアとして使用する場合、OSSパスの各パラメータは
&記号によって区切られます。入力したパラメータ値には、大文字と小文字の英字、数字、/-_$+=、およびワイルドカードのみを含めるようにしてください。上記以外の文字を入力した場合、設定が失敗する可能性があります。例:
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をサポートする方法でオブジェクトへの書き込みおよび削除を指定し、検証アルゴリズムを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のホストアドレス、つまりエンドポイント(バケット名を含まないアドレス)を設定するために使用され、access_idおよびaccess_keyはCOSのアクセスキーを設定するために使用されます。クリーンアップモードはdeleteに設定されています。注意
アーカイブ実行中は、アーカイブに使用されるアクセスプロトコルの切り替えはサポートされていません。例えば、S3からOSSへの切り替えやOSSからS3への切り替えはサポートされていません。
V4.3.5バージョンでは、V4.3.5 BP3以降のバージョンから、Azure Blobをアーカイブメディアとしてサポートしています。
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に対してアーカイブパスを設定し、2日ごとにログpieceを切り替えるように設定する例は次のとおりです:obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///data/nfs/backup/archive BINDING=Optional PIECE_SWITCH_INTERVAL=1d' TENANT = mysql_tenant;アーカイブメディアとしてNFSを使用する場合、ユーザーテナントが自テナントに対してアーカイブパスを設定し、2日ごとにログ
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分です。これは、前回のアーカイブIOと次のアーカイブIOとの最大間隔時間を指定するために使用され、オンラインログが適時にアーカイブされるようにし、データ損失のリスクを低減します。
OceanBaseデータベースでは、ログストリーム単位でアーカイブが行われます。現在のログストリームにログ書き込みがあり、かつそのログストリームの最後のアーカイブから経過した時間が構成パラメータarchive_lag_targetで指定された時間間隔を超えた場合、そのログストリームはアーカイブ動作をトリガーし、未アーカイブのログをすべてアーカイブします。
例えば、構成パラメータがarchive_lag_target='120s'(つまり2分)に設定されている場合、各ログストリームは2分ごとにアーカイブ動作を試行します(他の条件が満たされている場合、例えばログアーカイブのキャッシュ集約バッファが上限になる場合を除く)。これにより、該当するログストリームの今回のアーカイブ動作と前回のアーカイブとの間隔が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互換のオブジェクトストレージを使用する場合、同パラメータを60s未満に設定することはできません。60s未満の値を設定すると、システムエラーとなります。オブジェクトストレージを使用する場合を除き、システムのパフォーマンスに影響を与えないように、構成パラメータ
archive_lag_targetを適切な値に設定することをお勧めします。また、値が大きすぎるとデータ復旧のタイムリーさを満たせなくなる可能性があるため、具体的なビジネスニーズやアーカイブメディアのパフォーマンスによってRPOを調整する必要があります。
設定方法
sysテナントまたはユーザーテナントのテナント管理者がデータベースにログインします。実際の状況に応じて、適切なステートメントを選択し、アーカイブ遅延を設定します。
設定方法は以下のとおりです:
sysテナントが指定されたテナントのアーカイブ遅延時間を設定します。obclient> ALTER SYSTEM SET archive_lag_target = '120s' TENANT = mysql_tenant;注意
archive_lag_targetパラメータを設定する際、TENANT = all_userを使用してすべてのユーザーテナントを指定することはサポートされていません。ユーザーテナントが自身のテナントのアーカイブ遅延時間を設定します。
obclient> ALTER SYSTEM SET archive_lag_target = '120s';