天天看点

Mysql学习笔记(十四)备份与恢复

学习内容:

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

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

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

1.备份:

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

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

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

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

注:

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

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

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

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

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

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

2.物理备份...

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

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

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

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

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

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

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

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

还有我们可以在登陆到了数据库以后使用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导入的数据直接通过管道符|,将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语句来进行插入,我们还可以建立一个文本文件,然后将我们建立的文本文件的内容导入到数据库当中就可以了....

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

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

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

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

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

导出:

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

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

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

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

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

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