16.2 数据还原
管理员的非法操作和计算机的故障都会破坏数据库文件。当数据库遭到这些意外时, 可以通过备份文件将数据库还原到备份时的状态。这样可以将损失降低到最小。本节将为读者介绍数据还原的方法。
16.2.1使用mysql命令还原
管理员通常使用mysqldump命令将数据库中的数据备份成一个文本文件。通常这个文件的后缀名是.sql。需要还原时,可以使用mysql命令来还原备份的数据。本小节将为读者介绍mysql命令的工作原理和使用方法。
备份文件中通常包含CREATE语句和mSERT语句。mysql命令可以执行备份文件中的CREATE语句和INSERT语句。通过CREATE语句来创建数据库和表。通过INSERT 语句来插入备份的数据。mysql中命令的基本语法如下:
mysql -u root -p [dbname] < backup.sql
其中,dbname参数表示数据库名称。该参数是可选参数,可以指定数据库名,也可以不指定。指定数据库名时,表示还原该数据库下的表。不指定数据库名时,表示还原特定的一个数据库。而备份文件中有创建数据库的语句。
【示例16-4】下面使用root用户备份所有数据库。命令如下:
mysql -u root -p < C:\all.sql
执行完后,MySQL数据库中就已经还原了all.sql文件中的所有数据库。
注意:如果使用-all-databases参数备份了所有的数据库,那么还原时不需要指定数据库。因为,其对应的sql文件包含有CREATE DATABASE语句,可以通过该语 句创建数据库。创建数据库之后,可以执行sql文件中的USE语句选择数据库, 然后在数据库中创建表并且插入记录。
16.2.2直接复制到数据库目录
之前介绍过一种直接复制数据的备份方法。通过这种方式备份的数据,可以直接复制到MySQL的数据库目录下。通过这种方式还原时,必须保证两个MySQL数据库的主版 本号是相同的。因为只有MySQL数据库主版本号相同时,才能保证这两个MySQL数据库的文件类型是相同的。而且,这种方式对MyISAM类型的表比较有效。对于InnoDB类型的表则不可用。因为InnoDB表的表空间不能直接复制。
在Windows操作系统下,MySQL的数据库目录通常存放下面3个路径的其中之一。 分别是 C:\mysql\date、C:\Documents and Settings\All\Users\Application\Data\MySQL\MySQLServer 5.1\data 或者 C:\Program Files\MySQL\MySQL Server 5.1\data。在 Linux 操作系统下, 数据库目录通常在/var/lib/mysql/、/usr/local/mysql/data 或者/usr/local/mysql/var 这3个目录下。上述位置只是数据库目录最常用的位置。具体位置根据读者安装时设置的位置而定。
使用mysqlhotcopy命令备份的数据也是通过这种方式来还原的。在Linux操作系统下, 复制到数据库目录后,一定要将数据库的用户和组变成mysql。命令如下:
chown -R mysql.mysql dataDir
其中,两个0mysql分别表示组和用户;“-R”参数可以改变文件夹下的所有子文件的用户和组;“dataDir”参数表示数据库目录。
注意:Linux操作系统下的权限设置非常的严格。通常情况下,MySQL数据库只有root用户和mysql用户组下的mysql用户可以访问。因此,将数据库目录及制到 指定文件夹后,一定要使用chown命令将文件夹的用户组变为mysql,将用户变为 mysql。