Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
1
备份和恢复数据
单元六 维护网上商城系统数据库
任务3
2
学习引言
任务描述
数据库的备份与恢复是数据库管理最重要的工作之一。系统的意外崩溃或
系统硬件的损坏都可能导致数据丢失或损坏。数据库管理员应该定期地备份数
据,当数据库中的数据出现了错误或损坏时,就可以使用备份的数据进行数据
还原。本任务主要介绍数据库备份与恢复、数据库迁移和数据的导入与导出等
操作方法。
3
知识导航
知识导航
⚫ 数据的备份
⚫ 数据的恢复
⚫ 数据库的迁移
⚫ 数据的导出
⚫ 数据库的导入
4
学习目标
1. 理解数据备份和恢复的作用;
2. 掌握数据备份和恢复的方法;
3. 了解进行数据库迁移的原因;
4. 掌握数据导出和导入的方法。
知识目标 素质目标
1.培养学生勇于克服困难的能
力;
2.培养学生的自我探究能力;
3.培养学生敬业乐业的工作作
风。
能力目标
1. 能够熟练地使用多种方法对
数据库进行备份和恢复;
2.能够熟练地对数据库导出和
导入数据。
5
重点难点
1. 数据的备份与恢复;
2. 数据的导出与导入。
重点
1. 数据的备份与恢复;
2. 数据的导出与导入。
难点
6
01 数据的备份• 备份数据库中的所有表
• 备份数据库中的某个表
• 备份多个数据库
• 备份所有数据库
7
数据的备份
数据备份就是对数据库建立相应副本,包括数据库结构、对象及数据。在MySQL
中使用mysqldump命令备份数据。
mysqldump命令是输入在cmd命令行中的执行命令,是将需要备份的数据库中的
数据表结构和表中数据存储在生成的文本文件中,该文件包含了多个CREATE 和
INSERT语句,使用这些语句可以重新创建表和插入数据。
使用mysqldump命令可以备份一个数据库,也可以备份一个数据库中的某一个表,
还可以备份多个数据库。
8
数据的备份
1. 备份单个数据库中的所有表
mysqldump – u username –p password dbname >BackName.sql
说明:
◆ >:告诉mysqldump将备份数据表的定义和数据写入备份文件;
◆ BackName.sql:表示备份文件的名称,文件名前面可以加上一个绝对路径。
【例 1 】使用root用户备份名为onlinedb的数据库。
mysqldump –u root –p onlinedb >D:\db1.sql
9
数据的备份
2. 备份数据库中的某个表
mysqldump – u username –p dbname[tbname [tbname…]] >BackName.sql
【例 2 】使用root用户备份名为onlinedb的数据库下的goods表。
mysqldump –u root –p onlinedb goods >D:\db2.sql
【例 3 】使用root用户备份名为onlinedb的数据库下的goods表和user表。
mysqldump –u root –p onlinedb goods user>D:\db3.sql
10
数据的备份
3. 备份多个数据库
mysqldump – u username –p --databases dbname[ dbname [dbname…]]
>BackName.sql
【例 4 】使用root用户备份名为onlinedb和mysql的数据库。
mysqldump –u root –p --databases onlinedb mysql >D:\db4.sql
11
数据的备份
4. 备份当前服务器下的所有数据库
mysqldump – u username –p --all-databases >BackName.sql
【例 5 】使用root用户备份该服务器下的所有数据库。
mysqldump –u root –p --all -databases >D:\db5.sql
12
02 数据的恢复• 备份数据库中的所有表
• 备份数据库中的某个表
• 备份多个数据库
• 备份所有数据库
13
数据的恢复
1. 使用mysql命令恢复数据
mysql – u username –p [dbname] <backup.sql
【例 6 】使用mysql命令将D盘根目录的脚本文件“db3.sql”还原成onlinedb1.
CREATE DATABASE onlinedb1;
mysql –u root –p onlinedb1 <D:\db3.sql
说明:
◆ dbname :要恢复数据的数据库名称,该数据库必须存在;
◆ backup.sql:数据文件的名称,文件名前面可以加上一个绝对路径。
14
数据的恢复
2. 使用source命令恢复数据
如果已经登录数据库,可以使用source命令导入sql文件。其语法格式如下:
source filename.sql
【例 7 】使用source命令将D盘根目录的脚本文件“db3.sql”还原成onlinedb2.
USE onlinedb2;
source D:\db3.sql
没有分号
说明:
◆ 执行source命令前,必须使用USE语句选择数据库,否则会报错!
15
03数据库的迁移• 数据库迁移的原因
• 数据库迁移的方法
16
数据库的迁移
随着信息系统数据量的不断增加,企业需要解决存储空间不足、新老系统切换和信息
系统升级改造等问题 ,因此就需要对数据库中的数据进行迁移。
数据库的迁移就是把数据从一个系统移动到另一个系统上。
1. 数据库迁移的原因
◆ 需要安装新的数据库服务器;
◆ MySQL版本需要更新;
◆ 数据库管理系统的变更。
17
数据库的迁移
⚫ 相同版本的MySQL数据库之间的迁移
相同版本的MySQL数据库之间的迁移就是在版本号相同的MySQL数据库之间进行数据库移动。
迁移过程其实就是在源数据库备份和目标数据库还原过程的组合。
⚫ 不同版本的MySQL数据库之间的迁移
因为数据库升级等原因,需要将旧版本MySQL数据库中的数据迁移到较新版本的数据库中。迁移
过程仍是在源数据库备份和目标数据库恢复过程的组合。在迁移过程中如果想保留旧版本中的用户访
问控制信息,则需要备份MySQL中mysql数据库,在新版本MySQL安装好之后,重新读入mysql备份
文件中的信息。
⚫ 不同数据库之间的迁移
不同类型的数据库之间的迁移,是指把MySQL的数据库转移到其他类型的数据库,例如从
MySQL迁移到SQL Server等。
2. 数据库迁移的方法
18
04数据的导出• 使用SELECT…INTO OUTFILE语句导出数据
• 使用mysqldump命令导出数据
• 使用mysql命令导出数据
19
数据的导出
在数据库的日常维护中,经常需要进行数据表的导入和导出操作。
MySQL数据库中的数据表可以导出成文本文件、XML文件或者HTML文件,相应的文本
文件也可以导入至MySQL数据库中。
MySQL提供了多种导出数据的工具,主要如下:
◆ SELECT…INTO OUTFILE语句;
◆ mysqldump命令;
◆ mysql命令。
20
数据的导出
1. 使用SELECT…INTO OUTFILE语句导出数据
SELECT 列名 FROM 表名 [WHERE 条件表达式] INTO OUTFIEL ‘目标文件名’
[OPTIONS]
关于OPTIONS的说明:
◆ FIELDS TERMINATED BY ‘value’:设置字符串为字段的分隔符,默认值是“\t”。
◆ FIELDS [OPTIONALLY] ENCLOSED BY ‘value’:设置字段的包围字符,只能为单个字符,如果使用
了OPTIONALLY则只有CHAR和VERCHAR等字符数据字段被包括
◆ FIELDS ESCAPED BY ‘value’:设置转义字符,默认值为“\”。
◆ LINES STARTING BY ‘value’:设置每行数据开头的字符,可以为单个或多个字符,默认情况下不使
用任何字符。
◆ LINES TERMINATED BY ‘value’:设置每行数据结尾的字符,可以为单个或多个字符,默认值为
“\n”。
21
数据的导出
1. 使用SELECT…INTO OUTFILE语句导出数据
【例 8 】使用SELECT…INTO OUTFILE语句导出onlinedb数据库中的goods表中的数据。
其中字段之间用逗号“,”隔开,字符型数据用双引号分割,记录以回车换行符结尾。
SELECT * FROM onlinedb.goods INTO OUTFILE ‘D:/backup/goods.txt’
FIELDS TERMINATED BY ‘\,’OPTIONALLY ENCLOSED BY ‘\”’LINES TERMINATED BY ‘\r\n’;
说明:
◆ 文件路径必须用“/”分割;
◆ 要使文件能够导出到“D:/backup”目录
下,必须先打开my.ini文件,添加
“secure_file_priv=D:/backup”,然后
重启服务器,再进行数据的导出。
22
数据的导出
2. 使用mysqldump命令导出数据
mysqldump命令不仅可以备份数据库中的数据,还可以导出文本文件和XML文件。
(1)导出文本文件
mysqldump -u root -p -T 目标目录 dbname table [options]
【例 9 】使用mysqldump语句导出onlinedb数据库中的users表中的数据。其中,字段
之间用“,”隔开,字符型数据用双引号分割,记录以回车换行符结尾。。
mysqldump -u root -p -T D:\ onlinedb users “--fields-terminated-by=,”
“--fields-optionally-enclosed-by=\”” --lines-terminated-by=\r\n”
23
数据的导出
2. 使用mysqldump命令导出数据
(2)导出xml格式的文件
mysqldump -u root -p -X 目标目录 dbname table >目标文件
【例 10 】使用mysqldump语句导出onlinedb数据库中的goodtype表中的数据,要求
文件格式为xml。
mysqldump -u root -p -X onlinedb goodtype >D:/goodtype.xml
24
数据的导出
3. 使用mysql命令导出数据
mysql –u root –p [OPTIONS] “SELECT 语句” dbname>目标文件
MySQL命令不仅可以用来登录服务器,还可以备份文件,还可以将查询结果导出为文本
文件、XML文件或HTML文件。
说明:
◆ SELECT 语句:表示指定一个查询;
◆ 目标文件:包括文件的物理路径及文件名称;
◆ OPTIONS:表示输出文件的类型:
• -e:导出为TXT文件
• -X:导出为XML文件
• 导出为HTML文件
25
数据的导出
3. 使用mysql命令导出数据
【例 11 】使用mysql语句导出onlinedb数据库中的order表中的数据。
导出为TXT文件:
mysql -u root -p -e “select * from order”onlinedb >D:/orders.txt
导出为HTML文件:
mysql -u root -p -H --execute “select * from order”onlinedb >D:/orders.html
导出为XML文件:
mysql -u root -p -X --execute “select * from order”onlinedb >D:/orders.html
表示执行该选项后面的语句并退出
26
05数据的导入• 使用LOAD DATE 语句导入数据
• 使用mysqlimport命令导入数据
27
数据的导入
1. 使用LOAD DATA语句导入数据
LOAD DATA INFILE ‘filename.txt’INTO TABLE tablename
[OPTIONS] [IGNORE number LINES]
LOAD DATA INFILE 语句用于从外部存储文件中读取行,并导入到数据库中的某个表中,
语法格式如下:
说明:
◆ filename:表示导入数据的来源。
◆ tablename:表示导入的数据表的名称。
◆ IGNORE number LINES:表示忽略文件开始处的行数,number表示忽略的行数,执
行LOAD DATA语句需要FILE权限。
◆ OPTIONS:为导入数据指定分隔符,含义与导出数据相同;
28
数据的导入
【例 12 】使用LOAD DATA语句将goods.txt文件中的数据导入至数据库onlinedb中
goods表中。
LOAD DATA INFILE ‘D:\goods.txt’
INTO INTO TABLE onlinedb.goods
FIELDS TERMINATED BY ‘\,’ OPTIONALLY ENCLOSED BY ‘\”’
LINES TERMINATED BY ‘\r\n’;
1. 使用LOAD DATA语句导入数据
29
数据的导入
2. 使用mysqlimport命令导入数据
mysqlimport –u root –pPassword dbname filename.txt[OPTIONS]
使用mysqlimport命令导入数据,并不需要登录MySQL客户端,其语法格式如下:
OPTIONS选项的说明:
◆ 为导入数据指定分隔符,和导出数据一样。
30
数据的导入
【例 13】使用mysqlimport命令将例8-7导出的users.txt文件中的数据导入到数据库
onlinedb中的users表中。
mysqlimport –u –root –p onlinedb D:\users.txt
fields terminated by=’,’
optionally-by=‘\”’
lines terminated by ‘\r\n’;
2. 使用mysqlimport命令导入数据