学习内容:

1.数据库的重要数据备份...

2.什么时候需要使用到数据库备份..

3.如何恢复备份的数据..

1.备份:

说到备份,相比大家都不应该陌生,比如说我们平时在为我们的电脑重新做系统的时候,那么我们保存在电脑里的重要文件我们都需要进行备份..或者是当我们在使用一键还原系统的时候,我们也需要进行备份..那么数据库也不例外,我们需要对数据库里面保存的重要数据进行备份..比如说一个大型的企业,那么必然会有自己的一个大型数据库,那么数据库管理员必然会将自己企业的数据库进行备份,一旦数据库的数据丢失,那么管理员可以将数据恢复到当时备份时的状态,以至于企业不会有任何的损失...

i.使用mysqldump进行数据库备份...

mysqldump -u root -h localhost -p samp_db >d:\samp_db_2015.sql
解释一下这个语句:mysqldump关键字..
-u表示user,就是用户....
-h表示host,登陆用户的主机名称
-p表示password,登陆时的密码,这里localhost表示的是我们本机,还可以使用ip地址,比如说127.0.0.1也是可以的...
samp_db表示我们要备份的数据库为samp_db...
>.....表示要保存的位置... -- MySQL dump 10.13 Distrib 5.1.73, for Win64 (unknown) //这一行表示了我们使用mysqldump工具的版本号
--
-- Host: 127.0.0.1 Database: samp_db           //主机信息和数据库备份的名称...
-- ------------------------------------------------------
-- Server version 5.1.73-community            //mysql服务器的版本号 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; //这里表示的是将一些系统变量赋给临时变量..以确保恢复数据的时候恢复系统变量,那么恢复系统变量的语句呢?在最后面...*/;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;    
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
DROP TABLE IF EXISTS `c_count`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `c_count` (       //这里表示的是我建立的表格,包含着表的基本信息....
`id` int(11) NOT NULL,
`num` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `c_count` //这里代表注释部分mysql数据库的注释部分使用 --符号..
--
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;  //这是就是恢复我们保存的系统变量的值....
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; -- Dump completed on 2015-05-11 19:41:23

我这里截取的内容不全,因为我建的数据库表格信息太多..如果全截下来估计得很长...想必大家也没心情看...所以就简单的截了部分内容...

这里面包含着drop,insert,create等语句...我稍微的解释一下上面的含义.....看上表。。。

注:

1./*!.....*/部分表示的是可执行的mysql注释语句,这些语句只能在mysql中执行...在其他类型的数据库将被认定为注释内容,并且不会被执行,这里体现了数据库的可移植性...

2./*!40101...*/这个40101表示的是这段语句在mysql的4.01.01版本或者比这个更高的版本的条件下才能被执行....

ii.mysqldump实现对部分表的备份...

mysqldump -u root -h localhost -p samp_db shop >d:\samp_db_shop_2015.sql;

这个和上面基本差不多,就是在数据库的后面多追加了某个表格...如果是多个表格的话,我们可以使用空格来进行分隔...

iii.mysqldump备份全部或者多个数据库...

mysqldump -u root -h localhost -p --databases samp_db mysql >d:\databases_2015.sql  //备份多个数据库,加 --databases
mysqldump -u root -h localhost -p --all-databases >d:\all_databases_2015.sql; //备份全部的数据库,加 --all-databases

备份的内容也基本和第一个截取的一样...只是能多了一点东西,由于是多个数据库的备份,那么备份的内容将会指明哪一个数据库是samp_db,哪一个是mysql。。。多个数据库之间我们用空格分隔...

2.物理备份...

简单的介绍一下物理备份的内容...

i.直接对数据库的存储目录进行复制...这一般属于一种简答,快速,有效的备份方式。。。但是这种备份方式还是有缺点的..它无法对innodb存储引擎下的数据进行备份...并且还原的时候最好是还原到相同版本,不同版本可能会导致不兼容...

ii.另一种方式是使用mysqlhotcopy进行备份...mysqlhotcopy是在perl脚本下才能够运行的...这个被成为快速备份,并且只能备份myisam存储引擎下的表这个我没有进行过多的研究,所以就不班门弄斧了...

-------------------------------------------------------------------——————————————————————————

2.数据恢复<==>还原

还原就是我们所说的数据恢复,我们之所以要备份数据库,不就是为了当数据库出现问题的时候,我们把备份数据进行还原的吗。。。所以有了备份,那么自然也要有还原...

i.使用mysql语句指令进行还原...

mysql -u user -p [dbname]<filename.sql //基本语法

这个在上面备份数据库的时候,对各个部分都有了一个讲解,所以这里不一个一个部分进行讲解了,只是在恢复的时候变成了 < 号了 .....

mysql -u root -h localhost -p samp_db < d:\samp_db_2015.sql; //还原我们备份的数据库信息....

注意:执行上面这条命令的时候我们必须要把数据库建好,否则会导致错误的发生....

还有我们可以在登陆到了数据库以后使用source语句进行数据库恢复....

mysql> use samp_db;
Database Changed
mysql>source d:\samp_db_2015.sql; //使用source还原数据库里的数据信息

ii.物理还原...

1.第一种就是我们在备份的时候直接对数据库的存储目录进行了复制,那么当还原的时候我们只需要把我们复制的东西重新拷贝到我们的存储目录下就可以直接完成了数据库的还原...

说白了就是假如我们有一个数据库samp_db,里面有一些重要的数据信息,重要的数据信息在存储目录下一定是按文件进行存储的,我们把这些文件直接剪切,放置到一个文件夹中保存。。那么这样做,就代表samp_db数据库里的重要数据丢失了,然后我们把我们那个文件夹里的数据重新拷贝到samp_db文件夹中,这样就代表重要数据还原回来了...

注意:这种方法只能还原在同一版本下的数据库,并且只对myisam存储引擎有效,对innodb存储引擎无效...

2.mysqlhotcopy快速恢复...

这种我也没有进行深入的研究,因此不进行班门弄斧....

注意:如果需要恢复的数据库已经存在,则在使用DROP语句删除已经存在的数据库之后,恢复才能成功。另外mysql不同版本之间必须兼容,恢复之后的数据才可以使用!!

-----------———————————————————————————————————————————————————————

3.数据库迁移.

数据库的迁移:数据库的迁移一般由数据库管理员来搞定...在这里也简单的说一下....

迁移的一般原因:

1、需要安装新的数据库服务器

2、mysql版本更新

3、数据库管理系统变更(从SQLSERVER迁移到mysql)...

i.相同版本的数据库迁移:

相同版本的数据库迁移就是主版本号相同的数据库直接进行数据库移动...常用的方法就是使用mysqldump导出数据,然后在目标数据库使用mysql进行导入

mysqldump -h www.clearlove.com -u root -p database_name |
mysql -h www.nuoyan.com -u root -p

mysqldump导入的数据直接通过管道符|,将www.clearlove.com上的数据库导入到www.nuoyan.com服务器上,database_name为数据库名...如果想导出全部的数据库则使用--all -databases参数...

ii.不同版本的mysql数据库的迁移:

因为数据库升级,需要将旧版本mysql数据库中的数据迁移到新版本数据库中。mysql服务器升级,需要先停止服务,然后卸载旧版本,并安装新版本的mysql.如果想保留旧版本中的用户访问控制信息,则需要备份mysql的mysql库,在新版本mysql安装完成后,重新读入mysql备份文件中的信息,旧版本和新版本的mysql可能使用不同的默认字符集,例如mysql.4.x中大多数使用latin1作为默认字符集,而mysql5.x的默认字符集为utf8。如果数据库中有中文数据,迁移过程中需要对默认字符集进行修改,不然可能无法正常显示结果。。。

新版本对旧版本有一定兼容性。从旧版本的mysql向新版本mysql迁移时,对于myisam引擎的表,可以直接复制数据库文件,

也可以用mysqlhotcopy工具、mysqldump工具。

对于innodb引擎的表一般只能使用mysqldump将数据导出。然后使用mysql命令导入目标服务器。

从新版本向旧版本mysql迁移数据时要小心,最好使用mysqldump命令导出,然后导入目标数据库中。

iii.不同数据库之间的迁移...

这种情况也是经常会有的,比如说将mysql迁移到oracle。。。这种迁移方式我们首先要比较两者之间的差异,不同的数据库在定义数据类型时的形式可能是不同的...比如说mysql中日期字段分为date和time两种,而oracle只有date一种...

-------------------------------------------------------------------------------------------------------------------------

4.导入和导出

导入:

在mysql中,当我们插入数据的时候,我们没必要一条条的输入sql语句来进行插入,我们还可以建立一个文本文件,然后将我们建立的文本文件的内容导入到数据库当中就可以了....

基本语法:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' //这句话表示的是载入 file_name.txt文件, low_priority参数表示的是当没有人访问数据表格时,在进行插入... local表示的是导入本地文件,并且必须要有完整的文件位置....

[REPLACE | IGNORE] //表示参数控制对现有表的唯一键记录重复的处理。就是比如说文件内插入了重复数据,我们应该如何处理.. replace表示使用新的一行去代替....ignore表示直接跳过....

上面这个语句必须要进行指定,否则一旦出现重复就会导致错误的发生,并且后续的数据将不会被导入... INTO TABLE tbl_name
[FIELDS
[TERMINATED BY 'string']      //表示字段之间使用某个指定的字符或者字符串进行分隔
[[OPTIONALLY] ENCLOSED BY 'char']      //表示每个字段使用指定的字符包起来
[ESCAPED BY 'char' ] //表示将默认的转义字符改变为某个指定的字符
]
[LINES
[STARTING BY 'string']     //表示每行开头的字符,可以是一个或者多个
[TERMINATED BY 'string']       //表示每一行结束以某个指定字符结尾,一般都是\r\n...表示每一行结束都换行...
]
[IGNORE number LINES]       //表示忽略开始处的行数,number为忽略数
[(col_name_or_user_var,...)]
[SET col_name = expr,...]]
load data infile 'd:\data.txt' into samp_db.shop;

