史上最简单的MySQL数据备份与还原教程(下)(三十七)
作者:维C果糖 发布时间:2024-01-25 06:03:33
数据备份与还原第三篇,具体如下
基础概念:
备份,将当前已有的数据或记录另存一份;
还原,将数据恢复到备份时的状态。
为什么要进行数据的备份与还原?
防止数据丢失;
保护数据记录。
数据备份与还原的方式有很多种,具体可以分为:数据表备份、单表数据备份、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
如上图所示,虽然mysqldump给出了警告(在命令行中输入密码是不安全的),但是我们输入的命令已经成功执行啦!在这里,如果执行上述命令不成功的话,很有可能是我们没有配置环境变量的问题。
如上图所示,在testMySQL目录下,已经生产了对表class的 SQL 备份,至于 SQL 备份的内容到底是什么,我们可以打开classSQL.sql文件进行查看:
如上图所示,通过 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
如上图所示,上述命令全部执行成功。下面,我们检查还原结果,
如上图所示,显然表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;
如上图所示,显然表class的数据在删除之后,我们通过 SQL 备份的文件利用第二种方式还原了数据。
通过上面的学习及测试,我们可以知道 SQL 备份的优缺点:
优点:可以备份表结构;缺点:增加额外的 SQL 命令,会浪费磁盘空间。
增量备份
增量备份,不是针对数据或者 SQL 进行备份,而是针对 MySQL 服务器的日志进行备份,其日志内容包括了我们对数据库的各种操作的历史记录,如增删改查等。此外,增量备份是指定时间段进行备份,因此备份的数据一般不会出现重复的情况,常用于大型项目的数据备份。在此,我们就不详细的进行介绍了,至于这部分的内容,以后会单独写一篇关于如何进行增量备份的博文。
温馨提示:符号[]括起来的内容,表示可选项;符号+,则表示连接的意思。
来源:http://blog.csdn.net/qq_35246620/article/details/78150410
猜你喜欢
- 一、判断以下哪些不能作为标识符A、aB、¥aC、_12D、$a@12E、falseF、False答案为:(F、D、B、E)二、输入数,判断这
- 本文实例讲述了PHP中curl_setopt函数用法。分享给大家供大家参考。具体分析如下:curl_setopt函数是php中一个重要的函数
- 1、获取秒级时间戳与毫秒级时间戳、微秒级时间戳import timeimport datetimet = time.time()print
- 01. 装饰器语法糖如果你接触 Python 有一段时间了的话,想必你对 @ 符号一定不陌生了,没错 @ 符号就是装饰器的语法糖。它放在一个
- 前言wx.gird.Gird是实现类似excel表格的库,扩展面很广,本文讲述它添加按钮,按钮响应的内容实现效果图如下:本文基于wxPyth
- asp中使用addnew方法添加一条记录后,我们经常使用取得自递增的ID,而使用bookmark很容易实现这样的功能。rs.open&nbs
- F查询在上面所有的例子中,我们构造的过滤器都只是将字段值与某个我们自己设定的常量做比较。如果我们要对两个字段的值做比较,那该怎么做呢?Dja
- 本文实例讲述了js实现向右横向滑出的二级菜单效果。分享给大家供大家参考。具体如下:这是一个网页上的横向滑出二级菜单,菜单是竖向排列的,但二级
- 从一头雾水到模模糊糊,不明原理,暂时记录一下1.安装Qtcratersudo pacman -S qtcreater2.打开Qtcrater
- 一、前言:当数据库服务器建立好以后,我们首先要做的不是考虑要在这个支持数据库的服务器运行哪些受MySQL提携的程序,而是当数据库遭到破坏后,
- 虽然以前我写过IE6、IE7、IE8共存的解决方案,但是看到IETester这个软件以后那些都已经没有意义了(那些办法副作用比较大,而且实现
- 本文实例讲述了php实现转换html格式为文本格式的方法。分享给大家供大家参考,具体如下:有时候需要转换html格式的字符串为文本,但又需要
- 当“ 页面重构工程师 ”这个职位的面试官也蛮长一段时间了,跟前两年比起来,总的来说来应聘的同学能力在很大程度上有了提高,记得两年前的一场招聘
- 我为一大型网站做了一个论坛,也顺利通过了测试。由于是第一次做这方面的数据库,我不知道比其它网站上数据库差距有多大,是不是够优化。能推荐或介绍
- 在一个网页中,不仅仅只有一个html骨架,还需要css样式文件,js执行文件以及一些图片等。因此在DTL中加载静态文件是一个必须要解决的问题
- 1、引言选择排序里面主要讲了三个排序,分别是简单选择排序、树形选择排序、堆排序。今天这篇文章主要讲树形选择排序,树形选择排序也被称为锦标赛排
- 两年前发表的《The visual design of Web 2.0》中提到“Rounded everything”,圆角因使人感觉舒适的
- 认证登录django.contrib.auth中提供了许多方法,这里主要介绍其中的三个:1 authenticate(**cre
- <?php $url='test.php?1=1'; $contents="fjka;fjsa;#page#
- import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfr