使用mysqldump命令备份
mysqldump 命令可以将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。mysqldump 的工作原理:它先查询需要备份的表的结构,再在文本文件中生成一个CREATE 语句。然后,将表中的所有记录转换成一条INSERT语句。这些CREATE语句和INSERT语句都是还原时使用的。还原数据时就可以使用其中CREATE语句来创建表。使用其中的INSERT语句来还原数据。
1. 备份一个数据库
使用mysqldump命令备份一个数据库的基本语法如下:
mysqldump –u username –p dbname table1 table2 … >BackupName.sql
其中,dbname参数表示数据库的名称;table1,table2参数表示表的名称,没有该参数时将备份整个数据库;BackupName.sql 参数表示备份文件的名称,文件名前面可以加上一个绝对路径。通常将数据备份成一个后缀名为sql的文件。
例如:备份student数据库的所有表
mysqldump -u root -p student > stduentdb.sql
注意: 上面的student.sql文件中没有创建数据库的语句(若需要创建数据库的语句,可以使用添加'--databases'选项),因此,student.sql文件中的所有表和记录必须还原到一个已经存在的数据库中。还原数据时, CREATE TABLE 语句会在数据库中创建表,然后执行INSERT语句向表中插入记录。
通过查看studentdb.sql 中的内容,可以看到student中表的创建语句和记录的插入语句。
备份student数据库中的score表,如下:
mysqldump -u root -p student score > studentscore.sql
查看备份文件时,可以看出只有 socre表的创建和记录插入语句,而没有了student表相关信息。
2.备份多个数据库
mysqldump 命令备份多个数据库的语法如下:
mysqldmup -u root -p --databases dbname1 dbname2 ... > BackName.sql
这里要加上"--databases"这个选项(主要是两个"-"),然后后面跟多个数据库的名称。
备份一个数据库时,也是可以使用上面的命令的,
例如:备份一个student数据库
mysqldump -u root -p --databases student > studentdb2.sql
查看备份后的studentdb2文件,可以看出比没有加"--databases"参数时,备份文件中,多了创建数据库的语句,如下图所示:
3.备份所有数据库
mysqldump 命令备份所有数据库的语法如下:
mysqldump -u username -p --all-database >BackupName.sql
使用 "--all-database"选项就可以备份所有数据库了。
数据还原:
使用mysql命令还原
备份文件中通常包含CREATE语句和INSERT语句。mysql命令可以执行备份文件中的CREATE语句和INSERT语句。通过CREATE 语句来创建数据库和表。通常INSERT 语句来插入备份的数据。mysql语句的基本语法如下:
mysql -u root -p [dataname] < backup.sql
其中,dbname参数表示数据的名称。该参数是可选参数,可以指定数据库名,也可以不指定。指定数据库时,表示还原该数据库下的表。不指定数据库名时,表示还原特定的一个数据库。而备份文件中有创建数据库的语句。
注意: 如果使用 –all-database 参数备份了所有的数据库,那么还原时不需要指定数据库。即如果备份文件里有了创建数据库的语句,就不需要指定数据库了。因为,其对应的sql文件包含有CREATE DATABASE 语句,可以通过该语句创建数据库。创建数据库之后,可以执行sql文件中的USE语句选择数据库,然后在数据库中创建表并且插入记录。
数据库的迁移:
1.相同版本的MySQL数据库之间的迁移
相同版本的MySQL数据库之间的迁移就是在主版本号相同的MySQL数据库之间进行的数据库移动。最常用和最安全的方式是使用mysqldump 命令来备份数据库。然后使用mysql 命令将备份文件还原到新的MySQL 数据库中。这里可以将备份和迁移同时进行。假设从一个名为host1的机器中备份出所有的数据库,然后,将这些数据库迁移到名为host2的机器上。命令如下:
mysqldump –h name1 –u root –password=password1 –all-databases |mysql –h host2 –u root –password=password2
其中, “|”符号表示管道,其作用是将mysqldump 备份的文件送给mysql命令;“—password=password1”是name1主机上root用户的密码。同理,password2是name2主机上的root用户的密码。通过这种方式可以直接实现迁移。
2.不同版本的MySQL数据库之间的迁移
不同版本的MySQL数据库之间进行数据迁移前通常是MySQL升级的原因。
高版本的MySQL数据库通常都会兼容低版本。但是,高版本的MySQL数据库很难迁移到低版本的MySQL数据库。数据库迁移时要特别的小心,最好使用mysqldump命令来进行备份,避免迁移时造成的数据丢失。