当数据库中的数据遭到破坏时,可以通过备份好的数据文件进行还原,这里所说的还原是指还原数据库中的教据,而库是不能被还原的,我们知道,备份文件实际上就是由多个 CRRATE,INSERT 和 DROP 语句组成,因此只要使用 mysql 命令扶行这些语句就可以将数据还原。
mysgl命令还原数据的语法格式如下:
mysql -uusername -ppassword [dbname]<filename.sql
上述语法格式中,username表示登录的用户名,password 表示用户的密码,dbnams表示要还原的数据库名称,如果使用 mysqldump命令备份的 flenamne.sql文件中包含创建教据库的语句,则不需要指定数据库。
我们知道数据库中的库是不能被还原的,因此在还原数据之前必须先创建数据库,接下来通过一个案例来学习数据的还原,具体操作步骤如下。
1、删除数据库
为了演示数据的还原,首先需要使用DROP语句将数据库 chapter08 删除,具体语句加下:
DROP DATABASE chapter08;
上述语句执行成功后,可以使用 SHOW DATABASES 语句查询数据库,查询结果如下:
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| chapter03 |
| chapter04 |
| chapter05 |
| chapter06 |
| chapter07 |
| information_schema |
| itcast |
| mysql |
| performance_schema |
| sys |
+--------------------+
10 rows in set (0.01 sec)
从查询结果可以看出,数据库 chapter08 被成功删除了。
2、创建数据库
由于库是不能被还原的,因此先要创建一个数据库 chapter08,具体语句如下:
CREATE DATABASE chapter08;
上述语句执行成功后,接下来就可以还原数据库中的数据了。
3、还原数据
使用 mysql 语句还原用户名下 backup 目录下的 chapter08.sql文件,具体语句如下:
mysql -uroot -p123456 chapter08 </Users/enjoy/backup/chapter08.sql
上述语句执行成功后,数据库中的数据就会被还原。
4、查看数据
为了验证数据已经还原成功,可以使用 SELECT 语句查询 chapter08 中的数据,查询结果如下:
mysql> SELECT * FROM student;
+----+------+------+
| id | name | age |
+----+------+------+
| 1 | Tom | 20 |
| 2 | Jack | 16 |
| 3 | Lucy | 18 |
+----+------+------+
3 rows in set (0.00 sec)
从上述查询结果可以发现,数据已经被还原了。这种还原方式只是其中的一种,还可以登录到 MySQL 数据库,使用 source 命令来还原数据,source 命令还原数据的语法格式如下:
source filename.sql
source 命令的语法格式比较简单,只需要指定导入文件的名称以及路径即可。按照上面的方式同样可以查看到还原后的效果,在此就不演示了,有兴趣的读者可以自己测试。