1、导出.frm和.ibd文件
2、安装Mysql的Utilities
3、执行命令(实际恢复的表)
mysqlfrm --diagnostic ./stat_vehicle_mileage.frm
4、复制Sql,添加ROW_FORMAT=COMPACT(需要检测生成的Sql语句是否可用)
CREATE TABLE `stat_vehicle_mileage` (
`id` varchar(64) NOT NULL COMMENT '记录唯一标识',
`vehicle_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '车辆ID',
`bus_model_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '车型ID',
`stat_cycle` varchar(6) DEFAULT NULL COMMENT '统计周期',
`stat_date` datetime DEFAULT NULL COMMENT '统计时间',
`data_date` datetime DEFAULT NULL COMMENT '数据时间',
`mileage` decimal(10,1) DEFAULT NULL COMMENT '里程',
`co2` double DEFAULT NULL COMMENT '减排CO2',
`tree_num` double DEFAULT NULL,
`mileage_added` decimal(10,1) DEFAULT NULL COMMENT '累计里程',
`co2_added` double DEFAULT NULL,
`tree_num_added` double DEFAULT NULL,
`company_id` varchar(64) DEFAULT NULL COMMENT '公司Id',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人ID',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT NULL COMMENT '近更新人ID',
`update_date` datetime DEFAULT NULL COMMENT '近更新时间',
`remarks` varchar(255) DEFAULT NULL COMMENT '备注',
`del_flag` char(1) DEFAULT NULL COMMENT '删除标识 0:有效 1:删除',
`abnormal_number` bigint(6) DEFAULT NULL COMMENT '异常里程记录数',
`last_mileage` decimal(10,1) DEFAULT NULL COMMENT '仪表里程',
`initial_mileage` decimal(10,1) DEFAULT '0.0' COMMENT '初始里程',
`gps_begin_mileage` decimal(10,1) DEFAULT '0.0' COMMENT 'GPS当日初始里程',
`gps_end_mileage` decimal(10,1) DEFAULT '0.0' COMMENT 'GPS当日结束里程',
`gps_abnormal_number` bigint(6) DEFAULT '0' COMMENT '异常里程次数',
`gps_mileage` decimal(10,1) DEFAULT '0.0' COMMENT 'GPS当日行驶里程',
`gps_mileage_add` decimal(10,1) DEFAULT '0.0' COMMENT 'GPS总行驶里程',
`is_corrected` varchar(5) DEFAULT NULL COMMENT '是否修正 true:是 false:否',
`mileage_time` bigint(20) DEFAULT NULL COMMENT '仪表运行里程时间',
`gps_mileage_time` bigint(20) DEFAULT NULL COMMENT 'GPS运行里程时间',
`valid_mileage_add` decimal(10,1) DEFAULT NULL COMMENT '有效总里程,当天有仪表取仪表,没有取GPS',
PRIMARY KEY (`id`),
KEY `vehicle_id_index` (`vehicle_id`,`data_date`,`stat_cycle`) USING BTREE,
KEY `idx_datadate` (`data_date`),
KEY `idx_datadate_vehicleid_mileage_gpsmileage` (`data_date`,`vehicle_id`,`mileage`,`gps_mileage`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='车辆里程统计数据'
ROW_FORMAT=COMPACT;
5、新建表(新建一个空的数据库,在建一个新表)
6、断开表和表空间联系
alter table stat_vehicle_mileage discard tablespace;
7、查询数据文件位置(也可以通过 /cat /etc/mysql/mysql.cnf查看);
show global variables like "%datadir%";
8、关闭mysql服务(根据实际命令处理)
service mysql stop
9、登录服务器
进入上面查询的目录
10、上传 stat_vehicle_mileage.ibd文件到目录下
11、赋权
chmod +777 -R mysql stat_vehicle_mileage.*
chown -R mysql:mysql stat_vehicle_mileage.ibd
12、重启Mysql服务(根据实际命令处理)
service mysql start
13、重新建立表和表和表空间连接
alter table stat_vehicle_mileage import tablespace;
12、验证数据是否存在 (也可以重启下数据库)
SELECT COUNT(1) FROM stat_vehicle_mileage;