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

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

数据备份与还原

基础概念:

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

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

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

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

SQL 备份

SQL 备份,备份的是 SQL 语句。在进行 SQL 备份的时候,系统会对表结构以及数据进行处理,变成相应的 SQL 语句,然后执行备份。在还原的时候,只要执行备份的 SQL 语句即可,此种备份方式主要是针对表结构。

不过,MySQL 并没有提供 SQL 备份的指令,如果我们想要进行 SQL 备份,则需要利用 MySQL 提供的软件mysqldump.exe,而且mysqldump.exe也是一种客户端,因此在操作服务器的时候,必须进行认证。

  • 基本语法mysqldump.exe -hPup + 数据库名字 + [表名1 + [表名2]] > 备份文件目录

其中,-hPup分别表示

  • h:IP 或者localhost
  • P:端口号;
  • u:用户名;
  • p:密码。

由于mysqldump.exe也是客户端,因此想执行上述命令,我们需要先退出 MySQL 客户端,然后在命令行窗口执行如下命令:

mysqldump.exe -uroot -pbin.guo test class > D:/CoderLife/testMySQL/classSQL.sql
1

如上图所示,虽然mysqldump给出了警告(在命令行中输入密码是不安全的),但是我们输入的命令已经成功执行啦!在这里,如果执行上述命令不成功的话,很有可能是我们没有配置环境变量的问题。

2

如上图所示,在testMySQL目录下,已经生产了对表class的 SQL 备份,至于 SQL 备份的内容到底是什么,我们可以打开classSQL.sql文件进行查看:

3

如上图所示,通过 SQL 备份的文件,包含了各种 SQL 语句,如创建表的语句以及插入数据的语句等等。

此外,在上面给出的执行 SQL 备份的基本语法中,我们可以看到表名都用[]括了起来,这表示可选项,如果不输入表名,则默认备份整个数据库。执行过程和上面一样,因此我们就不予演示啦!

接下来,我们演示通过 SQL 备份的文件还原数据,有两种方式:

  • 方式 1:使用mysql.exe客户端还原数据
  • 基本语法mysql.exe/mysql -hPup 数据库名称 + 数据库名字 + [表名1 + [表名2]] < 备份文件目录

在命令行窗口执行如下命令,进行测试:

-- 登录 MySQL 客户端
mysql -uroot -p

-- 输入密码,切换数据库
use test;

-- 删除表 class 中的数据
delete from class;

-- 退出数据库
\q

-- 通过 SQL 备份的文件还原数据
mysql -uroot -pbin.guo test < D:/CoderLife/testMySQL/classSQL.sql
4

如上图所示,上述命令全部执行成功。下面,我们检查还原结果,

5

如上图所示,显然表class的数据在删除之后,我们通过 SQL 备份的文件还原了数据。

  • 方式 2:使用 SQL 命令还原数据
  • 基本语法source + 备份文件目录;

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

-- 查看表 class 数据
select * from class;

-- 删除表 class 数据
delete from class;

-- 查看表 class 数据
select * from class;

-- 通过 SQL 备份的文件还原数据
source D:/CoderLife/testMySQL/classSQL.sql;

-- 查看表 class 数据
select * from class;
6
7

如上图所示,显然表class的数据在删除之后,我们通过 SQL 备份的文件利用第二种方式还原了数据。

通过上面的学习及测试,我们可以知道 SQL 备份的优缺点:

  • 优点:可以备份表结构;
  • 缺点:增加额外的 SQL 命令,会浪费磁盘空间。

增量备份

增量备份,不是针对数据或者 SQL 进行备份,而是针对 MySQL 服务器的日志进行备份,其日志内容包括了我们对数据库的各种操作的历史记录,如增删改查等。此外,增量备份是指定时间段进行备份,因此备份的数据一般不会出现重复的情况,常用于大型项目的数据备份。在此,我们就不详细的进行介绍了,至于这部分的内容,以后会单独写一篇关于如何进行增量备份的博文。


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


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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程

SQLplus命令

Oracle的sqlplus是与oracle数据库进行交互的客户端工具,借助sqlplus可以查看、修改数据库记录。在sqlplus中,可以运行sqlplus命...

2026
来自专栏DT乱“码”

linux下操作 mysql的基本命令

1, 创建mysqld数据库的管理用户: 要把root用户设置为管理员,我们应该运行下面的命令;     [root@linuxsir01 root]# mys...

2406
来自专栏LanceToBigData

MySQL(十)之视图

前言 前面给大家介绍了查询语句,感觉写的还不错的,喜欢的可以去查看。今天给大家分享的是MySQL中的视图。 视图(View):视图是由查询结果形成一张虚拟的表。...

29910
来自专栏Java技术分享

MYSQL定位慢查询

在web开发中,我们经常会写出一些SQL语句,一条糟糕的SQL语句可能让你的整个程序都非常慢,超过10秒一般用户就会选择关闭网页。

55315
来自专栏性能与架构

[安全] mysqldump 备份的后门

1. 简介 mysqldump 是备份 MySQL 数据库的常用工具,其中会包含 创建表、删除表、插入数据 这些数据库操作的语句 而黑客可能会利用 mysqld...

3318
来自专栏WindCoder

MySQL事务与存储引擎-数据库事务单元测试

这是微专业参加单元测试后的试题及答案整理,分享出来,供大家参考,所有标红的为答案。

1401
来自专栏FreeBuf

如何使用基于整数的手动SQL注入技术

今天,我将教大家如何使用基于整型的手动SQL注入技术来对MySQL数据库进行渗透测试。提醒一下,这是一篇写给newbee的文章。话不多说,我们直奔主题!

1386
来自专栏深度学习之tensorflow实战篇

MYSQL数据导出与导入,secure_file_priv参数设置

MySQL 报错 [Code: 1290, SQL State: HY000] The MySQL server is running with the –...

5165
来自专栏乐沙弥的世界

MySQL 数据库简单操作

    对于想要从事或爱好mysql相关工作的童鞋们,有必要掌握在命令行下对mysql实现一些简单的操作。本文从描述了如何登录到mysql数据库服务器,如何在m...

852
来自专栏阮一峰的网络日志

PostgreSQL新手入门

自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源关系型数据库的首选。 本文介绍PostgreSQL的安装和基本用法,供初次使用者上手。以下...

3884

扫码关注云+社区