select * from shop;

将文件导入到smap_db数据库shop表格...

2.使用mysqlimport进行导入...

mysqlimport是一个独立的exe应用程序...和load data infile基本差不多...

基本语法:
mysqlimport -u root -p dbname filename.txt [OPTIONS] --[OPTIONS] 选项
FIELDS TERMINATED BY 'value'
ENCLOSED BY 'value'
ESCAPED BY 'value'
LINES TERMINATED BY 'value'
IGNORE LINES

这个和语法和上面类似,所以不进行解释了。。。。

mysqlimport -u root -p samp_db d:\data.txt;

mysqlimport的功能和load data infile 基本一样,唯一就是没有指定字段的数据导入...下面指定的field字段中插入数据...这个功能mysqlimport是无法实现的....

load  data infile d:\data.txt into table shop(shop_id,shop_name,shop_info);

导出:

有了导入,那么必然就有导出....

i.使用select into ....outfile进行导出...

基本语法:
和导入的基本语法有很多东西类似...就不进行解释了
select columnlist from Table WHERE condition into outfile 'filename' [OPTIONS]
fields terminated by 'VALUE'
fields [OPTIONALLY] ENCLOSED BY 'VALUE'
fields ESCAPED BY 'VALUE'
lines STARTING by 'VALUE'
lines terminated by 'VALUE' select * from samp.shop into outfile d:\shop.txt
FIELDS
TERMINATED BY ','
ENCLOSED BY '\''
ESCAPED BY '\''
LINES
TERMINATED BY '\r\n'; //按照了指定的规格进行数据的导入...

