mysql5.6(.ibd,.frmファイルによる)単一テーブルデータのリカバリ

1604 ワード

前提:データが削除されたテーブルがある.ibdファイルは、データベースのバックアップファイルから解凍できます.そして私の仮想マシンのmysqlは5.6バージョンで、自分のローカルコンピュータのmysql 5を見ました.5のdataにはないようです.ibdファイル
手順:1、Linux仮想マシンに入り、service mysql stopを使用してmysqlサービスを停止し、mysqlのmy.cnfでinnodb_を追加force_recovery=1、mysqlサービスを開始
[root@localhost ~]# service mysql stop   --  mysql
[root@localhost mysql]# cd /usr/local/mysql  --  mysql  
[root@localhost mysql]# vim my.cnf    --  my.cnf  

[mysqld]に次の2行を追加します.
innodb_force_recovery=1 #    1-6
innodb_purge_thread=0   #          1,       0,       
                       #  InnoDB: Waiting for the background threads to start   .

2、service mysql startはデータベースを起動し、データベース接続ツール(私が使用しているnavcatデータベースツール)を使用して仮想マシンに同名同符号化フォーマットのデータベースを新規作成し、回復するテーブルの構造を生成する.sqlファイルは、仮想マシンの同名データベースで実行され、元と同じ構造のテーブルがあります.(テーブル構造は同じでなければなりません)
3、もとの.ibdファイルと元の.frmファイルバインド解除
 alter table XXX(         ) discard tablespace;

4、Linuxはmysqlのdataフォルダの下に入り、対応するデータベースフォルダを見つけ、リカバリテーブルが必要なibdファイル(バックアップ以外)を削除する
5、時計をibd(バックアップ)ibdを削除する手順4
6、ibdファイル権限を修正し、alter table tb import tablespaceを実行する.
[root@localhost ~]# chmod 777   ibd    -- ibd    
alter table XXX(         ) import tablespace;

その後、データベースをリフレッシュし、データを見ると成功しました注意:最初のinnodb_を覚えてください.force_recovery=1その2つの文を変更して、後続の正常な操作が間違っていないようにします.
遭遇したピット:他の資料は3ステップ目以降、mysqlを閉じてibdをコピーしてからmysqlを起動する可能性がありますが、私は試したことがありません(mysqlバージョンに関連している可能性がありますが、具体的な研究はありません)、そして3ステップ目を実行した後にservice mysql startでmysqlを再起動すると、mysqlを起動できません.
参考記事:https://www.cnblogs.com/hankyoon/p/5667884.html