《MySQL数据库管理与应用任务式教程(微课版)单元8 MySQL数据库备份与恢复》由会员分享,可在线阅读,更多相关《MySQL数据库管理与应用任务式教程(微课版)单元8 MySQL数据库备份与恢复(42页珍藏版)》请在金锄头文库上搜索。
1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2024/6/10,#,单元,8,MySQL 数据库备份与恢复,MySQL,数据库管理与应用任务式教程(慕课版),学习内容,任务,1,实现学生成绩管理数据库的备份与恢复,2,任务,2,使用日志备份和恢复数据,数据库系统的组成,任务,4,卸载,MySQL,1,.,数据备份和恢复的,概述,数据库备份是指通过复制表文件或者导出数据的方式来生成数据库的副本,。备份的目的 是当数据库出现故障或遭到破坏时,能将备份的数据库加载到系统中,使数据库从错误状态 恢复到备份时的正确状态。,一般情况下,数据库备份需要备份的数据包括表
2、数据,二进制日志、InnoDB 事务日志,代码(存储过程、存储函数、触发器、事件调度器),服务器配置文件等。,数据库恢复是与备份对应的系统维护和管理操作。数据恢复是指当数据库出现故障或者 出于某种需要时,将已备份的数据加载到数据库中,使数据库恢复到备份时的状态。,任务,1,实现学生成绩管理数据库的备份与恢复,8.1.1 数据备份和数据恢复的概述,2,.,数据备份的分类,(1)根据备份时数据库服务器是否在线,数据备份可以分为以下 3 类。,冷备份:冷备份也叫脱机备份,即在数据库已经正常关闭的状态下进行的备份。,热备份:也称联机备份,即在数据库正常运行时进行的备份,,备份时数据库的读写操作可以正常
3、执行,。,温备份:也是在数据库正常运行时进行的备份,但备份时数据库仅支持读操作,,不支持写操作,。,(2)按照备份后文件的内容,数据备份可以分为以下两类。,物理备份:是指复制数据库的物理结构文件的操作。,逻辑备份:是指将数据库中的数据导出到一个可读的文件中,一般是文本文件,实际上导出的是 SQL 语句文件或表数据。,(3)按照备份涉及的数据集合的范围,数据备份可以分为完全备份和部分备份,部分备 份又分为增量备份和差异备份。,完全备份,增量备份,差异备份,任务,1,实现学生成绩管理数据库的备份与恢复,3,.,数据备份的策略,对于数据库管理员来说,定制合理的备份策略非常重要,数据库管理员应该根据自
4、身的 业务要求设计出损失最小、对数据库影响最小的备份策略。在进行备份或恢复操作时需要考 虑以下因素。,确定要备份的表的存储引擎是事务型还是非事务型,不同的存储引擎备份方式在处 理数据一致性方面是不同的。,确定使用完全备份还是增量备份。,可以考虑采取数据库复制的方法来做异地备份,这是容灾的防范。,要定期做备份,备份的周期要充分考虑系统可以承受的恢复时间。备份要在系统负载较小的时候进行。,确保 MySQL 打开 log-bin 选项,有了 binarylog,MySQL 才可以在必要的时候做完整恢复、基于时间点的恢复,或基于位置的恢复。,要经常做备份恢复测试,确保备份是有效的,并且是可以恢复的。,
5、任务,1,实现学生成绩管理数据库的备份与恢复,1.,冷备份与恢复,停止 MySQL 数据库服务。,在操作系统级别复制默认存放在 MySQL 数据目,C:ProgramDataMySQLMySQLServer 5.7Data 下的相应数据库的数据文件和日志文件到备份目录。,任务,1,实现学生成绩管理数据库的备份与恢复,8.1.2 物理备份和恢复,2.热备份与恢复,对于 MyISAM 存储引擎,热备份方法虽然有很多,但实质都是将要备份的表加读锁,,然后,再复制数据文件到备份目录。操作方法如下。,给数据库中所有表加读锁,可执行如下语句。,mysql flush tables for read;,复制
6、相应数据库的数据文件到备份目录。,对于,lnnoDB 存储引擎,可用 Percona 公司开发的开源热备工具 xtrabackup,对,MySQL innodb,表进行热备份、增量备份。热备份方法相对复杂些,在此不做介绍。,任务,1,实现学生成绩管理数据库的备份与恢复,1.,使用 mysqldump 工具备份数据库,mysqldump 程序在目录 C:Program FilesMySQLMySQL Server 5.7bin 下,mysqldump 命令是在 cmd 命令行窗口中执行的。,(,1,)备份一个,数据库。,使用 mysqldump 命令备份一个数据库的语法格式如下。,mysqldu
7、mp-h host-u username-ppassword dbname filename.sql,任务,1,实现学生成绩管理数据库的备份与恢复,8.1.3 逻辑备份与恢复,【例题 8.1】使用 root 用户备份学生成绩管理数据库 cjgl,备份文件名为“cjgl.sql”,C:UsersAdministratormysqldump-uroot-pmysql cjgl D:cjgl.sql,mysqldump:Warning Using a password on the command line interface can be insecure.,也,可以在命令行中不写出密码,执行时输
8、入密码。,执行,如下语句。,C:UsersAdministratormysqldump-uroot-p cjgl D:cjgl1.sql,Enter password:*,可以用文本编辑器查看和编辑刚才备份的文件。文件 cjgl.sql 包含 MySQL 的版本,备份 的主机名,数据库名,备份的时间,各种注释,多个 DROP、CREATE 和 INSERT 等语句,如图 8-1 所示。恢复操作时将使用这些语句重新创建数据库和表、插入表数据等。,任务,1,实现学生成绩管理数据库的备份与恢复,(,2,)备份多个数据库。,使用 mysqldump 命令备份多个数据库的语法格式如下。,mysqldum
9、p uusername-h host ppassword-databases dbname1 dbname2 filename.sql,【例题 8.2】,使用 root 用户备份样本数据库,world,和,sakila,,备份文件名为,“sample.sql”。,C:UsersAdministratormysqldump-uroot-pmysql-databases world sakilaD:,sample,.sql,(,3,),备份所有数据库,。,使用 mysqldump 命令备份所有数据库的语法格式如下。,mysqldump uusername ppassword-all-databas
10、es filename.sql,任务,1,实现学生成绩管理数据库的备份与恢复,【例题 8.3】使用 root 用户备份所有数据库。,执行如下语句。,C:UsersAdministrator mysqldump-uroot-pmysql-all-databases D:all.sql,2.,使用mysql命令,恢复数据库,mysql,程序在目录 C:Program FilesMySQLMySQL Server 5.7bin 下,mysql 命令是在cmd 命令行窗口中执行的。,mysql 命令的语法格式如下。,mysql uusername ppassword dbnameSHOW DATABA
11、SES;,mysqlDROP DATABASE cjgl;,验证该数据库是否被删除。,mysqlSHOW DATABASES;,使用,mysql,命令恢复数据库。,mysqlCREATE,DATABASE cjgl;,mysqlSHOW DATABASES;,C:UsersAdministratormysql-uroot-pmysql,cjgl USE cjgl;,mysqlSELECT*FROM xs;,任务,1,实现学生成绩管理数据库的备份与恢复,3.使用命令导出数据,导出,是指将 MySQL 数据库中的数据复制到外部存储文件(如文本文件、,XML文件或者HTML文件,)中,而导入则是将这
12、些导出文件中的数据恢复到 MySQL 数据库中。,数据,导出的方式有多种,常用方法有使用 mysqldump 命令、使用,SELECT.INTOOUTFILE,语句、使用 mysql 命令以及使用一些图形化工具等。,(,1,)使用,mysqldump 命令导出表。,使用 mysqldump 命令不仅可以备份数据库,还能备份数据表。,任务,1,实现学生成绩管理数据库的备份与恢复,用,mysqldump 命令导出 sql 文件。,mysqldump 命令导出 SQL 文件的语法格式如下,。,mysqldump-h host-u username-ppassword dbname tbname.fi
13、lename.sql,【例题 8.5】使用 mysqldump 命令以 root 用户的身份,导出学生成绩管理数据库 cjgl 中 学生表 xs 和成绩表 cj 的数据,导出文件名为 xs_cj.sql;导出课程表 kc 的数据,导出文件名 为,kc.sql,C:UsersAdministratormysqldump-uroot-pmysql cjgl xs cj E:xs_cj.sql,C:UsersAdministratormysqldump-uroot pmysql cjgl kc E:kc.sql,【,例题,8.6,】,使用,mysqldump,命令以,root,用户的身份,将学生成绩
14、管理数据库,cjgl,中课,程表,kc,的记录导出到,E:,下的文本文件中。然后将表中的记录导出到,F:,下的文本文件中,要,求列名之间使用英文逗号“,”隔开,所有字符类型的值用英文双引号引起来,定义转义字符,为问号“,?,”,每行记录以回车换行符“,rn,”结尾。,执行如下语句,。,C,:UsersAdministratormysqldump-uroot-pmysql-T E:cjgl,kc,任务,1,实现学生成绩管理数据库的备份与恢复,用,mysqldump 命令导出纯文本文件。,在某些情况下,需要将表中的数据导出为某些符号分割的纯文本,而不是 SQL 语句。,mysqldump 命令导出
15、纯文本文件的语法格式如下,。,mysqldump-u username-h host-ppassword-T path dbname tbname.OPTIONS,(,2,)使用,SELECT.INTO OUTFILE,语句导出表。,在,MySQL,中,,可以,使用,SELECT.INTO OUTFILE,语句将表的数据导出到一个,文本文件,中,。,该,语句的基本格式如下。,SELECT,列名,FROM table WHERE,条件表达式,INTO OUTFILE,目标文件,OPTIONS,【,例题,8.7,】,使用,SELECT.INTO OUTFILE,语句以,root,用户的身份导出学生
16、成绩管理,数据库,cjgl,中的学生表,xs,中的数据。,执行,如下语句。,mysql SELECT*FROM cjgl.xs INTO OUTFILE E:xs.txt;,【,例题,8.8,】,使用,SELECT.INTO OUTFILE,语句以,root,用户的身份导出学生成绩管理,数据库,cjgl,中学生表,xs,中的记录,要求列名之间用“,”隔开,字符型数据用双引号引起来,,每,条记录以“,-,”开头,以回车换行符“,rn,”结尾。,执行,如下语句。,mysql SELECT*FROM cjgl.xs INTO OUTFILE F:xs.txt,FIELDS TERMINATED BY,OPTIONALLY ENCLOSED BY,LINES STARTING BY-TERMINATED BY rn,;,任务,1,实现学生成绩管理数据库的备份与恢复,4.,使用命令导入数据,(,1,)使用 mysqlimport 命令导入数据,在 MySQL 中,mysqlimport 命令主要用来向数据库中导入数据。如果使用,mysqldump,命令导出数据时使用了-T 参数,则可以使用 my