MAJOR FREEZE コマンドでメジャーコンパクションをトリガーすると、システムは自動的にメジャーコンパクションタスクをスケジュールします。OceanBaseデータベースV2.x.xおよびV3.x.xバージョンとは異なり、OceanBaseデータベースV4.0.xバージョン以降では、統一メジャーコンパクション戦略に基づいてメジャーコンパクションプロセスが実行されます。つまり、テナントのすべてのゾーンが同時にメジャーコンパクションを開始し、すべてのゾーンのメジャーコンパクションが完了して初めて、そのテナントのメジャーコンパクションが完了したことになります。
メジャーコンパクション中は、各ゾーンのメジャーコンパクション順序などを手動で制御する必要はなく、ローテーションメジャーコンパクションも存在しません。メジャーコンパクション中にエラーが発生した場合は、本記事を参照して手動でメジャーコンパクションを制御できます。例えば、Checksum検証エラーが発生した場合、そのテナントの現在のラウンドのメジャーコンパクションは終了できません。この場合、現在のメジャーコンパクションを一時停止(suspend merge)し、Checksumが正常に戻った後(例えば、人為的に介入して修正した後)、Checksumエラーのマークをクリア(clear merge error)、その後、現在のラウンドのメジャーコンパクションを再開(resume merge)します。
前提条件
マニュアルでメジャーコンパクションを制御する前に、MAJOR FREEZEコマンドでメジャーコンパクションがトリガーされていることを確認してください。マニュアルでメジャーコンパクションをトリガーする詳細な操作については、マニュアルでのメジャーコンパクションのトリガーを参照してください。
注意事項
メジャーコンパクションタスクが一時停止されている場合、テナントレベルのメジャーコンパクションの開始は許可されますが、パーティションレベルのメジャーコンパクションの開始は許可されません。メジャーコンパクションタスクが一時停止されている状態で開始されたテナントレベルのメジャーコンパクションについて、システムはそのタスクを即座に実行することはなく、メジャーコンパクションの再開後に実行します。
システムテナントによるメジャーコンパクションの手動制御
メジャーコンパクションが開始された後、システムテナントはすべてのテナントまたは指定したテナントのメジャーコンパクション操作を制御できます。制御可能なメジャーコンパクション操作には、テナントレベルのメジャーコンパクションとパーティションレベルのメジャーコンパクションが含まれます。
具体的な操作は以下のとおりです:
rootユーザーでクラスタのsysテナントにログインします。業務の実際の状況に応じて、適切なコマンドを選択してメジャーコンパクションを制御します。
すべてのユーザーテナント、すべてのMetaテナント、または指定したテナントのメジャーコンパクションを一時停止する
メジャーコンパクション開始後、すべてのユーザーテナント、すべてのMetaテナント、または指定したテナントのメジャーコンパクションを一時停止する必要がある場合は、以下のステートメントを実行します。
すべてのユーザーテナントのメジャーコンパクションを一時停止する
ALTER SYSTEM SUSPEND MERGE TENANT = all_user;または
ALTER SYSTEM SUSPEND MERGE TENANT = all;説明
OceanBaseデータベースはV4.2.1バージョンから、
TENANT = all_userとTENANT = allの意味が同じになりました。すべてのユーザーテナントに適用範囲を設定する必要がある場合は、TENANT = all_userの使用を推奨します。TENANT = allは今後廃止されます。すべてのMetaテナントのメジャーコンパクションを一時停止する
ALTER SYSTEM SUSPEND MERGE TENANT = all_meta;指定したテナントのメジャーコンパクションを一時停止する
ALTER SYSTEM SUSPEND MERGE TENANT = tenant1,tenant2;
ここで、
=はオプションです。tenant1、tenant2は実際のテナント名に置き換えてください。メジャーコンパクションを再開する
メジャーコンパクションを一時停止した後、再開することもできます。ステートメントは以下のとおりです。
すべてのユーザーテナントのメジャーコンパクションを再開する
ALTER SYSTEM RESUME MERGE TENANT = all_user;または
ALTER SYSTEM RESUME MERGE TENANT = all;説明
OceanBaseデータベースはV4.2.1バージョンから、
TENANT = all_userとTENANT = allの意味が同じになりました。すべてのユーザーテナントに適用範囲を設定する必要がある場合は、TENANT = all_userの使用を推奨します。TENANT = allは今後廃止されます。すべてのMetaテナントのメジャーコンパクションを再開する
ALTER SYSTEM RESUME MERGE TENANT = all_meta;指定したテナントのメジャーコンパクションを再開する
ALTER SYSTEM RESUME MERGE TENANT = tenant1,tenant2;
ここで、
=はオプションです。tenant1、tenant2は実際のテナント名に置き換えてください。Checksumエラーマークをクリアする
メジャーコンパクション中にChecksum検証エラーが発生し、手動で修正した後、そのChecksumエラーマークをクリアしてメジャーコンパクションを再開できます。ステートメントは以下のとおりです。
すべてのユーザーテナントのChecksumエラーマークをクリアする
ALTER SYSTEM CLEAR MERGE ERROR TENANT = all_user;または
ALTER SYSTEM CLEAR MERGE ERROR TENANT = all;説明
OceanBaseデータベースはV4.2.1バージョンから、
TENANT = all_userとTENANT = allの意味が同じになりました。すべてのユーザーテナントに適用範囲を設定する必要がある場合は、TENANT = all_userの使用を推奨します。TENANT = allは今後廃止されます。すべてのMetaテナントのChecksumエラーマークをクリアする
ALTER SYSTEM CLEAR MERGE ERROR TENANT = all_meta;指定したテナントのChecksumエラーマークをクリアする
ALTER SYSTEM CLEAR MERGE ERROR TENANT = tenant1,tenant2;
ここで、
=はオプションです。tenant1、tenant2は実際のテナント名に置き換えてください。
ユーザーテナントによるマニュアルなメジャーコンパクションの制御
メジャーコンパクションが開始された後、ユーザーテナントは自身のテナントに対するメジャーコンパクション操作のみを制御できます。制御可能なメジャーコンパクション操作には、テナントレベルのメジャーコンパクションとパーティションレベルのメジャーコンパクションが含まれます。
ユーザーテナントのテナント管理者がデータベースにログインします。
業務の実際の状況に応じて、適切なコマンドを選択してメジャーコンパクションを制御します。
テナントのメジャーコンパクションの一時停止
メジャーコンパクション開始後、当該テナントのメジャーコンパクションを一時停止する必要がある場合は、以下のステートメントを実行します。
obclient> ALTER SYSTEM SUSPEND MERGE;メジャーコンパクションの再開
メジャーコンパクションを一時停止した後でも、再開することができます。
ステートメントは以下のとおりです:
obclient> ALTER SYSTEM RESUME MERGE;Checksumエラーのマークのクリーンアップ
メジャーコンパクション中にChecksum検証エラーが発生し、手動で修正した後、そのChecksumエラーのマークをクリーンアップしてメジャーコンパクションを再開できます。
ステートメントは以下のとおりです:
obclient> ALTER SYSTEM CLEAR MERGE ERROR;