MySQL根据idb文件恢复数据
3.去mysql的data路径看对应表的idb文件,此时该文件应该是不在了的,如果还在就得看看什么问题了。将表与当前idb文件建立联系。可以看到表里已经有数据了。首先得有对应表的idb文件以及建表语句。2.建好表后将表和表空间解除联系。然后将idb文件cp到该目录。1.首先在新数据库建表。
·
首先得有对应表的idb文件以及建表语句
1.首先在新数据库建表
CREATE TABLE `sys_menu` (
`id` bigint(20) NOT NULL,
`parent_id` bigint(20) NULL DEFAULT NULL,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`type` int(11) NULL DEFAULT NULL,
`path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`perms` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`sort_value` int(11) NULL DEFAULT NULL,
`status` int(11) NULL DEFAULT NULL,
`create_time` datetime NULL DEFAULT NULL,
`update_time` datetime NULL DEFAULT NULL,
`is_delete` int(11) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
2.建好表后将表和表空间解除联系
alter table sys_menu discard tablespace;
3.去mysql的data路径看对应表的idb文件,此时该文件应该是不在了的,如果还在就得看看什么问题了
cd /var/lib/mysql/test
ll
然后将idb文件cp到该目录
cp sys_menu /var/lib/mysql/test
并设置权限
chown mysql:mysql sys_menu.ibd
4.然后执行
alter table sys_menu import tablespace;
将表与当前idb文件建立联系。成功就ok了。可以看到表里已经有数据了

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)