ii.使用mysqldump进行文件的导出...

mysqldump -T path -u root -p dbname [tables][OPTIONS]

--fields-terminated-by=
--fields-enclosed-by=
--fields-optionally-enclosed-by=
--fields-escaped-by=
--lines-terminated-by= mysqldump -T d:\ -u root -h localhost -p samp_db shop; 这样就实现了数据的导出...

iii.我们还可以使用mysql进行数据的导出。。。这个相比mysqldump,导出数据的可读性更强。。。。

mysql -u root -p --execute="SELECT 语句" dbname >filename.txt//基本语法...

mysql -u root -p --execute="SELECT * FROM person;" test>C:\person3.txt//还可以是.html文件或者.xml文件....

------------------------------------------------------------------------------------------------------------------------

截止到这里数据库就告一段落了,把基础的东西总算是学了个差不多了...还有很多东西没有学到。。。等以后在实际开发中在进行知识点的弥补吧...明天开始该进行JDBC的学习了。。。。。

 

Mysql学习笔记(十四)备份与恢复的更多相关文章

  1. MySQL学习笔记十四:优化(1)

    SQL优化 1.查看各种SQL执行的频率 mysql> show status like 'Com_select';--Com_insert,Com_delete,connections(试图连 ...

  2. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

  3. (C/C++学习笔记) 十四. 动态分配

    十四. 动态分配 ● C语言实现动态数组 C语言实现动态数组,克服静态数组大小固定的缺陷 C语言中,数组长度必须在创建数组时指定,并且只能是一个常数,不能是变量.一旦定义了一个数组,系统将为它分配一个 ...

  4. MySQL学习笔记十二:数据备份与恢复

    数据备份 1.物理备份与逻辑备份 物理备份 物理备份就是将数据库的数据文件,配置文件,日志文件等复制一份到其他路径上,这种备份速度一般较快,因为只有I/O操作.进行物理备份时,一般都需要关闭mysql ...

  5. MYSQL进阶学习笔记十四:MySQL 应用程序优化!(视频序号:进阶_32)

    知识点十五:MySQL 的应用程序优化(32) 一.访问数据库采用连接池 把连接当做对象或设备,统一放在‘连接池’里.凡是需要访问数据库的地方都从连接池里取连接 二.采用缓存减少对于MySQL的访问: ...

  6. Mysql学习笔记(四)字符串函数

    PS:终于看完了字符串函数,心都快碎了...涉及的函数真是太多了...感觉这里的字符串函数和JAVA里的基本都差不多了...基本上算是掌握了,但是想全记住那是不太可能的... 学习内容: 字符串函数的 ...

  7. MySQL学习笔记十五:优化(2)

    一.数据库性能评测关键指标 1.IOPS:每秒处理的IO请求次数,这跟磁盘硬件相关,DBA不能左右,但推荐使用SSD. 2.QPS:每秒查询次数,可以使用show status或mysqladmin ...

  8. MySQL学习笔记十六:锁机制

    1.数据库锁就是为了保证数据库数据的一致性在一个共享资源被并发访问时使得数据访问顺序化的机制.MySQL数据库的锁机制比较独特,支持不同的存储引擎使用不同的锁机制. 2.MySQL使用了三种类型的锁机 ...

  9. MySQL学习笔记十:日志管理

    1.错误日志文件 MySQL的错误日志文件记录错误信息,还会记录mysqld进程的关闭和启动的信息,但也不是什么错误信息都会记录,只记录mysqld进程运行过程中发生的关键性错误. 错误日志的启动,可 ...

  10. mysql学习笔记 第四天

    mysql引擎: archive(档案)[数据插入以后不能被修改,只读] blackhole[这种写操作是删除数据,读操作是返回空白记录] CSV[在储存数据时以逗号作为数据项之间的分隔符] exam ...

随机推荐

  1. 了解 JavaScript (6)– 广告条(Banner)

    在 Web 上冲浪时,常常会见到定期在图像之间切换的广告条.我们可以用 JavaScript 来实现,重复循环显示它们. 创建循环的广告条 RotatingBanner.html 页面中在循环的广告条 ...

  2. int android.graphics.Bitmap.getRowBytes()

    int android.graphics.Bitmap.getRowBytes() Return the number of bytes between rows in the bitmap's pi ...

  3. ubuntu 16.04 有道词典

    依赖环境 sudo apt install \ python3-pyqt5 \ python3-requests \ python3-xlib \ python3-pil \ tesseract-oc ...

  4. SAP 系统管理内容

    SAP 系统管理内容包含非常广泛,从底层硬件起到各种操作系统及各种系统软件及SAP软件组件等都会涉及到.SAP系统支持主流的IBM AIX.HP UNIX.Windows.Linux平台及Oracle ...

  5. 《CSS 设计指南》学习笔记 一

    本篇文章是对这几天看完 Charles Wyke-Smit 的 <CSS 设计指南> 后的一些学习笔记与心得,笔者好像是大一的时候开始接触网页设计,由于并不是计算机专业的,所以所有都是自己 ...

  6. 免安装版MySQL安装步骤

    http://downloads.mysql.com/archives/community/ 1:添加环境变量把MySQL解压后的bin目录添加到path环境变量中 2:修改或者添加my-defaul ...

  7. android实现自动升级并安装打开

    http://blog.csdn.net/wa991830558/article/details/41014673 这是一个比较简单的程序,但网上还是有很多人问起这个问题,并且回答的人,也没有完全回答 ...

  8. MYSQL校对规则

    一.前言 有时候遇到这种情况,你用一个like语句查询,查到的结果中有一些并没有包含你查询的关键词的纪录:有时候遇到这种情况,你的数据库自作聪明的大小写不敏感,让你在更新时把大小写不同的两条记录都更新 ...

  9. Flink 案例整合

    1.概述 Flink 1.1.0 版本已经在官方发布了,官方博客于 2016-08-08 更新了 Flink 1.1.0 的变动.在这 Flink 版本的发布,添加了 SQL 语法这一特性.这对于业务 ...

  10. JavaWeb(李兴华著)开发笔记

    1.Java语法-基础 环境变量-JAVA_HOME, PATH, ClassPath 变量名 作用 举例 JAVA_HOME 指向JDK目录 C:\Program Files\Java\jdk1.7 ...