mysql 灾难型恢复

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

http://www.admin5.com/article/20140523/546473.shtml



如果.MYD文件丢失或者误删除,有没有备份,也没有二进制日志,还没有备库,那怎么办呐?



案例:灾难恢复

在没有备份,没有日志,没有备库,数据文件还被删除的情况下恢复数据


恢复思路


在系统中删除文件并非真正在存储中抹去数据,而是仅仅是标示对应的block块可以被重新分配,因此,数据还是在的,只是正常方式读取不到

因此,假如可以通过非正常方式读到这些数据,在重重新保存文件,那么数据就还原回来了、



mysql 配置

为了模拟一次数据误删除,并且使用ext3grep恢复数据,需要以下环境准备

1,创建一个单独的分区。

2,将MSYQL数据拷贝到该分区中

3,将新的分区挂载到mysql数据文件目录


原因?ext3grep 无法操作一挂载的分区,因此mysql的数据应该存在一个独立分区上,这样方便挂载和卸载



使用ext3grep 查看文件系统:


ext3grep  可以帮助我们通过文件系统读取底层数据。

--ls --inode 可以查看指定文件或目录的信息

ext3grep /dev/sdb1  --ls --inode 2


使用ext3grep 恢复文件

使用--restore-inode的参数组合,我们可以恢复指定的文件

ext3grep /dev/sdb1  --restore-inode 12354


 本文所用到的工具链接:


1.ext3grep:https://code.google.com/p/ext3grep/

 ext3grep依赖e2fsprogs-devel和e2fsprogs-lib包,因此需要先安装他们才能编译ext3grep

tar  xvf  ext3grep-0.10.2.tar.gz -C /home

cd xt3grep-0.10.2

./configure

make 

mkae install.


如果是ext4文件系统,使用下面的工具即可使用方法和ext3一样的

extundelete /dev/sdb1 --inde 2

extundelete /dev/sdb1 --restore-inode 57146

extundelete 


模拟案例如下:


>drop table t2;

/etc/init.d/mysqld stop

mount  查看mysql数据在那个分区

ll -id  /usr/local/mysql 查看mysql的inode

2 drwxr-xr-x 3 root root 4096 Jan 14 16:52 mysql

umount /  /var/lib/mysql

ext3grep /dev/sdb1  --ls --inode 2

ext3grep /dev/sdb1  --ls --inode 48961(db1 具体某一库的inode)

接下来根据iNode 恢复到一个空目录

cd /root/test

ext3grep  /dev/sdb1 --restore-inode  48961

mv test/RESTORE-FILEs/inode.48691  test/RESTORE-FILEs/t2.MYD

mv test/RESTORE-FILEs/inode.48692  test/RESTORE-FILEs/t2.MYI

mv test/RESTORE-FILEs/inode.48693 test/RESTORE-FILEs/t2.frm

mount /dev/sdb2  /var/lib/mysql

cp t2.*  /usr/local/mysql/data/db1

chow -R mysql.mysql . * (pwd =/var/lib/mysql/db1)

/etc/mysqld start

最后在查看数据是不是完整、








      本文转自crazy_charles 51CTO博客,原文链接:http://blog.51cto.com/douya/1604049,如需转载请自行联系原作者


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
SQL 运维 关系型数据库
使用Binlog日志恢复误删的MySQL数据
今天文章的主题是如何使用Mysql内置的Binlog日志对误删的数据进行恢复,读完本文,你能够了解到: MySQL的binlog日志是什么?通常是用来干什么的? 模拟一次误删数据的操作,并且使用binlog日志恢复误删的数据。
867 1
|
存储 关系型数据库 MySQL
MySQL数据库系列(七)-------日志管理、备份与恢复
MySQL 的日志默认保存位置为/usr/local/mysql/data MySQL 的日志配置文件为 /etc/my.cnf,里面有个[mysqld]项。
178 0
MySQL数据库系列(七)-------日志管理、备份与恢复
|
存储 SQL 运维
大数据运维之MySQL备份及恢复
能够防止由于机械故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方。 冗余: 数据有多份冗余,但不等备份,只能防止机械故障还来的数据丢失,例如主备模式、数据库集群。
278 0
大数据运维之MySQL备份及恢复
|
存储 SQL 安全
Mysql数据库的备份与恢复
Mysql数据库的备份与恢复
117 0
Mysql数据库的备份与恢复
|
关系型数据库 MySQL 数据库
MySQL数据库的备份与恢复(下)
一、数据备份的重要性 备份的主要目的是灾难恢复。 在生产环境中,数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。
150 0
|
安全 关系型数据库 MySQL
MySQL数据库的备份与恢复(中)
一、数据备份的重要性 备份的主要目的是灾难恢复。 在生产环境中,数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。
202 0
|
SQL 关系型数据库 MySQL
MySQL数据库的备份与恢复(上)
一、数据备份的重要性 备份的主要目的是灾难恢复。 在生产环境中,数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。
247 0
|
SQL 运维 关系型数据库
只有MYSQL数据目录如何挂载恢复
在使用云服务器的很多场景下,如遇一些linux系统级别问题,比如系统文件丢失,kernel panic等,无法正常在已有的主机系统上恢复系统启动,且也无之前系统正常时间创建的系统盘快照,需要通过初始化系统盘来恢复系统。 但是这样操作后系统可以恢复登录,但原有的系统盘内搭建的服务比如mysql等服务需要重新搭建,那么重新搭建的mysql如何指认原有的数据库目录,如何进行导出数据,本文将详细说明下操作恢复方法。
只有MYSQL数据目录如何挂载恢复
|
SQL 运维 关系型数据库
MySQL误删恢复方法2
实际工作中总会发生数据误删除的场景,在没有备份情况下,如何快速恢复误删数据就显得非常重要。 本文基于MySQL的binlog日志机制,当日志格式设置为“binlog_format=ROW”时,记录一步一步手动解析binlog、恢复误删数据的全过程,供大家参考使用。
141 0
|
SQL Oracle 关系型数据库
MySQL误删恢复方法1
MySQL不同于oracle,没有闪回查询这类概念,但网上流传几个闪回的开源工具如 binglog2sql、MyFlash,可以使用binglog日志进行误操作数据的恢复。
133 0