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テナントのチェックサムエラーのマーカーをクリアする
ALTER SYSTEM CLEAR MERGE ERROR TENANT = all_meta;指定されたテナントのチェックサムエラーのマーカーをクリアする
ALTER SYSTEM CLEAR MERGE ERROR TENANT = tenant1,tenant2;
ここで、
=はオプションです。tenant1、tenant2は実際のテナント名に置き換えてください。
ユーザーテナントによるメジャーコンパクションの手動制御
メジャーコンパクションが開始されると、ユーザーテナントは自身のテナントにおけるメジャーコンパクション操作のみを制御できます。制御可能なメジャーコンパクション操作には、テナントレベルのメジャーコンパクションとパーティションレベルのメジャーコンパクションが含まれます。
ユーザーテナントのテナント管理者がデータベースにログインします。
業務の実際の状況に応じて、適切なコマンドを選択してメジャーコンパクションを制御します。
本テナントのメジャーコンパクションを一時停止する
メジャーコンパクション開始後、本テナントのメジャーコンパクションを一時停止する必要がある場合は、以下のステートメントを実行します。
obclient> ALTER SYSTEM SUSPEND MERGE;メジャーコンパクションを再開する
メジャーコンパクションを一時停止した後、再開することもできます。
ステートメントは以下のとおりです:
obclient> ALTER SYSTEM RESUME MERGE;チェックサムエラーのマーカーをクリアする
メジャーコンパクションの過程でチェックサム検証エラーが発生し、人手による介入修復後、そのチェックサムエラーのマーカーをクリアしてメジャーコンパクションを再開できます。
ステートメントは以下のとおりです:
obclient> ALTER SYSTEM CLEAR MERGE ERROR;