Documentation Home
MySQL Enterprise Backup ユーザーズガイド (バージョン 3.11)
Download this Manual
PDF (US Ltr) - 1.3Mb
PDF (A4) - 1.3Mb
HTML Download (TGZ) - 164.5Kb
HTML Download (Zip) - 190.9Kb


4.4 単一の .ibd ファイルのバックアップとリストア

テーブル固有のテーブルスペースを持つテーブル (.ibd ファイルに格納) は、MySQL Server を停止させずに個別にリストアできます。間違ってテーブルデータを削除または更新した場合に、この手法を適用でき、DROP TABLETRUNCATE TABLE、または DROP DATABASE のステートメントを通じて、実際にはテーブル自体を失うことがありません。

.ibd ファイルのクリーンなバックアップがある場合、次のようにして、クリーンなバックアップが作成された MySQL インストール状態にリストアできます。

  1. MySQL 5.5 以前の場合、テーブルがすでに存在し、バックアップを取得して以降に破棄または切り捨てられていないことが必要です。InnoDB テーブルが切り捨てられるか削除されて再作成された場合、このテーブルは新しいテーブル ID を取得します。データベース内のテーブルとバックアップされたテーブルとの間で ID が一致しないと、このテーブルをリストアできないことがあります。テーブル ID が一致する必要があるのは、類似した一連のデータベースおよびテーブルを持つ別のサーバーではなく、バックアップデータが得られた同じ MySQL Server にリストアする必要がある理由でもあります。同じシリーズの MySQL Server の、ある一般提供開始 (GA) バージョンから別バージョンにリストアが行われるかぎり、この制限は MySQL 5.6 以降には適用されません。

  2. リストアされるテーブルに対する書き込み操作を防止します。これにより、リストアの進行中にユーザーがテーブルを変更できなくなります。

    LOCK TABLES tbl_name WRITE;
  3. 次の ALTER TABLE ステートメントを発行します。

    ALTER TABLE tbl_name DISCARD TABLESPACE;

    注意: これにより現在の .ibd ファイルは削除されます。

  4. バックアップ .ibd ファイルをコピーして、適切なデータベースディレクトリに戻します。

  5. 次の ALTER TABLE ステートメントを発行します。

    ALTER TABLE tbl_name IMPORT TABLESPACE;
  6. 書き込みロックを解除して、リストア手順を完了します。

    UNLOCK TABLES;

このコンテキストでは、クリーンな .ibd ファイルバックアップとは次のことを意味します。

  • .ibd ファイル内に、トランザクションによってコミットされていない変更がない。

  • .ibd ファイル内に、マージされていない挿入バッファーエントリがない。

  • パージにより、.ibd ファイルからすべての削除マークされたインデックスレコードが削除されている。

  • mysqld が、.ibd ファイルのすべての変更されたページをバッファープールからファイルにフラッシュしている。

次の方法を利用して、このようなクリーンなバックアップ .ibd ファイルを作成できます。

  1. mysqld サーバーからのすべてのアクティビティーを停止して、すべてのトランザクションをコミットします。

  2. SHOW INNODB STATUS で、データベース内にアクティブなトランザクションがないことが表示され、InnoDB のメインスレッドステータスが Waiting for server activity になるまで待機します。続いて、.ibd ファイルのコピーを作成できます。

.ibd ファイルのクリーンなコピーを作成するもう 1 つの方法は、mysqlbackup を使用するというものです。

  1. --only-innodb オプションまたは --only-innodb-with-frm オプションを付けて mysqlbackup を使用して、InnoDB インストールをバックアップします。

  2. mysqlbackup ... apply-log を実行して、バックアップデータベースの一貫したバージョンを作成します。

  3. 2 番目 (ダミー) の mysqld サーバーをバックアップ上で起動して、バックアップ内の .ibd ファイルをクリーンアップできるようにします。クリーンアップが終了するまで待機します。

  4. ダミーの mysqld サーバーをシャットダウンします。

  5. バックアップからクリーンな .ibd ファイルを取得します。


User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.