数据库原理与应用 第 10 章 · 第三节
课程 › 第 10 章 › 第三节 mysql 还原登录后还原迁移三种迁移 版式
第 10 章 数据库备份还原和日志管理 · 第三节

还原与迁移

用 mysql 命令还原,登录服务器后还原,三种情况的数据库迁移
本 节 知 识 点
  1. 11用 mysql 命令还原(例 10-12)
  2. 12登录服务器后还原
  3. 13数据库迁移
  4. 14三种迁移的做法
11
第 10 章 · 第三节 · 课件第 18、19 页合并重做

用 mysql 命令还原(例 10-12)

还原用 mysql 命令,方向与备份相反。

10.3 MySQL 数据库还原课件第 18、19 页合并

用 mysql 命令还原(例 10-12)

mysql -u 用户名 -p [数据库名] < 文件名.sql
方向相反
操作写法
备份mysqldump … > 文件
还原mysql … < 文件
  • 备份文件中是 CREATE、INSERT 等语句,mysql 命令把这些语句逐条执行一遍,数据就回来了
要不要写库名
备份时还原时
用了 --databases 或 --all-databases不写库名,文件中有建库语句
只写了库名先建库,命令中写库名
例 10-12 的正确写法
mysql -u root -p teachingback < d:/teaching_backup.sql
还原用 mysql,不用 mysqldump。库 teachingback 要先用 CREATE DATABASE 建好,否则报错 1049。

练一练

文件用 mysqldump -u root -p teaching 备份。执行 mysql -u root -p < 文件,结果是?
  1. A自动建库并还原
  2. B报错 1046,没有选择数据库
答案 B

文件中没有 CREATE DATABASE 和 USE。要先建库,再在命令中写上库名。

实 验

实验 1-5 还原到另一个数据库

实 验

实验 1-6 删除数据库后还原

12
第 10 章 · 第三节 · 课件第 20、21 页合并重做

登录服务器后还原

连接服务器以后,用 source 或在 Workbench 中运行脚本。

10.3 MySQL 数据库还原课件第 20、21 页合并

登录服务器后还原

在 mysql> 中
USE teachingback;
source d:/teaching_backup.sql
  • source 是 mysql 客户端的命令,执行文件中的全部语句
  • 文件中没有 USE 时,先用 USE 选好目标库
在 Workbench 中
  • File → Run SQL Script:选择文件,Default Schema Name 选目标库,点 Run
  • Server → Data Import:选 Import from Self-Contained File,指定 Default Target Schema,点 Start Import
  • 也可以 File → Open SQL Script 打开文件,选好默认库后执行
  • Workbench 不支持 source 命令

重 点

文件中没有 USE 语句时,要先选好目标库,否则报错 1046。

实 验

实验 1-7 用 Workbench 运行备份文件

13
第 10 章 · 第三节 · 课件第 22 页

数据库迁移

换服务器、升级版本、换数据库产品,都需要迁移。

课件第 22 页

重 点

MySQL 之间迁移最简单,换成其他数据库产品最麻烦。

14
第 10 章 · 第三节 · 课件第 23、24、25 页合并重做

三种迁移的做法

版本相同可以复制数据目录,其他情况先导出再导入。

10.4 数据库迁移课件第 23、24、25 页合并

三种迁移的做法

情况做法要注意
版本相同的 MySQL 之间停止服务,把数据目录复制到新机器的对应位置。也可以用 mysqldump 备份后还原复制之前必须停止服务
版本不同的 MySQL 之间备份原库,卸载旧版本,安装新版本,在新版本中还原高版本兼容低版本,注意默认字符集的差别
MySQL 与其他数据库之间用迁移工具转换。Workbench 的 Migration Wizard 可以把 SQL Server 等数据库迁移到 MySQL数据类型、SQL 语法不完全相同,要逐项转换
  • 数据目录:Linux 中一般是 /var/lib/mysql,Windows 中是 C:\ProgramData\MySQL\MySQL Server 8.0\Data,执行 SHOW VARIABLES LIKE 'datadir' 可以查到
  • 不同版本、不同产品之间迁移,一般都是先导出为 SQL 语句,再导入

MySQL Migration Toolkit 早已停止开发,现在由 Workbench 的 Migration Wizard 代替。

想一想

为什么复制数据目录之前,一定要先停止 MySQL 服务?

实 验

实验 1-5 还原到另一个数据库

保山学院·人工智能教研室·曹鼎鼎