阿里巴巴大数据之路_阿里云王坚简介

阿里巴巴大数据之路_阿里云王坚简介欢迎点击右上角+关注,反正动动手指也不会怀孕,更重要是希望能在工作中帮助到您。从一个python,d

欢迎点击右上角 +关注,反正动动手指也不会怀孕,更重要是希望能在工作中帮助到您。

前言

[代码笔记]为一系列的文章,从一个python ,django 完整项目的环境和工具讲起,随时供自己备查,进阶全栈工程师的狂暴之路。

开始

阿里云的RDS数据提供了默认的 自动数据库备份功能, 但当面临单表数据误删,或者单表误drop的情况,如果使用物理全备进行恢复呢? 我就遇到这个麻烦问题。

因为这个备份文件的恢复并不是sql的全量备份,而是基于 innodb的文件备份。

下载备份文件

  1. 首先从阿里云下载了 名字类似为 hins1751639_data_20170424063544.tar.gz 的备份文件到本地。

  2. 看到解压缩开的一堆文件如下图所示

tar -xzvf hins1751639_data_20170424063544.tar.gz hint

阿里巴巴大数据之路_阿里云王坚简介

备份文件解压

其中 wonderland 目录下是当前的数据库里数据文件

我要用到的是web_store表, 对应的文件为 web_store.ibd 和 web_store.frm

找回表结构

表结构没丢的话直接跳过本节 ,看下一步

1 进入mysql ,创建一个新的临时数据库

CREATE DATABASE sstest DEFAULT CHARACTER SET utf8;

2 创建一个表结构,和要恢复的表名是一样的。表里的字段无所谓,一定要是innodb引擎的

CREATE TABLE web_store (

id int(11) NOT NULL AUTO_INCREMENT,

name varchar(128) NOT NULL,

) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8;

3 关闭mysql

mysql.service stop

4 用需要恢复的 web_store.frm 覆盖新建的frm文件, 我在mac本地的数据文件路径在 /usr/local/mysql/data/sstest/

cp web_store.frm /usr/local/mysql/data/sstest/web_store.frm

5 参考资料说要 修改my.ini 里 innodb_force_recovery=1 , 如果不成修改为 2,3,4,5,6。 ,我在本地没有这个文件,跳过了这一步

6 启动mysql

mysql.service start

show create table web_store

看到表结构

找回数据

1 进入mysql ,创建一个新的临时数据库

2 废掉表空间, 使当前的ibd和frm分离

alter table web_store discard tablespace;

3 把之前要恢复的.ibd文件复制到新的表结构文件下,使当前的ibd 和frm发生关系

alter table web_store import tablespace;

这里没错误的话就已经建立好了。

4 把所有数据导出后,在新的数据库导入

参考命令

1 导出一个表,包括表结构和数据

mysqldump -u用户名 -p 密码 数据库名 表名> 导出的文件名

mysqldump -uroot -p test web_store> web_store.sql

2 在mysql 里导入 sql语句

source ~/web_store.sql

3 改变文件拥有者和群组权限,mysql有可能因为权限问题读去不了 对应的frm和 ibd文件

sudo chown _mysql:wheel web_store.frm

个人警醒

在做任何的数据库sql导入之前,务必先导出备份一下, 会有各种意想不到的麻烦逼你找回原有数据的,即使有方法解决也会非常被动

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4221.html

(0)
上一篇 2023-10-24
下一篇 2023-04-01

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注