mysql 5.7.20データリカバリ

5223 ワード

環境紹介:mysql独立ストレージスペース、innodbエンジンを採用.リカバリは2つの部分に分けられます.データ構造とデータが入手できるファイルはデータベースのみです.idbと.frmファイル、ibdataおよびib_はありませんlogfileファイル第一に、まずデータ構造を復元して同じデータベース環境を構築し、testデータベースを新規作成し、テーブルを新規作成し、テーブル名は私たちが復元するテーブルの名前と同じである.例えばtbl_user
-- create table songlyric(id int);   //  tbl_user 
--       mysql  ,      frm      frm  ;    my.ini    innodb_force_recovery = 6;
--   mysql  ,        desc tbl_user;      :
       ERROR 1146 (42S02):Table 'test.tbl_user' doesn't exsit

--    mysql            [Warning] InnoDB: Table test/tbl_user     contains 1 user defined columns in InnoDB,but 6 columns in Mysql.
                6   ,             。
        :  mysql      my.ini       innodb_force_recovery = 6,            ,    read-only    。          6      create table tbl_user(id int,id1 int,id2 int,id3 int,id4 int,id5 int);           ,             frm  ,     desc tbl_user;
----------
    desc tbl_user;
    CREATE TABLE `tbl_user` (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '    ',
  `user_name` varchar(50) DEFAULT NULL COMMENT '    ',
  `password` varchar(32) DEFAULT NULL COMMENT '    ',
  `pass` varchar(50) DEFAULT NULL COMMENT '  --   ',
  `display_name` varchar(50) DEFAULT NULL COMMENT '    ,   ',
  `profile_photo` varchar(512) DEFAULT NULL COMMENT '    ',
  PRIMARY KEY (`id`),
  UNIQUE KEY `user_name` (`user_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='   ' ROW_FORMAT=COMPACT;   //         ,           

ここでデータ構造は正常に復元されました.新しいテーブルを再構築するだけです.
第二に、データ復旧テーブルのデータを復旧するには、まず元のものを必要とする.ibdファイルと元の.frmファイルはバインドを解除します.具体的には、コンソールで次のコマンドを実行します.
alter table tbl_user discard tablespace; 
    net stop mysql    ,      tbl_user.ibd         huifu    tbl_user      tbl_user.ibd,
  net start mysql    。 
      tbl_user.ibd   tbl_user.frm      。        :
alter table tbl_user import tablespace;      navicat     ,               。
----------
                 
alter table tbl_user import tablespace;
    11:01:37    ALTER TABLE tbl import TABLESPACE    Error Code: 1808. Schema mismatch (Table has ROW_TYPE_DYNAMIC row format, .ibd file has ROW_TYPE_COMPACT row format.)    0.172 sec
           ROW_FORMAT=COMPACT
              ,        ROW_FORMAT=COMPACT   

これで、データ・リカバリが完了しました.データベースにバックアップが必要だと感じています.そうしないと、問題が発生して面倒になります.今回発生した状況はテスト環境ですが、教訓です.後でスクリプトの自動返信を書いてみますが、表の数が少ないのはいいですが、大きいとだめです