LOCK INSTANCE FOR BACKUP
UNLOCK INSTANCE
LOCK INSTANCE FOR BACKUP
は、オンラインバックアップ中に DML を許可するインスタンスレベルのバックアップロックを取得し、一貫性のないスナップショットを生成する可能性のある操作を防止します。
LOCK INSTANCE FOR BACKUP
ステートメントを実行するには、BACKUP_ADMIN
権限が必要です。 以前のバージョンから MySQL 8.0 へのインプレースアップグレードを実行すると、RELOAD
権限を持つユーザーに BACKUP_ADMIN
権限が自動的に付与されます。
複数のセッションで同時にバックアップロックを保持できます。
UNLOCK INSTANCE
は、現在のセッションで保持されているバックアップロックを解放します。 セッションが終了すると、セッションによって保持されているバックアップロックも解放されます。
LOCK INSTANCE FOR BACKUP
では、ファイルの作成、名前変更または削除はできません。 REPAIR TABLE
TRUNCATE TABLE
、OPTIMIZE TABLE
およびアカウント管理ステートメントはブロックされます。 セクション13.7.1「アカウント管理ステートメント」を参照してください。 InnoDB
redo ログに記録されていない InnoDB
ファイルを変更する操作もブロックされます。
LOCK INSTANCE FOR BACKUP
では、ユーザーが作成した一時テーブルにのみ影響する DDL 操作が許可されます。 実際には、バックアップロックが保持されている間に、ユーザーが作成した一時テーブルに属するファイルを作成、名前変更または削除できます。 バイナリログファイルの作成も許可されます。
LOCK INSTANCE FOR BACKUP
によって取得されるバックアップロックは、FLUSH TABLES
によって取得されるトランザクションロックおよびロックとは無関係であり、次の一連のステートメントが許可されます:
tbl_name
[, tbl_name
] ... WITH READ LOCK
LOCK INSTANCE FOR BACKUP;
FLUSH TABLES tbl_name [, tbl_name] ... WITH READ LOCK;
UNLOCK TABLES;
UNLOCK INSTANCE;
FLUSH TABLES tbl_name [, tbl_name] ... WITH READ LOCK;
LOCK INSTANCE FOR BACKUP;
UNLOCK INSTANCE;
UNLOCK TABLES;
lock_wait_timeout
設定では、LOCK INSTANCE FOR BACKUP
ステートメントがロックの取得を待機してから放棄する時間を定義します。