Mysql教程

16.3数据库迁移

数据库迁移就是指将数据库从一个系统移动到另一个系统上。数据库迁移的原因是多种多样的。可能是因为升级了计算机,或者是部署开发的管理系统,或者升级了MySQL数据库。甚至是换用其他的数据库。根据上述情况,可以将数据库迁移大致分为3类。这3类分别是在相同版本的MySQL数据库之间迁移、迁移到其他版本的MySQL数据库中和迁移到其他类型的数据库中。本节将为读者介绍数据库迁移的方法。

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

相同版本的MySQL数据库之间的迁移就是在主版本号相同的MySQL数据库之间进 行数据库移动。这种迁移的方式最容易实现。本小节将为读者介绍这方面的内容。

相同版本的MySQL数据库之间进行数据库迁移的原因很多。通常的原因是换了新的机器,或者是装了新的操作系统。还有一种常见的原因就是将开发的管理系统部署到工作机器上。因为迁移前后MySQL数据库的主版本号相同,所以可以通过复制数据库目录来 实现数据库迁移。但是,只有数据库表都是MyISAM类型的才能使用这种方式。

最常用和最安全的方式是使用mysqldump命令来备份数据库。然后使用mysql命令将备份文件还原到新的MySQL数据库中。这里可以将备份和迁移同时进行。假设从一个名hostl的机器中备份出所有数据库,然后,将这些数据库迁移到名为host2的机器上。命令如下:

mysqldump -h name1 -u root -password=password 1 -all-databases |
mysql -h host2 -u root -password=password2

其中,.“|”符号表示管道,其作用是将mysqldump备份的文件送给mysql命令;“--password=passwordl” 是 namel 主机上 root 用户的密码。同理,password2 是 name2 主 机上的root用户的密码。通过这种方式可以直接实现迁移。

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

不同版本的MySQL数据库之间进行数据迁移通常是MySQL升级的原因。例如,原来很多服务器使用4.0版本的MySQL数据库。5.0的版本推出以后,改进了4.0版本的很多缺陷。因此需要将MySQL数据库升级到5.0版本。这样就需要进行不同版本的MySQL 数据库之间进行数据迁移。

高版本的MySQL数据库通常都会兼容低版本,因此可以从低版本的MySQL数据库 迁移到高版本的MySQL数据库。对于MySIAM类型的表可以直接复制,也可以使用 mysqlhotcopy工具。但是lnnoDB类型的表不可以使用这两种方法。最常用的办法是使用mysqldump命令来进行备份,然后,通过mysql命令将备份文件还原到目标MySQL数据 库中。但是,高版本的MySQL数据库很难迁移到低版本的MySQL数据库。因为高版本 的MySQL数据库可能有一些新的特性,这些新特性是低版本MySQL数据库所不具有的。 数据库迁移时要特别小心,最好使用mysqldump命令来进行备份,避免迁移时造成数据丢失。

16.3.3 不同数据库之间迁移

不同数据库之间迁移是指从其他类型的数据库迁移到MySQL数据库,或者从MySQL 数据库迁移到其他类型的数据库。例如,某个网站原来使用orade数据库,因为运营成本 太高等诸多原因,希望改用MySQL数据库。或者,某个管理系统原来使用MySQL数据库,因为某种特殊性能的要求,希望改用oracle数据库。这样的不同数据库之间的迁移也经常会发生。但是这种迁移没有普通适用的解决办法。

MySQL以外的数据库也有类似mysqldump这样的备份工具,可以将数据库中的文件 备份成sql文件或普通文本。但是,因为不同数据库厂商没有完全按照SQL标准来设计数据库。这就造成了不同数据库使用的SQL语句的差异。例如,微软的SQL Server软件使用的是T-SQL语言。T-SQL中包含了非标准的SQL语句。这就造成了 SQL Server和MySQL 的SQL语句不能兼容。

除了SQL语句存在不兼容的情况外,不同的数据库之间的数据类型也有差异。例如,SQL Server数据库中有ntest,Image等数据类型,这些MySQL数据库都没有。MySQL持的ENUM和SET类型,这些SQL Server数据库不支持。数据类型的差异也造成了迁移的困难。从某种意义上说,这种差异是商业数据库公司故意造成的壁垒。这种行为是阻碍 数据库市场健康发展的。

但是,不同数据库之间的迁移并不是完全不可能。Windows操作系统下,通常可以通过MyODBC来实现MySQL与SQL Server之间的迁移。MySQL迁移到Oracle时,需要使 用Mysqldump命令导出sql文件,然后,手动更改sql文件中的CREATE语句。如果读者想广解更多数据库之间迁移的解决方法,可以访问网站http://tech.ccidnet.con/zt/qianyi/.


关注微信获取最新动态