首页 > 编程笔记 > MySQL笔记 阅读:50

MySQL数据库迁移的3种场景(含迁移方法,新手必看)

通义灵码
数据库迁移就是把数据从一个系统移动到另一个系统上。数据库迁移有以下原因:
  1. 需要安装新的数据库服务器。
  2. MySQL 版本更新。
  3. 数据库管理系统的变更(如从 Microsoft SQL Server 迁移到 MySQL)。

本节将讲解数据库迁移的方法。

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

相同版本的 MySQL 数据库之间的迁移,就是在主版本号相同的 MySQL 数据库之间进行数据库移动。迁移过程其实就是在源数据库备份和目标数据库恢复过程的组合。

在讲解数据库备份和恢复时,已经知道最简单的方式是通过复制数据库文件目录,但是此种方法只适用于 MyISAM 引擎的表。而对于 InnoDB 表,不能用直接复制文件的方式备份数据库,因此最常用和最安全的方式是使用 mysqldump 命令导出数据,然后在目标数据库服务器上使用 MySQL 命令导入。

【实例 1】将 www.abc.com 主机上的 MySQL 数据库全部迁移到 www.bcd.com 主机上。在 www.abc.com 主机上执行的命令如下:
mysqldump –h www.bac.com –uroot –ppassword dbname | mysql –h www.bcd.com –uroot –ppassword
mysqldump 导入的数据直接通过管道符“|”传给 MySQL 命令,导入到主机 www.bcd.com 数据库中。dbname 为需要迁移的数据库名称,如果要迁移全部的数据库,可使用参数 --all-databases。

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

因为数据库升级等原因,需要将较旧版本 MySQL 数据库中的数据迁移到较新版本的数据库中。

MySQL 服务器升级时,需要先停止服务,然后卸载旧版本,并安装新版的 MySQL,这种更新方法很简单,如果想保留旧版本中的用户访问控制信息,就需要备份 MySQL 中的 MySQL 数据库,在新版本 MySQL 安装完成之后,重新读入 MySQL 备份文件中的信息。

旧版本与新版本的 MySQL 可能使用不同的默认字符集,例如 MySQL 8.0 版本之前,默认字符集为 latin1,而 MySQL 8.0 版本默认字符集为 utf8mb4。数据库中有中文数据时,迁移过程中需要对默认字符集进行修改,否则可能无法正常显示相关数据。

新版本会对旧版本有一定兼容性。从旧版本的 MySQL 向新版本的 MySQL 迁移时:
从新版本向旧版本 MySQL 迁移数据时要特别小心,最好使用 mysqldump 命令导出,然后导入目标数据库中。

不同数据库之间的迁移

不同类型的数据库之间的迁移,是指把 MySQL 的数据库转移到其他类型的数据库,例如从 MySQL 迁移到 Oracle,从 Oracle 迁移到 MySQL,从 MySQL 迁移到 SQL Server 等。

迁移之前,需要了解不同数据库的架构,比较它们之间的差异。不同数据库中定义相同类型的数据的关键字可能会不同。例如,MySQL 中日期字段分为 DATE 和 TIME 两种,而 Oracle 日期字段只有 DATE。

另外,数据库厂商并没有完全按照 SQL 标准来设计数据库系统,导致不同的数据库系统的 SQL 语句有差别。例如,MySQL 几乎完全支持标准 SQL 语言,而 Microsoft SQL Server 使用的是 T-SQL 语言,T-SQL 中有一些非标准的 SQL 语句,因此在迁移时必须对这些语句进行语句映射处理。

数据库迁移可以使用一些工具,例如在 Windows 系统下,可以使用 MyODBC 实现 MySQL 和 SQL Server 之间的迁移。MySQL 官方提供的工具 MySQL Migration Toolkit 也可以在不同数据库间进行数据迁移。

相关文章