mysql 5.7.20データリカバリ
5223 ワード
環境紹介:mysql独立ストレージスペース、innodbエンジンを採用.リカバリは2つの部分に分けられます.データ構造とデータが入手できるファイルはデータベースのみです.idbと.frmファイル、ibdataおよびib_はありませんlogfileファイル第一に、まずデータ構造を復元して同じデータベース環境を構築し、testデータベースを新規作成し、テーブルを新規作成し、テーブル名は私たちが復元するテーブルの名前と同じである.例えばtbl_user
ここでデータ構造は正常に復元されました.新しいテーブルを再構築するだけです.
第二に、データ復旧テーブルのデータを復旧するには、まず元のものを必要とする.ibdファイルと元の.frmファイルはバインドを解除します.具体的には、コンソールで次のコマンドを実行します.
これで、データ・リカバリが完了しました.データベースにバックアップが必要だと感じています.そうしないと、問題が発生して面倒になります.今回発生した状況はテスト環境ですが、教訓です.後でスクリプトの自動返信を書いてみますが、表の数が少ないのはいいですが、大きいとだめです
-- 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
これで、データ・リカバリが完了しました.データベースにバックアップが必要だと感じています.そうしないと、問題が発生して面倒になります.今回発生した状況はテスト環境ですが、教訓です.後でスクリプトの自動返信を書いてみますが、表の数が少ないのはいいですが、大きいとだめです