记mysql数据库恢复的一次过程

背景:

班上忙着干活呢,任务都着急~~~

突然听见年轻同事轻声喊我:xx,我不小心执行了rm /命令;我听到这句话,脑袋都没反应过来,还能有这神操作......

没办法,开搞吧(数据无价呀)

幸亏同事保留了现场,没有关闭唯一一个可远程的窗口(后面唯一拯救的希望,所以任何时候不要破坏第一现场)。

查看现场环境:

1.ll /查看系统文件目录,发现少了/etc文件夹,其他不清楚;

2.网内其他电脑能ping通,但是不能使用ssh进行远程(也就意味着不能使用scp),进行远程时提示:kex_exchange_identification: read: Connection reset;

3.使用显示器直连服务器后,登录界面无任何反应;

第一步:备份数据库和软件系统配置;

第二步:还原数据库;

备份文件操作(如果没有这一步,也就没有后面的):

找U盘,通过可远程的命令窗口,将U盘挂载到服务器上,备份/var/lib/mysql/数据库文件到U盘上。(U盘记得要fat32格式的。挂载步骤是

        1.查看U盘fdisk -l;

        2.建文件夹mkdir /mnt/usb;

        3.挂载mount /mnt/usb/ /dev/sdd1。)

恢复数据库(挺坎坷的(哭一下),毕竟之前我也没有接触过mysql)

(特别感谢分部同事,无意间两句话解开我困惑的思维:mysql有不同的数据库驱动类型)

备份出来的数据库文件中有两类文件:.ibd和.myi  .myd

.ibd的数据库驱动类型是InnoDB的;

.myi  .myd的数据库驱动类型是MyISAM的;

针对不同驱动要有不同的恢复操作。(幸亏只有两种......哈哈哈)

首先,在别的服务器上重新安装mysql数据库;(安装过程很简单不重复)

然后,将数据库备份文件拷贝到/var/lib/mysql下;(拷贝完成后,记得更改文件的用户和用户组哦)

恢复.ibd对应的表:

1.将xxx.ibd备份为xxx1.ibd;

2.使用dbeaver工具连接数据库;

3.执行创建表名xxx的脚本;(研发人员手里肯定有,要过来)

4.在SQL查询里执行:ALTER TABLE 表名xxx DISCARD TABLESPACE;

5.将xxx1.ibd改回xxx.ibd;

6.在SQL查询里执行:ALTER TABLE 表名xxx IMPORT TABLESPACE;

OK,数据就恢复了,在查询工具中就能显示数据啦~~~
每一个.ibd对应一个表名,有多少个.ibd对应多少个表,每个表按照上面步骤进行恢复即可。

恢复.myi  .myd对应的表:

1.将xxx.frm、xxx.myi、xxx.myd备份为xxx1.frm、xxx1.myi、xxx1.myd;

2.使用dbeaver工具连接数据库;

3.执行创建表名xxx的脚本;

4.手动删除新生成的xxx.frm、xxx.myi、xxx.myd;

5.将xxx1.frm、xxx1.myi、xxx1.myd备份为xxx.frm、xxx.myi、xxx.myd;

OK,数据就恢复了,在查询工具中就能显示数据啦~~~

每三个文件xxx.frm、xxx.myi、xxx.myd(

  • .frm 表结构文件
  • .myd 表数据文件
  • .myi 表索引文件

)对应一个表名xxx,每个表按照上面步骤进行恢复即可。

野路子,文中有不妥之处,请见谅~~~

欢迎大神指导交流!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值