mysql表空間損壞
阿新 • • 發佈:2019-01-21
spa ref creat 情況 str def 打不開 null foreign 在沒有備份數據的情況下,突然斷電導致表損壞,打不開數據庫。
1)拷貝庫目錄到新庫中
[root@db01 ~]# cp -r /application/mysql/data/world/ /data/3307/data/
2)啟動新數據庫
[root@db01 ~]# mysqld_safe --defaults-file=/data/3307/my.cnf &
3)登陸數據庫查看
mysql> show databases;
4)查詢表中數據
mysql> select from city;
ERROR 1146 (42S02): Table ‘world.city‘ doesn‘t exist #當出現這種報錯時,可能是表空間損壞
5)找到以前的表結構在新庫中創建表
mysql> show create table world.city;
#刪掉外鍵創建語句
CREATE TABLE
PRIMARY KEY (
KEY (
KEY
CONSTRAINT
) ENGINE=InnoDB AUTO_INCREMENT=4080 DEFAULT CHARSET=latin1;
6)刪除表空間文件
mysql> alter table city_new discard tablespaces;
7)拷貝舊表空間文件
[root@db01 world]# cp /data/3307/data/world/city.ibd /data/3307/data/world/city_new.ibd
8)授權
[root@db01 world]# chown -R mysql.mysql
9)導入表空間
mysql> alter table city_new import tablespace;
1)拷貝庫目錄到新庫中
[root@db01 ~]# cp -r /application/mysql/data/world/ /data/3307/data/
2)啟動新數據庫
[root@db01 ~]# mysqld_safe --defaults-file=/data/3307/my.cnf &
3)登陸數據庫查看
mysql> show databases;
4)查詢表中數據
mysql> select from city;
ERROR 1146 (42S02): Table ‘world.city‘ doesn‘t exist #當出現這種報錯時,可能是表空間損壞
mysql> show create table world.city;
#刪掉外鍵創建語句
CREATE TABLE
city
(ID
int(11) NOT NULL AUTO_INCREMENT,Name
char(35) NOT NULL DEFAULT ‘‘,CountryCode
char(3) NOT NULL DEFAULT ‘‘,District
char(20) NOT NULL DEFAULT ‘‘,Population
int(11) NOT NULL DEFAULT ‘0‘,PRIMARY KEY (
ID
),KEY
CountryCode
CountryCode
),KEY
idx_city
(Population
,CountryCode
),CONSTRAINT
city_ibfk_1
FOREIGN KEY (CountryCode
) REFERENCES country
(Code
)) ENGINE=InnoDB AUTO_INCREMENT=4080 DEFAULT CHARSET=latin1;
6)刪除表空間文件
mysql> alter table city_new discard tablespaces;
7)拷貝舊表空間文件
[root@db01 world]# cp /data/3307/data/world/city.ibd /data/3307/data/world/city_new.ibd
[root@db01 world]# chown -R mysql.mysql
9)導入表空間
mysql> alter table city_new import tablespace;
mysql表空間損壞