设为首页 加入收藏

TOP

MySQL优化之――备份和恢复(九)
2015-11-21 01:47:11 来源: 作者: 【 】 浏览:3
Tags:MySQL 优化 备份 恢复
-v 冗长模式。打印出程序操作的详细信息。 · --version,-V 显示版本信息并退出。

?

提示:

LOAD DATA INFILE语句中有一个mysqlimport工具中没有特点:

LOAD DATA INFILE 可以按指定的字段把文件导入到数据库中。

当我们要把数据的一部分内容导入的时候,这个特点就很重要。

比方说,我们要从Access数据库升级到MySQL数据库的时候,需要加入一些字段(列/字 段/field)到MySQL数据库中,以适应一些额外的需要。

这个时候,我们的Access数据库中的数据仍然是可用的,但是因为这些数据的字段(field)与MySQL中的不再匹配,因此而无法再使用mysqlimport工具。

尽管如此,我们仍然可以使用LOAD DATA INFILE,下面的例子显示了如何向指定的字段(field)中导入数据:

?

LOAD DATA INFILE "/home/Order.txt" INTO TABLE Orders(Order_Number, Order_Date, Customer_ID); 

?

如您所见,我们可以指定需要的字段(fields)。这些指定的字段依然是以括号括起,由逗号分隔的,如果您遗漏了其中任何一个,MySQL将会提醒您^_^


如何选择备份工具?

直接复制数据文件是最为直接、快速的备份方法,但缺点是基本上不能实现增量备份。

备份时必须确保没有使用这些表。如果在复制一个表的物理数据文件的同时服务器正在修改他,则复制无效。

备份文件时,最好关闭服务器,然后重新启动服务器,为了保证数据的一致性,需要在备份文件前执行以下SQL

?

FLUSH TABLES WITH READ LOCK;

?

也就是把内存中的数据刷新到磁盘中,同时锁定数据表,以保证复制过程中不会有新的数据写入。

这种方法备份出来的数据恢复很简单,直接复制回原来的数据库目录下即可

mysqlhotcopy是一个PERL程序,他使用LOCK TABLES、FLUSH TABLES和CP或SCP来快速备份数据库

他是备份数据库或单个表的最快的途径,但他只能运行在数据库文件所在机器上,并且mysqlhotcopy只能用于备份myisam表

mysqlhotcopy适合于小型数据库的备份,数据量不大,可以使用mysqlhotcopy程序每天进行一次完全备份

mysqldump将数据表导出为SQL脚本,在不同的MYSQL版本之间升级时相对比较合适,这也是最常用的备份方法。

mysqldump比直接复制要慢些。


使用mysqldump备份整个数据库成功,把表和数据库删除了,但使用备份文件却不能恢复数据库?

出现这种情况是因为备份的时候没有指定--databases参数。默认情况下,如果只指定数据库名称,mysqldump

备份的是数据库中的所有表,而不包括数据库的创建语句,如下

?

mysqldump -u root -p booksdb >c:\booksdb_2014-7-1.sql

?

该语句只备份了booksdb数据库下的所有表,读者打开该文件,可以看到文件中不包含创建booksdb数据库

的CREATE DATABASE语句,因此如果把booksdb也删除了,使用该sql文件不能还原以前的表,

还原时会出现ERROR 1046(3D000):NO DATABASE SELECTED 的错误信息

而下面的语句,数据库删除之后,可以正常还原备份时的状态

?

mysqldump -u root -p --databases booksdb>C:\booksdb_db_2014-7-1.sql

?

该语句不仅备份了所有数据库下的表结构,而且包括创建数据库的语句


总结

这一节介绍了MYSQL中的备份和还原,还有数据库的迁移,异构数据库之间的迁移基本上都用导出文件文件的方法

如果是小数据量尚可以,如果数据量比较大,导出文本文件也会很大,不是太可取

首页 上一页 6 7 8 9 下一页 尾页 9/9/9
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇MySql5.6Window超详细安装教程 下一篇警惕MySql更新sql的WHERE从句中的..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: