Skip to main content

🐬MySQL数据库高级管理---备份恢复

·133 words·1 min
Yalois
Author
Yalois

参考教材: MySQL数据库技术与应用 张素青、翟慧、黄静 ○ 主编

数据库的备份和恢复
#

数据库的备份
#

直接在命令行执行,而不用登录MySQL数据库

备份单个数据库

mysqldump -u username -h host -p dbname [tbname1,tbname2,….] > filename.sql

备份多个数据库

mysqldump -u username -h host -p –databases dbname1 [dbname2 dbname3 …] > filename.sql

备份所有数据库

mysqldump -u username -h host -p –all-databases > filename.sql

  • username: 用户名 (root …

  • host: 主机名 (localhost…

  • tbname: [tbname1,tbname2,….] 参数若缺省代表备份整个数据库

  • 可以直接在命令行输入密码 -p123456 (-p和密码之间不能有空格),-p单独使用回车后会要求用户输入密码

  • > 重定向符号 ,重定向输入到 filename.sql

  • filename.sql 备份后的文件名

  • –databases 后边 至少要指定一个数据库 多个数据库用空格隔开

数据库的恢复
#

方法1
#

备份的时候生成了.sql文件,恢复就从.sql文件恢复到数据库。

在执行恢复指令之前,需要在数据库中存在dbname这个数据库。

DROP DATABASE [dbname]; 删除

CREATE DATABASE [dbname]; 创建

mysql -u username -p [dbname] < filename.sql

  • dbname: 要恢复到某个存在的数据库名称

既然前面有导出多个数据库到一个sql文件的指令,那这种情况如何导入?

即SQL文件中存在多个数据库该如何导入?

我测试了一下,
我把A,B,C三个数据库导出到 3.sql,
发现在导入的时候,根据dbname来导入的

mysql -u username -p A < 3.sql
如果[dbname]A,那么就恢复3.sql中A的数据

mysql -u username -p B < 3.sql
如果[dbname]B,那么就恢复3.sql中B的数据

mysql -u username -p D < 3.sql
因为SQL文件中只有A,B,C的数据库数据,恢复到D数据库的时候没反应

得出结论

一个sql文件中含有多个数据库,那么导入到 文件中不存在的数据库 是无效的。

但是,一个sql文件只有一个数据库,那么是可以导入到任何一个数据库的,比如可以把A.sql文件导入到B数据库。

方法2
#

如果登录了MySQL服务器,还可以使用SOURCE命令来恢复数据。

SOURCE filename.sql;

fiename.sql必须是绝对路径,比如 C://Files//filename.sql.