牧云优化数据库 InnoDB .ibd 数据修复

162 阅读1分钟

InnoDB .ibd 数据修复

连接数据库

mysql -h 127.0.0.1 -u root -p

#新建数据库

CREATE DATABASE seomuyun.com;

#进入新建的数据库

USE seomuyun.com;

#建与待修复表相同的表

CREATE TABLE seomuyun (

actor_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,

first_name VARCHAR(45) NOT NULL,

last_name VARCHAR(45) NOT NULL,

last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

PRIMARY KEY (actor_id),

KEY idx_actor_last_name (last_name)

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

#将此表移出表空间

ALTER TABLE seomuyun.com.actor DISCARD TABLESPACE;

复制数据文件

cp /backup_directory/actor.ibd path/to/mariadb/data/seomuyun.com/

修改文件所有者和权限

chown -R mariadb:mariadb path/to/mariadb/data/seomuyun.com/actor.ibd

chmod -R 0660 path/to/mariadb/data/seomuyun.com/actor.ibd

重新将其导入表空间

ALTER TABLE seomuyun.com.actor IMPORT TABLESPACE;

如果一切正常,应该就可以对修复后的表进行查询操作了,将查询出的数据恢复到损坏的MySQL实例中即可。