跳到主要内容

任务二 使用MYSQLDUMP命令进行备份

知识点​

1. 什么是MYSQLDUMP?它有什么特点?​

答:MYSQLDUMP命令是MySQL提供的实现数据库备份的工具,在Windows控制台的命令行窗口中执行,存放在MySQL安装目录的Bin文件夹下。

MYSQLDUMP采用SQL级别的备份机制,它将数据表导出成SQL脚本文件,该文件包含多个CREATE和INSERT语句,使用这些语句可以重新创建表和插入数据。在不同MySQL版本之间升级时相对比较合适,是最常用的备份方法。

2. MYSQLDUMP常用参数有哪些?​

答:MYSQLDUMP常用参数包括:

  • --all-databases:备份所有数据库
  • --databases dbname:备份某个数据库
  • --lock-tables:锁定表
  • --lock-all-tables:锁定所有的表
  • --events:备份事件的相关信息
  • --no-data:只备份DDL语句和表结构,不备份数据
  • --master-data=n:备份同时导出二进制日志文件及其位置(n=1保存为CHANGE MASTER语句,n=2保存为注释)
  • --routines:将存储过程和存储函数备份
  • --single-transaction:实现热备份
  • --triggers:备份触发器

3. 如何备份一个完整的数据库?​

答:使用MYSQLDUMP备份单个数据库的语法格式:

mysqldump -u用户名 -h主机名 -p[密码] [--databases] 数据库名 > 备份文件名.sql

参数说明:

  • -p参数用来引导密码,密码可以在此处指定,也可以在后续输入
  • 若没加--databases参数,则备份文件中不包含创建数据库的语句,还原时需要向已存在的数据库中还原
  • 执行时不需要登录到MySQL数据库,直接在DOS命令提示符窗口中执行

4. 如何备份多个数据库?​

答:使用MYSQLDUMP备份多个数据库的语法格式:

mysqldump -u用户名 -h主机名 -p[密码] --databases 数据库名1 数据库名2 ... > 备份文件名.sql

例如:mysqldump -uroot -hlocalhost -p --databases student book > D:\db.sql 将student和book两个数据库备份到D盘的db.sql文件中,文件中包含创建这两个数据库及其表的SQL语句。

5. 如何备份所有数据库?​

答:使用--all-databases参数备份所有数据库,语法格式:

mysqldump -u用户名 -h主机名 -p[密码] --all-databases > 备份文件名.sql

例如:mysqldump -uroot -hlocalhost -p --all-databases > D:\alldb.sql 将服务器中所有数据库备份到D盘的alldb.sql文件中。

使用--all-databases备份所有数据库时,备份文件中包含CREATE DATABASE语句和USE语句,还原时不需要创建数据库和指定操作数据库。

6. 如何备份数据库中的一个或多个表?​

答:使用MYSQLDUMP备份指定表的语法格式:

mysqldump -u用户名 -h主机名 -p[密码] 数据库名 表名1 [表名2 ...] > 备份文件名.sql

例如:mysqldump -uroot -hlocalhost -p student Score Course > D:\stuDB_sql 将student数据库下的Score表和Course表备份到D盘的stuDB_sql文件中。

7. --databases参数的作用是什么?加与不加有什么区别?​

答:--databases参数指定要备份的数据库:

  • 加--databases:备份文件中包含CREATE DATABASE语句和USE语句,还原时不需要预先创建数据库
  • 不加--databases:备份文件中不包含创建数据库的语句,还原时需要先创建并选择一个已存在的数据库才能还原

8. --no-data参数的作用是什么?​

答:--no-data参数用于只备份表结构(DDL语句),不备份数据。适用于只需要数据库结构而不需要数据的场景,如在测试环境创建与生产环境相同结构的空表。

9. --single-transaction参数的作用是什么?​

答:--single-transaction参数用于实现热备份,适用于InnoDB存储引擎。它可以在不锁定表的情况下获取一致性备份,备份期间数据库可以正常读写。这对于不能停机的生产环境非常重要。

10. --routines和--triggers参数的作用是什么?​

答:

  • --routines:将存储过程和存储函数一起备份到SQL脚本文件中
  • --triggers:将触发器一起备份到SQL脚本文件中

默认情况下MYSQLDUMP会备份触发器但不备份存储过程和函数,如果需要备份存储过程和函数,需要显式指定--routines参数。

11. MYSQLDUMP备份生成的SQL文件包含什么内容?​

答:MYSQLDUMP备份生成的SQL文件包含:

  • MySQL版本信息
  • 备份的主机名
  • CREATE DATABASE语句(如果使用了--databases或--all-databases)
  • CREATE TABLE语句(创建表结构)
  • INSERT语句(插入数据)
  • 其他对象的定义语句(如存储过程、触发器、视图等,取决于参数设置)

12. 如何获取MYSQLDUMP的完整参数列表?​

答:运行帮助命令 mysqldump --help 可以获得特定版本的完整参数列表。MYSQLDUMP提供了许多参数,包括用于调试和压缩的参数,实际使用时可根据需要选择合适的参数组合。