MySQL的备份与恢复数据库备份和恢复的方法课件.ppt
《MySQL的备份与恢复数据库备份和恢复的方法课件.ppt》由会员分享,可在线阅读,更多相关《MySQL的备份与恢复数据库备份和恢复的方法课件.ppt(26页珍藏版)》请在三一办公上搜索。
1、第8章 备份与恢复,8.1 备份和恢复概述,8.2 数据库备份和恢复的方法,8.3 使用二进制日志文件,第8章 备份与恢复8.1 备份和恢复概述8.2 数据库,8.1 备份和恢复概述,8.1.1 备份和恢复需求分析数据库中的数据丢失或被破坏可能是由于以下原因:(1)计算机硬件故障。由于使用不当或产品质量等原因,计算机硬件可能会出现故障,不能使用。如硬盘损坏会使得存储于其上的数据丢失。(2)软件故障。由于软件设计上的失误或用户使用的不当,软件系统可能会误操作数据引起数据破坏。(3)病毒。破坏性病毒会破坏系统软件、硬件和数据。(4)误操作。如用户误使用了诸如DELETE、UPDATE等命令而引起数
2、据丢失或破坏。(5)自然灾害。如火灾、洪水或地震等,它们会造成极大的破坏,会毁坏计算机系统及其数据。(6)盗窃。一些重要数据可能会遭窃。因此,必须制作数据库的复本,即进行数据库备份,在数据库遭到破坏时能够修复数据库,即进行数据库恢复,数据库恢复就是把数据库从错误状态恢复到某一正确状态。备份和恢复数据库也可以用于其他目的,如可以通过备份与恢复将数据库从一个服务器移动或复制到另一个服务器。,8.1 备份和恢复概述8.1.1 备份和恢复需求分析,8.1.2 数据库备份概念,有多种可能会导致数据表的丢失或者服务器的崩溃,一个简单的DROP TABLE或者DROP DATABASE的语句,就会让数据表化
3、为乌有。更危险的是DELETE * FROM table_name,可以轻易地清空数据表,而这样的错误是很容易发生的。因此,拥有能够恢复的数据对于一个数据库系统来说是非常重要的。MySQL有三种保证数据安全的方法。(1)数据库备份:通过导出数据或者表文件的拷贝来保护数据。(2)二进制日志文件:保存更新数据的所有语句。(3)数据库复制:MySQL内部复制功能建立在两个或两个以上服务器之间,通过设定它们之间的主从关系来实现的。其中一个作为主服务器,其他的作为从服务器。本章主要介绍前两种方法。,8.1.2 数据库备份概念有多种可能会导致数据表的丢失或者,8.1.3 数据库恢复概念,数据库恢复就是当数
4、据库出现故障时,将备份的数据库加载到系统,从而使数据库恢复到备份时的正确状态。恢复是与备份相对应的系统维护和管理操作,系统进行恢复操作时,先执行一些系统安全性的检查,包括检查所要恢复的数据库是否存在、数据库是否变化及数据库文件是否兼容等,然后根据所采用的数据库备份类型采取相应的恢复措施。,8.1.3 数据库恢复概念数据库恢复就是当数据库出现故障时,8.2 数据库备份和恢复的方法,8.2.1 使用SQL语句备份和恢复表数据用户可以使用SELECT INTOOUTFILE语句把表数据导出到一个文本文件中,并用LOAD DATA INFILE语句恢复数据。但是这种方法只能导出或导入数据的内容,不包括
5、表的结构,如果表的结构文件损坏,则必须先恢复原来的表的结构。SELECT INTOOUTFILE格式:SELECT * INTO OUTFILE file_name export_options| DUMPFILE file_name 其中,export_options为:FIELDS TERMINATED BY string OPTIONALLY ENCLOSED BY char ESCAPED BY char LINES TERMINATED BY string 说明:这个语句的作用是将表中SELECT语句选中的行写入到一个文件中,file_name是文件的名称。文件默认在服务器主机上创建
6、,并且文件名不能是已经存在的(这可能将原文件覆盖)。如果要将该文件写入到一个特定的位置,则要在文件名前加上具体的路径。在文件中,数据行以一定的形式存放,空值用“N”表示。,8.2 数据库备份和恢复的方法8.2.1 使用SQL语句,8.2.1 使用SQL语句备份和恢复表数据,使用OUTFILE时,可以在export_options中加入以下两个自选的子句,它们的作用是决定数据行在文件中存放的格式: FIELDS子句:在FIELDS子句中有三个亚子句:TERMINATED BY、 OPTIONALLY ENCLOSED BY和ESCAPED BY。如果指定了FIELDS子句,则这三个亚子句中至少要
7、指定一个。(1)TERMINATED BY用来指定字段值之间的符号,例如,“TERMINATED BY ,”指定了逗号作为两个字段值之间的标志。(2)ENCLOSED BY子句用来指定包裹文件中字符值的符号,例如,“ENCLOSED BY ”表示文件中字符值放在双引号之间,若加上关键字OPTIONALLY表示所有的值都放在双引号之间。(3)ESCAPED BY子句用来指定转义字符,例如,“ESCAPED BY *”将“*”指定为转义字符,取代“”,如空格将表示为“*N”。 LINES子句:在LINES子句中使用TERMINATED BY指定一行结束的标志,如“LINES TERMINATED
8、BY ?”表示一行以“?”作为结束标志。如果FIELDS和LINES子句都不指定,则默认声明以下子句:FIELDS TERMINATED BY t ENCLOSED BY ESCAPED BY LINES TERMINATED BY n如果使用DUMPFILE而不是使用OUTFILE,导出的文件里所有的行都彼此紧挨着放置,值和行之间没有任何标记,成了一个长长的值。,8.2.1 使用SQL语句备份和恢复表数据使用OUTFIL,8.2.1 使用SQL语句备份和恢复表数据,LOAD DATA INFILE语句是SELECT INTOOUTFILE语句的补语,该语句可以将一个文件中的数据导入到数据库中
9、。LOAD DATA INFILE格式:LOAD DATA LOW_PRIORITY | CONCURRENT LOCAL INFILE file_name.txt REPLACE | IGNORE INTO TABLE tbl_name FIELDS TERMINATED BY string OPTIONALLY ENCLOSED BY char ESCAPED BY char LINES STARTING BY string TERMINATED BY string IGNORE number LINES (col_name_or_user_var,.) SET col_name = ex
10、pr,.)说明: LOW_PRIORITY | CONCURRENT:若指定LOW_PRIORITY,则延迟语句的执行。若指定CONCURRENT,则当LOAD DATA正在执行的时候,其他线程可以同时使用该表的数据。,8.2.1 使用SQL语句备份和恢复表数据LOAD DAT,8.2.1 使用SQL语句备份和恢复表数据, LOCAL:若指定了LOCAL,则文件会被客户主机上的客户端读取,并被发送到服务器。文件会被给予一个完整的路径名称,以指定确切的位置。如果给定的是一个相对的路径名称,则此名称会被理解为相对于启动客户端时所在的目录。若未指定LOCAL,则文件必须位于服务器主机上,并且被服务器
11、直接读取。与让服务器直接读取文件相比,使用LOCAL速度略慢,这是因为文件的内容必须通过客户端发送到服务器上。 file_name:待载入的文件名,文件中保存了待存入数据库的数据行。输入文件可以手动创建,也可以使用其他的程序创建。载入文件时可以指定文件的绝对路径,如“D:/file/myfile.txt”,则服务器根据该路径搜索文件。若不指定路径,如“myfile.txt”,则服务器在默认数据库的数据库目录中读取。若文件为“./myfile.txt”,则服务器直接在数据目录下读取,即MySQL的data目录。出于安全原因,当读取位于服务器中的文本文件时,文件必须位于数据库目录中,或者是全体可读
12、的。注意:这里使用正斜杠指定Windows路径名称,而不是使用反斜杠。 tb_name:需要导入数据的表名,该表在数据库中必须存在,表结构必须与导入文件的数据行一致。 REPLACE | IGNORE:如果指定了REPLACE,则当文件中出现与原有行相同的唯一关键字值时,输入行会替换原有行。如果指定了IGNORE,则把与原有行有相同的唯一关键字值的输入行跳过。,8.2.1 使用SQL语句备份和恢复表数据 LOCA,8.2.1 使用SQL语句备份和恢复表数据, FIELDS子句:此处的FIELDS子句和SELECT.INTO OUTFILE语句中类似。用于判断字段之间和数据行之间的符号。 LIN
13、ES子句:TERMINATED BY亚子句用来指定一行结束的标志。STARTING BY亚子句则指定一个前缀,导入数据行时,忽略行中的该前缀和前缀之前的内容。如果某行不包括该前缀,则整个行被跳过。例如,文件myfile.txt中有以下内容:xxxrow,1something xxxrow,2导入数据时添加以下子句:STARTING BY xxx最后只得到数据(row,1)和(row,2)。 IGNORE number LINES:这个选项可以用于忽略文件的前几行。例如,可以使用IGNORE 1 LINES来跳过第一行。 col_name_or_user_var:如果需要载入一个表的部分列或文件
14、中字段值顺序与表中列的顺序不同,就必须指定一个列清单,其中可以包含列名或用户变量。如以下语句:LOAD DATA INFILE myfile.txtINTO TABLE myfile (学号,姓名,性别);SET子句:SET子句可以在导入数据时修改表中列的值。,8.2.1 使用SQL语句备份和恢复表数据 FIEL,8.2.1 使用SQL语句备份和恢复表数据,【例8.1】 备份XSCJ数据库中的KC表中数据到D盘FILE目录中,要求字段值如果是字符就用双引号标注,字段值之间用逗号隔开,每行以“?”为结束标志。最后将备份后的数据导入到一个和KC表结构一样的空表COURSE表中。首先导出数据:USE
15、 XSCJ;SELECT * FROM KC INTO OUTFILE D:/FILE/myfile1.txtFIELDS TERMINATED BY , OPTIONALLY ENCLOSED BY LINES TERMINATED BY ? ;导出成功后可以查看D盘FILE文件夹下的myfile1.txt文件,文件内容如图8.1所示。,图8.1 备份数据文件内容,8.2.1 使用SQL语句备份和恢复表数据【例8.1】 备,8.2.1 使用SQL语句备份和恢复表数据,文件备份完后可以将文件中的数据导入到COURSE表中,使用以下命令:LOAD DATA INFILE D:/FILE/myfi
16、le1.txtINTO TABLE COURSEFIELDS TERMINATED BY , OPTIONALLY ENCLOSED BY LINES TERMINATED BY ? ;注意:在导入数据时,必须根据文件中数据行的格式指定判断的符号。例如,在myfile1.txt文件中字段值是以逗号隔开的,导入数据时一定要使用“TERMINATED BY ,”子句指定逗号为字段值之间的分隔符,与SELECTINTO OUTFILE语句相对应。因为MySQL表保存为文件形式,所以备份很容易。但是在多个用户使用MySQL的情况下,为了得到一个一致的备份,在相关的表上需要做一个读锁定,防止在备份过程中
17、表被更新;当恢复数据时,需要一个写锁定,以避免冲突。在备份或恢复完以后要对表进行解锁。有关锁定与解锁的内容在第10章中介绍。,8.2.1 使用SQL语句备份和恢复表数据文件备份完后可以,8.2.2 使用客户端程序备份和恢复数据,MySQL提供了很多免费的客户端程序和实用工具,不同的MySQL客户端程序可以连接服务器以访问数据库或执行不同的管理任务。这些程序不与服务器进行通信,但可以执行MySQL相关的操作。在MySQL目录下的BIN子目录中存储着这些客户端程序。本节简单介绍一下mysqldump程序和mysqlimport程序。使用客户端的方法如下。打开DOS终端,进入BIN目录,路径为:C:
18、Program FilesMySQLMySQL Server 5.1bin,后面介绍的客户端命令都在此处输入,界面如图8.2所示。1. 使用mysqldump备份数据 mysqldump客户端也可用于备份数据,它比SQL语句多做的工作是可以在导出的文件中包含表结构的SQL语句,因此可以备份数据库表的结构,而且可以备份一个数据库,甚至整个数据库系统。,图8.2 运行客户端程序,8.2.2 使用客户端程序备份和恢复数据MySQL提供了很,8.2.2 使用客户端程序备份和恢复数据,(1)备份表命令格式:mysqldump options db_name tables filename说明:optio
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL 备份 恢复 数据库 方法 课件

链接地址:https://www.31ppt.com/p-1286614.html