Mysql恢复数据

1.背景

由于某开发人员维护线上数据库,不小心执行了删除操作,将sys_menu,sys_role,sys_user,业务数据表数据全部删除。

下面开始恢复

2.找到data目录下的文件

数据库因为使用的InnoDB存储引擎,该项目下只有frm和ibd文件,frm文件存储数据结构,idb存储数据。

如果使用MyISAM存储引擎,则有三个文件 ①frm文件存储表定义;②.MYD(MYData)文件是存储数据的文件;③.MYI(MYIndex)是索引文件

3.数据结构

如果不知道数据表的结构,需要还原表结构才能进行数据恢复

下载 MySQL Utilities MySQL :: Download MySQL Utilities (Archived Versions)

进入.frm目录中执行获取表结构命令

mysqlfrm --diagnostic ./table.frm

执行完mysqlfrm命令之后

以其中sys_user示例

CREATE TABLE `sys_user`  (
  `id` bigint(20) UNSIGNED NOT NULL,
  `org_id` bigint(20) NULL DEFAULT NULL COMMENT '所属机构',
  `role_id` bigint(20) NULL DEFAULT NULL COMMENT '角色ID',
  `type` tinyint(1) NOT NULL DEFAULT 0 COMMENT '用户类型:1管理员0操作员',
  `login_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户账号(登录账户)',
  `login_pwd` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `username` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `email` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '电子邮箱',
  `mobile` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手机',
  `skin_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '登录界面样式',
  `menu_style` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单栏样式',
  `last_login_time` bigint(20) NULL DEFAULT 0 COMMENT '最后登录时间',
  `status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态:\n            0:停用\n            1:启用',
  `creator` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建人',
  `creator_type` int(11) NULL DEFAULT 0,
  `modifier` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '修改人',
  `remark` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '备注(描述等)',
  `created_time` bigint(20) NOT NULL DEFAULT 0 COMMENT '记录创建时间,存储格式为整型时间戳',
  `modified_time` bigint(20) NOT NULL DEFAULT 0 COMMENT '记录最后一次修改时间,存储格式为整型时间戳',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统用户,抽象意义的用户' ROW_FORMAT = COMPACT;

SET FOREIGN_KEY_CHECKS = 1;

如果拥有表结构,可不进行上面步骤。

4.修改数据库配置

数据库配置文件通常是my.cnf或者是my.ini

innodb_file_per_table=1###保证每个表拥有独立的idb文件

wait_timeout=600 #数据量大,配置时间可以更长

5.创建表

根据第三个步骤产生的sql创建新表,如果已经有表,可以略过

6.恢复数据

在新库里面恢复:

需要先将表的idb文件释放

alter table  table_name  DISCARD TABLESPACE;

释放完成后,需要将恢复的idb文件和frm文件拷贝到mysql的data目录下

执行恢复操作

alter table table_name IMPORT TABLESPACE;

在原库中恢复:

直接执行恢复操作:

alter table table_name IMPORT TABLESPACE;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值