MySQL入门到精通(十八)

                                            备份和恢复

18.1 数据备份

备份数据是数据库管理员最常用的操作。为了保证数据库中的数据的安全,数据管理员需要定期进行数据备份。一旦数据遭到破坏,即通过备份的文件来还原数据库。

可能造成数据损坏的原因很多,大多数可以归纳为以下几个方面:

(1)存储介质故障:保存数据文件的磁盘设备损坏,同时又没有对数据备份,从而导致数据彻底丢失。

(2)服务器彻底瘫痪:数据库服务器彻底瘫痪,系统需要重建。

(3)用户的误操作:在删除数据库时,不小心删除了某些重要的数据,或者是整个数据库。

(4)黑客破坏:系统遭到黑客的恶意攻击,数据或者数据表被删除。

18.1.1 使用mysqldump命令备份

mysqldump命令可以将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。

mysqldump命令的工作原理:它先查出需要备份的表结构,再在文本文件中生成一条CREATE语句。然后,将表中的所有记录转换成一条INSERT语句。这些CREATE语句和INSERT语句都是还原时使用的。还原数据时就可以使用其中的CREATE语句来创建表。使用其中的INSERT语句来还愿数据。

在使用mysqldump命令进行数据备份时,经常分为以下3种形式:

1.备份一个数据库

使用mysqldump命令备份一个数据库的基本语法:

mysqldump -u username -p dbname table1 table2 ... > BackupName.sql 

其中,dbname参数标识数据库的名称;table1和table2参数表示表的名称,没有该参数时将备份整个数据库;BackupName.sql参数表示备份文件的名称,文件名前面可以加上一个绝对路径。通常将数据库备份成一个后缀名为.sql的文件。

2.备份多个数据库

使用mysqldump命令备份多个数据库的基本语法:

mysqldump -u username -p --database dbname1 dbname2 > BackupName.sql 

3.备份所有数据库

使用mysqldump命令备份所有数据库的基本语法:

mysqldump -u username -p --all -database > BackupName.sql 

18.1.2  直接复制整个数据库目录

MySQL有一种最简单的备份方法,就是将MySQL中的数据库文件直接复制出来。这种方法最简单,速度也最快。使用这种方法时,最好将服务器先停止。这样,可以保证在复制期间数据库中的数据不会发生变化。如果在复制期间还有数据写入,就会造成数据不一致。

说明:为保证所备份数据的完整性,在停止MySQL服务器之前,需要先执行FLUSH TABLES语句将所有数据写入到数据文件的文本文件里。

这种方法虽然简单快捷,但不是最好的备份方法。因此,在实际情况可能不允许停止MySQL服务器。而且,这种方法对InnoDB存储引擎的表不适用。对于MyISAM存储引擎的表,这样备份和还原很方便。但是还原时最好是相同版本的MySQL数据库,否则可能会存储文件类型不同的情况。

18.1.3 使用mysqlhotcopy工具快速备份

mysqlhotcopy使用lock tables、flush tables和cp或scp来快速备份数据库.它是备份数据库或单个表最快的途径,完全属于物理备份,但只能用于备份MyISAM存储引擎和ARCHIVE引擎,并且是一个服务器命令,只能运行在数据库目录所在的机器上.与mysqldump备份不同,mysqldump属于逻辑备份,备份时是执行的sql语句。使用mysqlhotcopy命令前需要要安装相应的软件依赖包,因为这个功能很弱,我们只简单的介绍一个怎么用:
备份一个库:mysqlhotcopy db_name [/path/to/new_directory]
备份一张表:mysqlhotcopy db_name./table_name/ /path/to/new_directory

18.2 数据恢复

18.2.1 使用mysql命令还原

通常使用mysqldump命令将数据库的数据备份成一个文本文件。通常这个文件的后缀名是.sql。需要还原时,可以使用mysql命令来还原备份的数据。数据库备份文件大于2M,用phpmyadmin没办法还原数据库,这时命令行备份/还原数据库就派上用场了。       

mysql命令的基本语法:mysql -u root -p dbname < backup.sql  

注意:如果使用--all-databases参数备份了所有的数据库,那么还原时不需要指定数据库。因为,其对应的.sql文件包含CREATE DATABASE语句,可以通过该语句创建数据库。创建数据库之后,可以执行.sql文件中的USE语句选择数据库,然后在数据库中创建表并且插入记录。

18.2.2 直接复制到数据库目录

之前介绍过一种直接复制数据的备份方法。通过这种方式备份的数据,可以直接复制到MySQL的数据库目录下。通过这种方式还原时,必须保证两个MySQL数据库的主版本号是相同的。而且,这种方式对MyISAM类型的表比较有效。对于InnoDB类型的表则不可用。因为InnoDB表的表空间不能直接复制。

使用mysqlhotcopy命令备份的数据也是通过这种方式来还原的。在Linux操作系统下,复制到数据库目录后,一定要将数据库的用户和组变成mysql,命令如下:

