史上最简单的 MySQL 教程(三十七)
来源:互联网 发布:python cnn 代码下载 编辑:程序博客网 时间:2024/04/26 06:41
数据备份与还原
基础概念:
备份,将当前已有的数据或记录另存一份;
还原,将数据恢复到备份时的状态。
为什么要进行数据的备份与还原?
- 防止数据丢失;
- 保护数据记录。
数据备份与还原的方式有很多种,具体可以分为:数据表备份、单表数据备份、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 客户端,然后在命令行窗口执行如下命令:
- 1
如上图所示,虽然mysqldump
给出了警告(在命令行中输入密码是不安全的),但是我们输入的命令已经成功执行啦!在这里,如果执行上述命令不成功的话,很有可能是我们没有配置环境变量的问题。
如上图所示,在testMySQL
目录下,已经生产了对表class
的 SQL 备份,至于 SQL 备份的内容到底是什么,我们可以打开classSQL.sql
文件进行查看:
如上图所示,通过 SQL 备份的文件,包含了各种 SQL 语句,如创建表的语句以及插入数据的语句等等。
此外,在上面给出的执行 SQL 备份的基本语法中,我们可以看到表名都用[]
括了起来,这表示可选项,如果不输入表名,则默认备份整个数据库。执行过程和上面一样,因此我们就不予演示啦!
接下来,我们演示通过 SQL 备份的文件还原数据,有两种方式:
- 方式 1:使用
mysql.exe
客户端还原数据- 基本语法
mysql.exe/mysql -hPup 数据库名称 + 数据库名字 + [表名1 + [表名2]] < 备份文件目录
- 基本语法
在命令行窗口执行如下命令,进行测试:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
如上图所示,上述命令全部执行成功。下面,我们检查还原结果,
如上图所示,显然表class
的数据在删除之后,我们通过 SQL 备份的文件还原了数据。
- 方式 2:使用 SQL 命令还原数据
- 基本语法
source + 备份文件目录;
- 基本语法
执行如上 SQL 语句,进行测试:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
如上图所示,显然表class
的数据在删除之后,我们通过 SQL 备份的文件利用第二种方式还原了数据。
通过上面的学习及测试,我们可以知道 SQL 备份的优缺点:
- 优点:可以备份表结构;
- 缺点:增加额外的 SQL 命令,会浪费磁盘空间。
增量备份
增量备份,不是针对数据或者 SQL 进行备份,而是针对 MySQL 服务器的日志进行备份,其日志内容包括了我们对数据库的各种操作的历史记录,如增删改查等。此外,增量备份是指定时间段进行备份,因此备份的数据一般不会出现重复的情况,常用于大型项目的数据备份。在此,我们就不详细的进行介绍了,至于这部分的内容,以后会单独写一篇关于如何进行增量备份的博文。
- 史上最简单的 MySQL 教程(三十七)
- 史上最简单的 MySQL 教程(三十七)「数据备份与还原(下)」
- 史上最简单的 MySQL 教程
- 史上最简单的 MySQL 教程
- 史上最简单的MySQL教程
- 史上最简单的 MySQL 教程(一)「数据库」
- 史上最简单的 MySQL 教程(十七)「索引」
- 史上最简单的 MySQL 教程(十八)「关系」
- 史上最简单的 MySQL 教程(十九)「范式」
- 史上最简单的 MySQL 教程(十八)「关系」
- 史上最简单的 MySQL 教程(十九)「范式」
- 史上最简单的 MySQL 教程(三)「 MySQL 数据库」
- 史上最简单的 MySQL 教程(二十六)「连接查询(上)」
- 史上最简单的 MySQL 教程(二十七)「连接查询(下)」
- 史上最简单的 MySQL 教程(二十八)「外键(上)」
- 史上最简单的 MySQL 教程(二十九)「外键(下)」
- 史上最简单的 MySQL 教程(二十六)「连接查询(上)」
- 史上最简单的 MySQL 教程(二十七)「连接查询(下)」
- 创建Library 并 引用
- 【vue+axios】一个项目学会前端实现登录拦截
- 实用!Bootstrap4(纯手工翻译)一次重大更新几乎涉及每行代码
- Scanner答疑
- NYOJ23 取石子(一)(详解巴什博奕)
- 史上最简单的 MySQL 教程(三十七)
- iOS开发-关于Super的题目
- 搭建 Elastic Stack 日志系统
- SparkStreaming的log4j日志记录
- 详述 MySQL 导出数据遇到 secure-file-priv 的问题
- MATLAB绘图属性操作--学会使用句柄
- 常见字符串操作函数封装
- MergeTwoBinaryTrees
- linux下mysql开启远程访问权限及防火墙开放3306端口