第16章__数据备份与还原

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第16章数据备份与还原为了保证数据的安全,需要定期对数据进行备份。备份的方式有很多种,效果也不一样。如果数据库中的数据出现了错误,就需要使用备份好的数据进行数据还原。这样可以将损失降低到最小。而且,可能还会涉及到数据库之间的数据导入与导出。在这一章中将讲解的内容包括。•数据备份•数据还原•数据库迁移•导出和导入文本文件16.1数据备份备份数据是数据库管理中最常用的操作。为了保证数据库中数据的安全,数据库管理员需要定期的进行数据库备份。一旦数据库遭到破坏,可以通过备份的文件来还原数据库。因此,数据备份是很重要的工作。本节将为读者介绍数据备份的方法。16.1.1使用mysqldump命令备份mysqldump命令可以将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。本小节将为读者介绍mysqldump命令的工作原理和使用方法。mysqldump命令的工作原理很简单。它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句。然后,将表中的所有记录转换成一条INSERT语句。这些CREATE语句和INSERT语句都是还原时使用的。还原数据时就可以使用其中的CREATE语句来创建表。使用其中的INSERT语句来还原数据。1.备份一个数据库2.备份多个数据库3.备份所有数据库16.1.2直接复制整个数据库目录MySQL有一种最简单的备份办法,就是将MySQL中的数据库文件直接复制出来。这种方法最简单,速度也最快。使用这种方法时,最好将服务器先停止。这样,可以保证在复制期间数据库中的数据不会发生变化。如果在复制数据库的过程中还有数据写入,就会造成数据不一致。这种方法虽然简单快速,但不是最好的备份方法。因为,实际情况可能不允许停止MySQL服务器。而且,这种方法对InnoDB存储引擎的表不适用。对于MyISAM存储引擎的表,这样备份和还原很方便。但是还原时最好是相同版本的MySQL数据库,否则可能会存在文件类型不同的情况。16.1.3使用mysqlhotcopy工具快速备份如果备份时不能停止MySQL服务器,可以采用mysqlhotcopy工具。mysqlhotcopy工具的备份方式比mysqldump命令快。下面为读者介绍mysqlhotcopy工具的工作原理和使用方法。mysqlhotcopy工具是一个Perl脚本,主要在Linux操作系统下使用。mysqlhotcopy工具使用LOCKTABLES、FLUSHTABLES和cp来进行快速备份。其工作原理是:先将需要备份的数据库加上一个读操作锁,然后用FLUSHTABLES将内存中的数据写回到硬盘上的数据库中,最后把需要备份的数据库文件复制到目标目录。使用mysqlhotcopy的命令如下:[root@localhost~]#mysqlhotcopy[option]dbname1dbname2…backupDir/16.2数据还原管理员的非法操作和计算机的故障都会破坏数据库文件。当数据库遭到这些意外时,可以通过备份文件将数据库还原到备份时的状态。这样可以将损失降低到最小。本节将为读者介绍数据还原的方法。16.2.1使用mysql命令还原管理员通常使用mysqldump命令将数据库中的数据备份成一个文本文件。通常这个文件的后缀名是sql。需要还原时,可以使用mysql命令来还原备份的数据。本小节将为读者介绍mysql命令的工作原理和使用方法。备份文件中通常包含CREATE语句和INSERT语句。mysql命令可以执行备份文件中的CREATE语句和INSERT语句。通过CREATE语句来创建数据库和表。通过INSERT语句来插入备份的数据。mysql命令的基本语法如下:mysql-uroot-p[dbname]backup.sql16.2.2直接复制到数据库目录之前介绍过一种直接复制数据的备份方法。通过这种方式备份的数据,可以直接复制到MySQL的数据库目录下。通过这种方式还原时,必须保证两个MySQL数据库的主版本号是相同的。因为只有MySQL数据库主版本号相同时,才能保证这两个MySQL数据库的文件类型是相同。而且,这种方式对MyISAM类型的表比较有效。对于InnoDB类型的表则不可用。因为InnoDB表的表空间不能直接复制。在Windows操作系统下,MySQL的数据库目录通常存放下面三个路径的其中之一。分别是C:\mysql\date、C:\DocumentsandSettings\AllUsers\ApplicationData\MySQL\MySQLServer5.1\data或者C:\ProgramFiles\MySQL\MySQLServer5.1\data。在Linux操作系统下,数据库目录通常在/var/lib/mysql/、/usr/local/mysql/data或者/usr/local/mysql/var这三个目录下。上述位置只是数据库目录最常用的位置。具体位置根据读者安装时设置的位置而定。16.3数据库迁移数据库迁移就是指将数据库从一个系统移动到另一个系统上。数据库迁移的原因是多种多样的。可能是因为升级了计算机,或者是部署开发的管理系统,或者升级了MySQL数据库。甚至是换用其他的数据库。根据上述情况,可以将数据迁移大致分为三类。这三类分别是在相同版本的MySQL数据库之间迁移、迁移到其他版本的MySQL数据库中和迁移到其他类型的数据库中。本节将为读者介绍数据库迁移的方法。16.3.1相同版本的MySQL数据库之间的迁移相同版本的MySQL数据库之间的迁移就是在主版本号相同的MySQL数据库之间进行数据库移动。这种迁移的方式最容易实现。本小节将为读者介绍这方面的内容。相同版本的MySQL数据库之间进行数据库迁移的原因很多。通常的原因是换了新的机器,或者是装了新的操作系统。还有一种常见的原因就是将开发的管理系统部署到工作机器上。因为迁移前后MySQL数据库的主版本号相同,所以可以通过复制数据库目录来实现数据库迁移。但是,只有数据库表都是MyISAM类型的才能使用这种方式。16.3.2不同版本的MySQL数据库之间的迁移不同版本的MySQL数据库之间进行数据迁移通常是MySQL升级的原因。例如,原来很多服务器使用4.0版本的MySQL数据库。5.0的版本推出以后,改进了4.0版本的很多缺陷。因此需要将MySQL数据库升级到5.0版本。这样就需要进行不同版本的MySQL数据库之间进行数据迁移。高版本的MySQL数据库通常都会兼容低版本,因此可以从低版本的MySQL数据库迁移到高版本的MySQL数据库。对于MySIAM类型的表可以直接复制,也可以使用mysqlhotcopy工具。但是InnoDB类型的表不可以使用这两种方法。最常用的办法是使用mysqldump命令来进行备份,然后通过mysql命令将备份文件还原到目标MySQL数据库中。但是,高版本的MySQL数据库很难迁移到低版本的MySQL数据库。因为高版本的MySQL数据库可能有一些新的特性,这些新特性是低版本MySQL数据库所不具有的。数据库迁移时要特别小心,最好使用mysqldump命令来进行备份,避免迁移时造成数据丢失。16.3.3不同数据库之间迁移不同数据库之间迁移是指从其他类型的数据库迁移到MySQL数据库,或者从MySQL数据库迁移到其他类型的数据库。例如,某个网站原来使用Oracle数据库。因为运营成本太高等诸多原因,希望改用MySQL数据库。或者,某个管理系统原来使用MySQL数据库,因为某种特殊性能的要求,希望改用Oracle数据库。这样的不同数据库之间的迁移也经常会发生。但是这种迁移没有普通适用的解决办法。MySQL以外的数据库也有类似mysqldump这样的备份工具,可以将数据库中的文件备份成sql文件或普通文本。但是,因为不同数据库厂商没有完全按照SQL标准来设计数据库。这就造成了不同数据库使用的SQL语句的差异。例如,微软的SQLServer软件使用的是T-SQL语言。T-SQL中包含了非标准的SQL语句。这就造成了SQLServer和MySQL的SQL语句不能兼容。16.4表的导出和导入MySQL数据库中的表可以导出成文本文件、XML文件或者HTML文件。相应的文本文件也可以导入MySQL数据库中。在数据库的日常维护中,经常需要进行表的导出和导入的操作。本小节将为读者介绍导出和导入文本文件的方法。16.4.1用SELECT…INTOOUTFILE导出文本文件MySQL中,可以使用SELECT…INTOOUTFILE语句将表的内容导出成一个文本文件。其基本语法形式如下:SELECT[列名]FROMtable[WHERE语句]INTOOUTFILE'目标文件'[OPTION];16.4.2用mysqldump命令导出文本文件mysqldump命令可以备份数据库中的数据。但是,备份时是在备份文件中保存了CREATE语句和INSERT语句。不仅如此,mysqldump命令还可以导出文本文件。其基本的语法形式如下:mysqldump-uroot-pPassword-T目标目录dbnametable[option];16.4.3用mysql命令导出文本文件mysql命令可以用来登录MySQL服务器,也可以用来还原备份文件。同时,mysql命令也可以导出文本文件。其基本语法形式如下:mysql-uroot-pPassword-eSELECT语句dbnameC:/name.txt;其中,“Password”表示root用户的密码;使用-e选项就可以执行SQL语句;“SELECT语句”用来查询记录;“C:/name.txt”表示导出文件的路径。16.4.4用LOADDATAINFILE方式导入文本文件MySQL中,可以使用LOADDATAINFILE命令将文本文件导入到MySQL数据库中。其基本语法形式如下:LOADDATA[LOCAL]INFILEfileINTOTABLEtable[OPTION];16.4.5用mysqlimport命令导入文本文件MySQL中,可以使用mysqlimport命令将文本文件导入到MySQL数据库中。其基本语法形式如下:mysqlimport-uroot-pPassword[--LOCAL]dbnamefile[OPTION]16.5本章实例本小节将对test数据库中的score表进行备份和还原的操作。score表的结构和记录见10.9小节。本小节要求的操作如下:(1)使用mysqldump命令来备份score表。备份文件存储在D:\backup路径下。(2)使用mysql命令来还原score表。(3)使用SELECT…INTOOUTFILE来导出score表中的记录。记录存储到D:/backup/score.txt中。(4)使用mysqldump命令将score表的记录导出到XML文件中。这个XML文件存储在D:\backup中。16.6上机实践上机实践的要求如下:(1)根据10.10小节的内容在test数据库中创建department表。使用mysqldump命令将department表的记录导出到C:\目录下。(2)删除department表中的所有记录。然后使用LOADDATAINFILE语句将department.txt中的记录加载到department表中。(3)重新删除department表的所有记录,然后使用mysqlimport命令将department.txt中的记录加载到department表中。(4)使用mysql命令将department.txt中的记录导出成HTML文件。16.7常见问题及解答1.如何选择备份数据库的方法?2.如何升级MySQL数据库?16.8小结本章介绍了备份数据库、还原数据库、数据库迁移、导出表和导入表的内容。备份数据库和还原数据库是本章的重点内容。在实际应用中,通常使用mysqldump命令备份数据库,使用mysql命令还原数据库。数据库迁移、导出表和导入表是

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功