史上最简单的 MySQL 教程(三十五)「数据备份与还原(上)」

温馨提示:本系列博文已经同步到 GitHub,地址为「mysql-tutorial」,欢迎感兴趣的童鞋StarFork,纠错。

数据备份与还原

基础概念:

  • 备份,将当前已有的数据或记录另存一份;
  • 还原,将数据恢复到备份时的状态。

为什么要进行数据的备份与还原?

  • 防止数据丢失;
  • 保护数据记录。

数据备份与还原的方式有很多种,具体可以分为:数据表备份、单表数据备份、SQL备份和增量备份。

数据表备份

数据表备份,不需要通过 SQL 来备份,我们可以直接进入到数据库文件夹复制对应的表结构以及数据;在需要还原数据的时候,直接将备份(复制)的内容放回去即可。

不过想要进行数据表备份是有前提条件的,因为不同的存储引擎之间是有区别的。

对于存储引擎,MySQL 主要使用两种,分别为:InnoDBMyisam,两者均免费。在这里,咱们可以顺便科普一下存储引擎的知识:

特点

Myisam

InnoDB

BDB

Memory

Archive

批量插入的速度

非常高

事务安全

——

支持

支持

——

——

全文索引

支持

5.5版本支持

——

——

——

锁机制

表锁

行锁

页锁

表锁

行锁

存储限制

没有

64TB

没有

没有

B树索引

支持

支持

支持

支持

——

哈希索引

——

支持

——

支持

——

集群索引

——

支持

——

——

——

数据缓存

——

支持

——

支持

——

索引缓存

支持

支持

——

支持

——

数据可压缩

支持

——

——

——

支持

空间使用

N/A

非常低

内存使用

中等

外键支持

——

支持

——

——

——

其中,Myisam 和 InnoDB 的数据存储方法也有所区别:

  • Myisam:表、数据和索引全部单独分开存储;
  • InnoDB:只有表结构,数据全部存储到ibd文件中。

执行如下 SQL 语句,测试 Myisam 的数据存储方式:

-- 创建 Myisam 表
create table my_myisam(
	id int
)charset utf8 engine = myisam;

-- 显示表结构
show create table my_myisam;

-- 插入数据
insert into my_myisam values(1),(2),(3);

-- 显示数据
select * from my_myisam;
1

如上图所示,我们创建了名为my_myisam,存储引擎为 Myisam 的数据表。为了验证 Myisam 的存储特性,我们可以到data文件夹查看具体的数据存储情况:

2

如上图所示,我们仅仅创建了一个表my_myisam,但是 Myisam 对于会生成三个存储文件,分别为:

  • my_myisam.frm:存储表的结构;
  • my_myisam.MYD:存储表的数据;
  • my_myisam.MYI:存储表的索引。

现在,我们将这三个文件复制到testoo数据库(至于如何找到 MySQL 数据文件的存储位置,可以参考详述查看 MySQL 数据文件存储位置的方法):

3

执行如下 SQL 语句,进行测试:

-- 切换数据库
use testoo;

-- 查看 testoo 数据库中的表
show tables;

-- 查看表 my_myisam
select * from my_myisam;
4

如上图所示,显然我们已经通过复制文件的方式,完成了数据表的备份工作。

在这里,有一点需要我们注意,那就是:我们可以将通过 InnoDB 存储引擎产生的.frm.idb文件复制到另一个数据库,也可以通过show tables命令查看复制过来的表名称,但是却无法获得数据

5

执行如下 SQL 语句,进行测试:

-- 查看 testoo 数据库中的表
show tables;

-- 查看表 my_class
select * from my_class;
6

通过以上测试,显然数据表备份这种备份方式更适用于 Myisam 存储引擎,而且备份的方式也很简单,直接复制 Myisam 存储引擎产生的.frm.MYD.MYI三个存储文件到新的数据库即可。


温馨提示:符号[]括起来的内容,表示可选项;符号+,则表示连接的意思。


———— ☆☆☆ —— 返回 -> 史上最简单的 MySQL 教程 <- 目录 —— ☆☆☆ ————

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏抠抠空间

Django之logging日志

简介 Django使用python自带的logging 作为日志打印工具。简单介绍下logging。 logging 是线程安全的,其主要由4部分组成: Log...

4266
来自专栏运维

zabbix2.4.5迁移到zabbix3.0

http://qicheng0211.blog.51cto.com/3958621/1744603

743
来自专栏北京马哥教育

linux、mysql、nginx、tomcat 环境下压力测试的主要调试参数

一、linux 系统内核参数 /etc/sysctl.conf文件常用参数 net.core.netdev_max_backlog = 32768 #允许送到队...

2867
来自专栏阿炬.NET

SQL Server2000导出数据时包含主键、字段默认值、描述等信息

33711
来自专栏乐沙弥的世界

Linux 下卸载MySQL Enterprise Monitor

    MySQL Enterprise Monitor是专门为MySQL数据库而设计的一款企业级监控,能非常好地与MySQL各方面特性相结合,包括:MySQ...

632
来自专栏数据和云

MySQL 传统复制中常见故障处理和结构优化案例分析

虽然MySQL5.7 的主从复制已经很稳定了,但在备库可读写的情况下,总是会出现部分数据不一致的情况,例如常见的1062、1032和1050错误。下面就介绍下这...

2897
来自专栏乐沙弥的世界

myloader恢复mysql数据库示例

    mydumper是针对mysql数据库备份的一个轻量级第三方的开源工具,备份方式为逻辑备份。它支持多线程,备份速度远高于原生态的mysqldump以及众...

532
来自专栏Linyb极客之路

linux系统下ps -aux和ps -ef命令参数的作用及区别详解

在linux系统中,ps是简单而强大的进程查看命令,而ps -aux和ps -ef是打印出所有进程。其中的参数详解如下:ps -aux是以BSD方式显示a显示所...

803
来自专栏乐沙弥的世界

PXC 5.7 mysqldump: Error 2013

最近在mysqldump时,遭遇mysqldump: Error 2013错误。以为是常见的参数设置有问题,调整之后,也没有任何成效。原来发生了OOM,以下是其...

700
来自专栏性能与架构

如何提高Mysql主从复制的效率?

MySQL的主从复制,实际上就是Master记录自己的执行日志binlog,然后发送给Slave,Slave解析日志并执行,来实现数据复制 对于复制效率,bi...

3347

扫码关注云+社区