chown -R mysql.mysql dataDir

其中,两个mysql分别表示组合用户;-R参数可以改变文件夹下的所有子文件的用户和组;dataDir参数表示数据库目录。

注意:Linux操作系统下的权限设置非常严格。通常情况下,MySQL数据库只有root用户和mysql用户组下的mysql用户可以访问。因此,将数据库目录复制到指定文件夹后,一定要使用chown命令将文件夹的用户组变为mysql,将用户变为mysql。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MySQL是一种流行的关系型数据库管理系统,具有易学易用、高性能和开源的特点。要想从入门精通MySQL,需要掌握以下几个方面。 首先,了解MySQL的基本概念和架构。理解数据库、表、字段、索引和查询等基础概念,并了解MySQL的客户端-服务器架构以及数据的存储和查询过程。 其次,学习MySQL的安装和配置。学会如何下载、安装和配置MySQL服务器,并了解MySQL的配置文件和常见配置选项。 然后,熟悉MySQL的SQL语言。学习如何使用SQL语句进行数据的插入、更新、删除和查询。掌握SQL语句的基本语法和常用的查询操作,如JOIN、GROUP BY和ORDER BY等。 接着,了解MySQL的优化和调优技巧。学习如何通过创建合适的索引、优化查询语句和调整服务器参数等方式提高MySQL的性能。掌握查询执行计划的分析方法和索引的设计原则。 最后,深入学习MySQL的高级特性和扩展功能。学习如何使用存储过程、触发器和视图等高级特性,以及如何使用复制、分区和集群等扩展功能。同时,了解MySQL的安全机制和备份恢复策略,确保数据的安全性和可靠性。 通过以上的学习和实践,就可以从入门逐步进阶,最终掌握MySQL的各种特性和技巧,成为一名MySQL的专家。当然,实际的学习过程中还需要大量的实践和项目经验积累,不断提升自己的技术能力和解决问题的能力。 ### 回答2: 《MySQL入门精通》是一本由李波撰写的MySQL学习指南。该书详细介绍了MySQL数据库的基础知识和高级应用技巧,适合初学者和进阶学习者阅读。 该书的前几章主要介绍了数据库的基本概念和MySQL的安装与配置方法。作者通过简明扼要的语言,帮助读者了解数据库的概念、结构和基本操作,以及如何在各种操作系统上安装和配置MySQL。 接下来的几章主要介绍了SQL语言的基本知识和常用操作。作者通过实例演示和练习题,详细讲解了SQL的语法、查询、插入、更新和删除操作,以及各种约束和函数的使用。 随后的章节逐渐深入,介绍了MySQL数据库的高级应用技巧和性能优化方法。作者详细介绍了索引的原理和使用方式,以及如何设计和优化数据库模型,提高查询和执行效率。此外,作者还介绍了如何进行备份恢复数据库,以及如何保护数据库的安全性。 最后几章则介绍了MySQL数据库在Web开发中的应用。作者详细介绍了如何使用PHP和MySQL进行数据交互,以及如何利用MySQL实现用户认证和权限控制等功能。 总的来说,该书通过丰富的示例和实践操作,帮助读者系统全面地了解和掌握MySQL数据库的使用。无论是初学者还是有一定经验的开发人员,都可以通过阅读该书有效提升自己的MySQL水平。 ### 回答3: 《MySQL入门精通李波》是一本以MySQL数据库为主题的书籍,旨在帮助读者从零开始学习MySQL,并逐步成为MySQL专家。 首先,书中会介绍MySQL数据库的基本概念、结构和工作原理,以及在不同操作系统下的安装和配置方法。读者可以从中了解MySQL的基本特性,如数据类型、表、索引等,以及MySQL与其他数据库系统的差异。 第二,书中会逐步引导读者学习SQL语言,这是使用MySQL的必备知识。读者将学习SQL的基本语法和常用操作,如查询数据、插入、更新和删除等。此外,书中还会介绍高级的SQL操作和性能优化技巧,以提升数据库的效率和查询速度。 第三,书中会详细介绍MySQL的高级功能和特性。读者将学习如何进行数据库的备份恢复、事务管理以及数据安全等方面的知识。同时,还会介绍MySQL的集群和分布式架构,以及如何进行数据库的水平和垂直拆分,以满足大规模应用的需求。 最后,书中还会介绍MySQL的性能调优和故障处理方法。读者将学习如何监控数据库的性能指标,以及如何调整数据库配置和优化查询语句,以提高数据库的性能和稳定性。同时,还会介绍如何处理数据库故障和恢复数据的方法。 总之,通过《MySQL入门精通李波》,读者可以系统地学习MySQL数据库的基本知识和高级技巧,从而成为一名熟练的MySQL专家。无论是初学者还是有一定经验的开发人员,都可以通过这本书提升自己的数据库技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值