ホームページ > データベース > mysql チュートリアル > 人工误删除InnoDB ibdata数据文件如何恢复?

人工误删除InnoDB ibdata数据文件如何恢复?

WBOY
リリース: 2016-06-07 17:40:34
オリジナル
1066 人が閲覧しました

在日常工作中,因不熟悉InnoDB引擎,在群里看到有很多人误删除了InnoDBibdata(数据文件)和ib_logfile(redolog重做事务日志文件),结果导致了杯具的发生。如

在日常工作中,因不熟悉InnoDB引擎,在群里看到有很多人误删除了InnoDB ibdata(数据文件)和ib_logfile(redo log重做事务日志文件),结果导致了杯具的发生。如果你有做主从复制同步,那还好,如果是单机呢?如何恢复?

下面,香港服务器,请看恢复演示:

一、你可以用sysbench模拟数据的写入,如:

二、rm -f ib*

三、此时我估计你被吓得够呛,脸白手哆嗦,如果你看到这篇文章,心可以稳稳了,没事,可以恢复的。

四、此时,你会发现数据库还可以正常工作,数据照样可以写入,切记,这时千万别把mysqld进程杀死,否则你只有跳楼了,神仙都没法救你。

五、先找到mysqld的进程pid

  • # netstat -ntlp | grep mysqld 
  • tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      30426/mysqld  
  • 我这里是30426

    六、执行关键的一步

    10,11,4,9就是我们要恢复的文件。

    七、你可以把前端业务关闭,或者执行FLUSH TABLES WITH READ LOCK;这一步的作用是让数据库没有写入操作,以便后面的恢复工作。

    八、如何验证没有写入操作呢?分以下几步,美国空间,记住要结合在一起观察。

  • # 让脏页尽快刷入到磁盘里。
  • 九、上面一系列确认工作完成之后,我们就可以恢复了。还记得刚才我们记录的删除文件吗?

    把这些文件拷贝到原来的目录下并修改用户属性即可。

    并修改用户属性

  • #cd /u2/mysql/data/ 
  • #chown mysql:mysql ib* 
  • 十、大功告成,只需要重启MySQL即可。

  • /etc/init.d/mysql restart 
  • 怎样?就这么简单,你也动手试试吧。

     

    本文出自 “贺春旸的技术专栏” 博客,美国服务器,请务必保留此出处

    関連ラベル:
    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    最新の問題
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート