## 导读

数据库迁移就是把数据从一个系统移动到另外一个系统上,常见的数据迁移有以下原因:

- 需要安装新的数据库服务器
- MySQL版本更新
- 数据库管理系统变更(如从 Microsoft SQL Server 迁移到 MySQL)。

## 相同版本的 MySQL 数据库之间的迁移

相同版本的 MySQL 数据库在做数据迁移时,是最容易、最简单、也是成功率最高的一种迁移情况。其迁移过程就是普通的数据备份与数据恢复的操作。

在某些情况下,可以直接通过复制/粘贴 MySQL 的数据文件来完成数据库的迁移,但这种方法不是最稳妥、最安全的。最安全、最常用的方法是使用 mysqldump 命令导出数据,然后在目标数据库服务器使用 mysql 命令导入数据,最终完成整个数据库迁移过程。

实例如下:

功能:将 www.abc.com 主机上的 MySQL 数据库全部迁移到 www.bcd.com主机上,此时只需在 www.abc.com主机上执行:

```mysql
mysqldump -h www.abc.com -uroot -ppassword dbname | mysql -h www.bdc.com -uroot -ppassword
```

说明:mysqldump 命令导出的数据直接通过 管道“ | ”传输给 mysql 命令导入到目标数据库系统;dbname 为迁移的数据库名称;如果需要迁移所有数据库,可使用 --all-databases 参数(即将dbname 改为 --all-databases)。

关于数据库备份/恢复,您可以阅读:**MySQL数据库的手工备份与还原**

## 不同版本的 MySQL 数据库之间的迁移

不同版本的 MySQL 数据库迁移,常指:

> 低版本数据库的数据 → 高版本数据库迁移 (升级)
> 高版本数据库的数据 → 低版本数据库迁移 (降级)

常见的是第一种,数据库版本升级的数据迁移,此情况的数据迁移也简单:

先用 mysqldump 命令备份 MySQL 下的所有数据库,如果希望在新版本(升级后)的数据库中保留旧版本中用户访问控制信息,只需将旧版本中的主mysql 数据库还原到新版本的数据库即可!如果还有其它的数据库,根据需求自行还原即可!

如果是第二种情况,即高版本数据库数据往低版本数据库迁移,此时就要注意版本之间的功能等差异了,如:在 MySQL4.x 中的数据库,大多使用 Iatin 1 作为默认字符集,而在 MySQL 5.x 版本中,默认使用utf8 字符集。此时,如果数据库中函数中文数据,这时就需对字符集进行变更了。

## 不同数据库之间的迁移

不同数据库之间的迁移,是指数据库的类型不一样,比如:

> MySQL → ORACLE 数据库的迁移
> MySQL → SQL Server 数据库的迁移

像此种情况的数据库在做数据迁移时,影响成功率的因素就更多了,比如:数据库之间默认字符集问题,不同数据库使用的开发语言(语法)问题等等。

例如: MySQL 使用的是标准的 SQL 语言,而 Microsoft SQL Server 使用的是 T-SQL 语言,这时就需要注意语法之间的差异了。

此情况的数据迁移难度相对较大、操作相对复杂,不过幸好相关平台推出了一些迁移工具,如:windows下可以使用 MyODBC 工具实现 MySQL 到 SQL Server 数据库的数据迁移。MySQL 官方也提供了 MySQL Migration Toolkit 工具,用于支持不同数据库之间的数据迁移。

最后修改:2021 年 04 月 02 日
如果觉得我的文章对你有用,请随意赞赏