数据库备份与还原

在操作数据库时,难免会发生一些意外造成数据丢失。

为了确保数据的安全,需要定期对数据库进行备份,这样,当遇到数据库中数据丢失或者出错的情况,就可以将数据进行还原,从而最大限度地降低损失。

数据的备份

为了完成数据的备份,MySQL提供了一个mysqldump命令,它可以实现数据的备份。

mysqldump命令可以备份单个数据库、多个数据库和所有数据库。由于这三种备份方式比较类似,所以这里就以备份单个数据库为例来讲解mysqldump命令,其他方式只列举语法格式,具体如下。

1、mysqldump命令备份数据库的语法格式如下:

mysqldump -uusername -ppassword dbname [tbname1 [tbname2]] > filename.sql

上述语法格式中,-u后面的参数username表示用户名,-p后面的参数password表示登录密码,dbname表示需要备份的数据库名称,tbname表是数据库中的表名,可以指定一个或多个表,多个表名之间用空格分隔。如果不指定则备份整个数据库filename sql表示备份文件的名称,文件名前可以加上绝对路径。

需要注意的是,在使用mysqldump命令备份数据库时,直接在DOS命令行窗口中执行该命令即可,不需要登录到MySQL数据库。

那下面我们演示一个案例。

首先创建一个名称为day1228的数据库,并在数据库中创建表student,插入相应数据。

CREATE DATABASE day1228;

USE day1228

CREATE TABLE student(

Id int primary key auto_increment,

name varchar(20),

Age int

);

INSERT INTO student(name , age) VALUE ('Tom' , 20),('Jack' , 16),('Lucy' , 18);

上述SQL语句执行成功后,我们还是要先查看一下,再进行下面的部分:

备份开始:首先在你合适的位置创建一个文件夹(backup_files),用于存放备份的文件,然后开启一个DOS窗口,注意这里是不需要登录数据库的,使用mysqldump命令备份day1228的命令如下

mysqldump -uroot -proot day1228>D:/mysql_backup_files/day1228_20171228.sql  

数据库备份与还原_第1张图片
数据库备份与还原_第2张图片
数据库备份与还原_第3张图片

从上述文件中可以看出,备份文件会包含mysqldump的版本号,MySQL的版本号,主机名称,备份的数据库的名称,以及一些SET语句、CREATE语句、INSERT语句、注释信息等。其中以“一”字符开头的都是SQL的注释,以“/*!”开头、以“*/”结尾的语句都是可执行的MySQL注释,这些语句可以被MySQL执行,但在其他数据库管理系统中将被作为注释忽略,这可以提高数据库的可移植性。

需要注意的是,以“/*!40104”开头、以“*/”结尾的注释语句中,40101是MySQL数据库的版本号,相当于MySQL4.1.1,在还原数据时,如果当前MySQL的版本比MySQL4.1.1高,/*!40104”和“*/”之间的内容就被当作SQL命令来执行,如果比当前版本低,/*!40104”和“*/”之间的内容就被当作注释。

2、备份多个数据库

mysqldump -uusername -ppassword --database dbname1 [dbname2 tbname3] > filename.sql

在备份多个数据库的语法格式中,“--database”参数后面至少应指定一个数据库名称,如果有多个数据库,则名称之间用空格隔开。

3、备份所有数据库

mysqldump -uusername -ppassword --all-database> filename.sql

需要注意的是,如果使用“--all-database”参数备份了所有的数据库,那么在还原数据库时,不需要创建数据库并指定要操作的数据库,因为对应的备份文件中包含CREATE DATABASE语句和USE语句。

数据的还原

当数据库中的数据遭到破坏时,可以通过备份好的数据文件进行还原。这里所说的还原是指还原数据库中的数据,而库是不能被还原的,通过前面的讲解可知,备份文件实际上是由多个CREATE INSERT DROP语句组成,因此只要使用MySQL命令执行这些语句就可以将数据还原。

MySQL命令还原数据的语法格式如下

mysql -uusername -ppassword [daname] < filename.sql

那我们就用我们刚刚测试的数据库来实现一下还原

首先我们要删除我们的数据库,然后再创建我们的数据库,话说这一步只是测试的标准流程而已。

有两种方法,一个是在MySQL服务之外

mysql -uroot -proot day1228 < D:/mysql_backup_files/day1228_20171228.sql

一个是在MySQL服务之内

source D:/mysql_backup_files/day1228_20171228.sql;

你可能感兴趣的:(数据库备份与还原)