ADMIN REPAIR
説明
指定されたテーブルまたはパーティションの修復を試行します。
共有なしクラスタ内のネイティブテーブルの場合、このステートメントはレプリカ修復操作のスケジューリングを優先的に試行します。
共有データクラスタ内のクラウドネイティブテーブルの場合、メタデータまたはデータファイルが失われた際に、履歴上の利用可能なバージョンへのロールバックを試行します。これにより一部のタブレットの最新データが失われる可能性があることにご注意ください。
ヒント
この操作には、SYSTEM レベルの OPERATE 権限が必要です。GRANT の指示に従って、この権限を付与することができます。
構文
ADMIN REPAIR TABLE table_name [PARTITION (p1,...)] [PROPERTIES ("key" = "value", ...)]
注意:
- このステートメントは、指定されたテーブルまたはパーティションのシャーディングレプリカを優先的に修復しようとすることを意味しますが、修復が成功する保証はありません。ユーザーは ADMIN SHOW REPLICA STATUS コマンドを通じて修復状況を確認できます。
- デフォルトのタイムアウトは 14400 秒(4 時間)です。タイムアウトは、指定されたテーブルまたはパーティションのシャーディングレプリカを優先的に修復しないことを意味します。タイムアウトが発生した場合、意図した設定のために再度コマンドを使用する必要があります。
- ステートメントで
PROPERTIESを指定することで修復動作を設定できます。現在、共有データクラスタ内のクラウドネイティブテーブルのみがPROPERTIESをサポートしています。
PROPERTIES
enforce_consistent_version: パーティション内の全タブレットを一貫性のあるバージョンにロールバックさせるかどうか。デフォルト:true。この項目がtrueに設定されている場合、システムはロールバックを実行するために、パーティション全体のデータバージョン整合性を確保するため、すべてのタブレットで有効な履歴内の整合性のあるバージョンを検索します。falseに設定されている場合、パーティション内の各タブレットは、利用可能な最新の有効なバージョンにロールバックすることが許可されます。異なるタブレットのバージョンは不整合になる可能性がありますが、これによりデータ保存が最大化されます。allow_empty_tablet_recovery: 空のタブレットを作成してリカバリを許可するかどうか。デフォルト:false。この項目はenforce_consistent_versionがfalseの場合にのみ有効です。この項目がtrueに設定されている場合、一部のタブレットの全バージョンでメタデータが欠落しているが、少なくとも1つのタブレットに有効なメタデータが存在する場合、システムは欠落しているバージョンを埋めるために空のタブレットを作成しようと試みます。すべてのタブレットの全バージョンのメタデータが失われた場合、回復は不可能です。dry_run: 実際に修復を実行せず、修復計画のみを返すかどうか。デフォルト:false。trueに設定すると、システムは各パーティションの復旧可能性を評価して修復計画を返しますが、実際のメタデータのロールバックは実行しません。返される結果セットには以下の列が含まれます:PartitionId:パーティション ID。VisibleVersion:現在の可視バージョン。RepairStatus:修復ステータス。有効値:NORMAL(すべてのタブレットが正常、修復不要)、RECOVERABLE(メタデータまたはデータファイルが欠落しているが復旧可能)、UNRECOVERABLE(メタデータまたはデータファイルが欠落しており復旧不可能)、UNKNOWN(検査中に例外が発生)。TabletRecoverInfo:各タブレットがロールバックするバージョンを示す JSON 配列。RepairStatusがRECOVERABLEの場合のみ値が設定されます。ErrorMsg:エラーメッセージ。RepairStatusがUNRECOVERABLEまたはUNKNOWNの場合のみ値が設定されます。
例
-
指定されたテーブルを修復しようとする
ADMIN REPAIR TABLE tbl1; -
指定されたパーティションを修復しようとする
ADMIN REPAIR TABLE tbl1 PARTITION (p1, p2); -
バージョンの不整合を許容し、回復のために空のタブレットを作成することを許可して、共有データクラスタ内のクラウドネイティブテーブルを修復しようとする
ADMIN REPAIR TABLE cloud_tbl PROPERTIES ("enforce_consistent_version" = "false","allow_empty_tablet_recovery" = "true"); -
共有データテーブルに対してドライランを実行し、実際に修復を行わず修復計画をプレビューする
ADMIN REPAIR TABLE cloud_tbl PARTITION (p1) PROPERTIES ("dry_run" = "true");