【MySQL】ALTER TABLE を使って ibd ファイルを置き換える手順

Windows 版の MySQL の Check for Updates が悪いのか
私のやり方がいけないのか分かりませんが

ちょくちょく更新に失敗して、MySQL 起動できなくなって
インストールし直す羽目になることがおおいです。

そんなときに限って、バックアップを忘れています(苦笑
でも、大概の場合には、最新の ibd ファイルが残っているので
それを利用して、データを元にもどす手順を忘れてしまう前に書いておきます。

・あらかじめ同じ構造のテーブルを作っておきます
・MySQLは起動中のままです

手順は覚えてしまえば、ごくごく簡単です。
ALTER TABLE 文を使います。

書式は、以下のようになります。

ALTER TABLE tbl_name DISCARD TABLESPACE;
ALTER TABLE tbl_name IMPORT TABLESPACE;

詳しい解説は、下記を御覧ください。
https://dev.mysql.com/doc/refman/5.6/ja/alter-table.html

まずは、置き換えたいテーブルを廃棄する必要がありますので
次のステートメントを発行します。
正常終了すると対象の .ibd ファイルが削除されます。

ALTER TABLE tbl_name DISCARD TABLESPACE;

削除されたのを確認したら、
.ibd のバックアップファイルをインポートするには、
対象のデータベースディレクトリにコピーしてから、
次のステートメントを発行します。

ALTER TABLE tbl_name IMPORT TABLESPACE;

正常終了したら、テーブルの中身を確認してみましょう。

MySQL

Posted by 管理人