将 PHP 应用程序从 MySQL 移动到 DB2,第 1 部分: 为您的迁移做好准备

从 IBM intranet 应用程序案例研究得到的启示

了解为何将 PHP 应用程序迁移到 DB2®,如何计划迁移,如何执行,如何支持,如何根据 IBM intranet 应用程序案例研究的经验处理潜在风险。这个 4 部分的系列文章分享了成功的关键任务型 PHP intranet 应用程序从 MySQL 迁移到 DB2 的经验,这个案例被 IBM 全球 4,000 名用户使用,支持 ibm.com 内容制作。第 1 部分说明了迁移的准备步骤。

Yan Li Mu, IT 架构师, IBM

Yan Li Mu 是在中国大连工作的 IT 架构师。他在 web 应用程序开发方面有超过八年的经验,特别是在 Java EE 技术、PHP 和数据库开发方面。



Mark Nusekabel, 高级 IT 架构师, IBM

Mark Nusekabel 是居住在佛罗里达地区 Tampa Bay 的 IBM/Open Group 高级认证 IT 架构师,他在信息技术方面有二十多年的经验,目前他正在使用 JavaScript、PHP、Java 和 DB2 构筑内部工具。他拥有电子商务解决方案、Java 和 XML 方面的认证。



Daniel Krook, 软件工程师, IBM

Daniel Krook 是大纽约地区的 IBM/Open Group 高级认证 IT 专家。他有十多年的 web 应用程序开发经验,目前他正在使用 Java EE、DB2、REST 和移动技术为 IBM 构建云基础架构。他拥有 PHP、Java EE、BlackBerry、DB2 和 Solaris 的认证,还为 IBM developerWorks 撰写了 PHP 相关的文章,合作撰写了 IBM Redbook “Developing PHP Applications for IBM Data Servers”。



2011 年 3 月 24 日

免费下载:IBM® DB2® Express-C 9.7.2 免费版 或者 DB2® 9.7 for Linux®, UNIX®, and Windows® 试用版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

系列简介

MySQL 是当前最常用的数据库服务器,它和 PHP 编程语言一起用于构建动态 web 应用程序。但是,DB2 是另一个 PHP 支持的流行数据库,比 MySQL 有明显优势,这使得它最终成为许多应用程序的理想之选。

该系列文章说明了为什么将 PHP 应用程序迁移到 DB2,如何准备迁移,如何执行,如何支持,如何根据作者最近的迁移经验处理潜在风险。本文提供了许多代码和配置样例,以及帮助项目顺利进行的资源指南。

使用成功的真实转换中得来的示例和经验,您将会了解到这是一个简单的项目,有充分的文档记录,并提供显而易见的好处。

该 4 部分的系列文章分享了生产级,关键任务型 PHP intranet 应用程序成功从 MySQL 迁移到 DB2 的经验,该案例被 IBM 全球 4,000 名用户使用,支持 ibm.com 内容制作。

  • 第 1 部分说明了迁移准备的步骤。
  • 第 2 部分说明了迁移数据库的步骤。
  • 第 3 部分说明了转换 PHP 代码的步骤。
  • 第 4 部分说明了部署和支持应用程序的步骤。

您将会了解什么

该系列文章的目的就是让您了解将 PHP 应用程序从 MySQL 迁移到 DB2 通常需要什么,什么样的资源对您有帮助,以及在 2010 年初 IBM 项目团队如何完成任务。

如果您对 MySQL 到 DB2 的迁移做过调查,那么您可能已经基于产品资料了解了 DB2 提供的价值,性能基准,您在 DB2 文档中读到的功能,或者 IBM Redbooks®中的比较,包括 MySQL to DB2 Conversion Guide(见 参考资料)。

您可能还知道 DB2 Express-C 是免费的、功能齐全的关系数据服务器,可在 Cloud 或 Amazon EC2 中使用 IBM Smart Business Development and Test 能够轻松安装和评估。这些资料的连接可以在 参考资料 部分找到。

本文为您提供了实际的迁移如何成功执行的真实例子,该例子是 2010 年 IBM 常用的 PHP intranet 应用程序,用于支持 ibm.com Web 网站各部分中发布的内容的日常管理。

在阅读完本系列之后,您将能够完成类似迁移的案例,了解需要执行的工作项目的时间和依赖关系,预测潜在风险,了解在何处寻找对各个步骤的支持。所有这些将会让您更有信心选择 DB2,为当前构建于 MySQL 上的 PHP 应用程序中最大程度地利用它。

未提及的内容

该系列文章旨在分享从 MySQL 到 DB2 的内部 IBM 迁移中得到的经验,为您提供执行类似迁移可用的资源信息。这是一个全面的、适用于所有场景的迁移指南。

为了决定正确的方法,请参阅 MySQL to DB2 Conversion Guide 或者联系 Software Migration Project Office(SMPO)获取免费的迁移估算。链接在 参考资源 部分。


案例研究简介

ibm.com 团队 7 年多来一直在使用 Project Tracking Tool (PTT) 支持销售和经销团队在 ibm.com 发布的信息的生命周期。这就是我们在案例研究中迁移的应用程序。

PTT 已经由最初的支持小组织的部门工具,发展为向超过 4,000 名全球用户提供服务的时间跟踪和项目管理应用程序。

PTT 在许多方式下都类似于构建在 LAMP(Linux,Apache,MySQL 和 PHP)平台的其他 intranet 工具:一位积极的开发人员看到了迫切的解决方案需求,这些业务方案需要能够快速修改和演化,随着用户群不断扩大能够支持更多新需求,所以他利用一个周末开发了 web 应用程序。然而,正是这个前期让它大受欢迎的有价值的特性后来提出了挑战。

迁移的动因

尽管应用程序对不断变化的需求在性能和响应上有不错的表现,但是核心业务开始固化为一个成熟、稳定、战略性的端到端的进程。有了这个里程碑,应用程序自身有了一系列明确的需求,可靠的工作流程管理最佳实践,且它所包含的数据在量和值上都不断增长。简而言之,PTT 已经牵扯众多,它不再只是一个便利的情景应用程序,而是我们构建核心业务的支柱。

除了使 PTT 对组织的日常运营更有价值、更成熟之外,还需要进行更大范围的架构变更来更好地集成 PTT 和 web 服务及与其交互的数据资源的生态系统。为了支持这个升级的系统设计,对 PTT 制定了全面的面向服务架构(SOA),并且选定了新的商业智能工具来帮助利用 PTT 中的数据,更进一步地改善运营效率。

从 MySQL 迁移到 DB2 的关键动因如表格 1 所示。这些动因的顺序根据它们对利益相关者的重要度加权。

表 1. 预计获益和动因清单
获益说明重要性
度量工具性能和兼容性数据量让 Hyperion Brio desktop 度量工具难以招架。指定用于解决问题的替代品,Cognos®,只与 Linux 上的 DB2 兼容(MySQL 只能在 Windows 上使用 ODBC 支持)。为了及时作出更智慧的决定,我们需要迁移。重要
IBM 中间件的兼容性为了支持面向服务架构(SOA),我们也要考虑 IBM 产品组合内与其他工具和应用程序的兼容性,例如与 FileNet® 管理内容制作,与 ILOG JRules 编排业务流程。
可用的 DB2 专业知识团队已经构建了足够多的 MySQL 经验,DB2 文档,而且在 IBM 中还有大量的经验和支持。我们也开始在学术社区了解更多 DB2 经验,这些人不断成为应用程序支持人员的来源。
数据完整性我们的 MySQL 数据库表格基于非事务性 MyISAM 引擎。考虑到与日俱增的值和日常事务量,事务动作、存储过程和触发器对改善数据完整性和管理是很重要的。虽然 MySQL 在替代存储引擎中提供了许多此类功能,DB2 的功能还是更成熟。
主机操作和成本现在我们在数据中心内支持应用程序。万一我们决定要迁移到一个替代的 IBM 主机提供者,或者利用预配置 IBM 云服务器映像,就需要匹配一个通用的、已测试的配置文件来保持我们的支持成本较低。
许可成本Oracle 每年收取的 MySQL 企业级支持费用为 600 到 5,000 美元。作为 IBM 雇员,DB2 许可成本不是问题。外部客户可以以低于 Oracle 的报价获得 DB2 Express 支持许可。一个 DB2 定期许可需要花费大约 2,000 美元。

当然还有其他获益是我们在迁移到 DB2 时往往想到的,它包括以下内容:

  • 自我优化和配置
  • 高度的可扩展性
  • 细粒度的安全性
  • 本地 XML 存储
  • 数据压缩

这些考虑因素在迁移时并不是对我们的业务目标最重要的。

评估成本效益分析

在迁移评估中,我们确定了很多需要迁移战略的风险,以此来保证迁移的成功。在所有迁移计划中,现状必须作为判断是否迁移的可用的解决方案客观地予以分析。您寻求的获益要大于在自己的应用程序或者网站环境中所发现的风险的潜在影响。

表 2 说明了执行迁移时我们确定的高可能性和高影响风险,以及迁移战略。

表 2. 迁移中的风险及其迁移战略清单
风险说明缓解操作
将错误引入到稳定的代码库和数据库结构我们用近 8 年的时间,针对不断变化的需求创建了一个稳定的、高度定制的应用程序。虽然它并不完美,添加新功能时常有回归错误,但总体上它是稳定的,使利益相关者满意。仔细地记录重要功能,用它来准备单元、组件和用户验收测试。
对当前硬件和中间件基础架构的变更迁移将是对当前备份和复制架构的重大变更。了解新平台需要的功能,创建新的基础架构去匹配或者超越它。
从新功能开发到基础架构迁移的资源转换有了更多进行这一基础架构投资的资源,我们在新功能上就能花费较少的时间。从功能的角度考虑应用程序的成熟度,这并不是主要关注的焦点。在一年中业务没有高强度使用系统、或者不需要开发关键新功能时执行迁移。

表 3 显示了我们留在 MySQL 上可能会遇到的有很大影响的风险清单。

表 3. 支持迁移的风险清单
风险说明
无法最大化业务的灵活性没有高性能的度量工具推动商业智能和运营效率,我们就会更落后,而我们每天的报告和决策过程就会更长,数据量更大。
数据完整性与日俱增的威胁MySQL 提供了事务存储引擎,我们的应用程序构建在轻量级 MyISAM 表类型上。迁移到事务存储引擎或者不同的数据服务器供应商对改善数据完整性和治理至关重要。
对 Oracle 支持的依赖随着 Oracle 在 2009 年收购 Sun,未来 MySQL 支持更加不明确。此外,Oracle 在 2007 年还收购了 Hyperion Brio 度量工具。

通过仔细地识别风险、评估获益并且高效地利用资源,例如我们可用的工具和文档,我们就更相信这值得我们投入时间和资源。


构建团队成员培训

一旦决定迁移,我们就开始计划工作内容,了解它们的依赖性和时间表,并分配资源。这些工作的关键就是逐渐构建团队成员对 DB2 的知识,编录迁移相关的材料,巩固之前的迁移中得来的经验。我们也会评估能够帮助我们加速迁移工作的自动迁移工具或者其他开发环境。

在应用程序迁移之前,我们要规划所需的软件和硬件基础架构变更,并且决定我们是否在数据层变更之前,进行其他 PHP 基础架构改善。

完成了这些初步工作,我们就能够制定出一个相对准确的项目计划。

构建团队成员对 DB2 的知识

因为我们的团队支持应用程序而不是 PTT,许多团队成员都拥有基础的 DB2 知识,这些知识我们往往用在其他工具的数据库平台。对那些刚接触 DB2 的成员,以下的介绍材料对于开始学习产品很有帮助,如在 参考资料 部分所示。

  • developerWorks 上的 Recommended reading list:DB2 for Linux,UNIX,and Windows application development
  • developerWorks 上的 Recommended reading list:DB2 for Linux,UNIX,and Windows database administration
  • IBM Press 出版的 Understanding DB2, Learning Visually with Examples
  • developerWorks 上的 IBM DB2 e-kit for Database Professionals

您可能会发现,越正式地学习讲师引导的课程,就越有帮助。查看 参考资料 部分,了解更多详细信息。

构建团队成员对迁移的知识

从其他应用程序服务器、数据服务器和操作系统迁移到 IBM 软件涉及到大量信息。特别是,IBM Redbooks 发布了一系列的迁移指南。我们的主要信息源就是新修订的 MySQL to DB2 Conversion Guide(见 参考资料)。这个免费指南在 2009 年 12 月更新,当时我们正在初步规划迁移。它是我们从 MySQL 迁移到 DB2 的信息的主要来源。

为了收集 PHP 特定的迁移信息,我们查看了其他 IBM Redbook,Developing PHP Applications for IBM Data Servers,以及其中一个作者在迁移一个独立软件供应商的旗舰应用程序过程中习得的经验。Daniel Krook 的观察都记录在他的博客中名为 Writing SQL for both MySQL and DB2 的文章中(见 参考资料)。我们还参考了推荐读物清单以及其他 DB2 产品文档。

根据对 DB2 的其他项目经验,我们不会使用 Software Migration Project Office (见 参考资料),尽管它可能是其他迁移项目的适当选择。它们可能会对您的迁移场景进行免费的评估。


评估迁移工具

在 IBM Cloud 中学习,实验,开发和测试

迁移时,IBM Smart Business Development and Test on the IBM Cloud 平台依然是免费的公共测试版。我们能够学习 DB2 实践,使用预配置的 DB2 服务器映像在云环境中无风险地进行实验。它现在是一个缩短应用程序迁移时间范围的企业级平台,可以使用它快速获得 DB2 经验。如果我们目前没有打算迁移,这个云还将是我们的数据库和应用程序迁移战略的关键部分。

您可以在服务选项页了解更多有关这个云的软件数据包和技术功能。

了解了迁移中涉及的常见任务之后,是时候评估能够加速迁移的自动工具了。从 MySQL 成功地迁移到 DB2 有多种方法,我们要决定哪种方法最适合自己。我们决定使用 IBM Data Movement Tool (DMT) 和 Rational® Software Architecture (RSA)。其他工具,包括 InfoSphere™ Data Architect 和 Optim™ Development Studio,可用于数据建模和过程开发。但我们根据其简易性和我们对 Rational 工具的熟悉度选择工具。

IBM Data Movement Tool
自动化 DDL 输出、数据库对象转换和数据移动。这个工具以其更简单的工作流程替代了较老的 Migration Toolkit。
Rational Software Architect
详细的可视化数据建模、逆向工程设计和调整。这个工具可用于创建视图,存储过程,用户定义的功能和触发器。

评估硬件,中间件和应用程序迁移

除了考虑应用程序软件迁移之外,我们还要借机执行硬件升级,并正式确定 PHP 开发和生产环境。我们有之前自定义配置和构建的硬件,想要移动到一个有图形用户界面的受支持和预打包的二进制 PHP 发行版。Zend Server 除了简化 PHP 和扩展升级以外,还为我们提供了缓存、监视以及其他配置功能。它使用经过良好测试的 PHP 库进一步实现更加面向对象的模型、视图和控制器(MVC)架构,因为它包含强大的 Zend Framework。


制定项目计划

收集完材料、决定了要执行的工作内容、安排时间表、决定其依赖关系之后,我们就创建一个计划来决定所需的时间和资源。表 3 显示了我们的高级计划。

我们估计,一个项目由包含 1 位架构师、2 位开发人员和 1 位项目经理的团队完成需要大约 3 个月时间,可以迁移 150 个表格,10 GB 的数据和数百 PHP 文件。

表 4. 从 MySQL 迁移到 DB2 的高级项目计划
阶段任务小时
准备创建任务和估算清单16
计划,收集和执行培训需求48
执行应用程序评估和系统规划64
转换数据库结构评估要采用的新 DB2 功能16
决定需要迁移的数据结构的范围16
将数据库 DDL 从 MySQL 转换为 DB240
创建 DB2 数据库和对象24
迁移数据复查要迁移的数据的范围。8
迁移数据40
迁移权限8
升级应用程序转换 SQL 语句32
实现新的并发和光标选项16
实现事务、用户定义的功能、存储过程16
转换数据库功能名称和参数40
决定功能不映射的代码段,制定解决方案32
设置数据库管理确定首选的工具集、命令行或 GUI8
映射和转换备份过程16
映射和转换复制过程16
实现任何自动数据保留规则16
测试和优化根据当前功能创建用户验收测试16
定位性能瓶颈,并在应用程序中进行任何逻辑变更24
与设计顾问、性能监视器和索引顾问一同优化数据库32
部署确认 PHP 模块和主机环境得到正确配置24
完成集成测试和用户验收40
持续支持确认功能按照预想执行16
响应数据库健康警报16
解决用户提出的性能问题24

总结

一旦了解了需要执行的工作和项目的时间范围,我们就在项目的 4 个阶段匹配我们所有的资源。表 5 将这些迭代执行的各个连续阶段连接到我们可用的出版物、工具和基础架构。这 4 个阶段也对应该系列文章的 4 个部分。

表 5. 迁移的阶段和资源
阶段资源
准备
  • IBM Press Books
  • SMPO
  • eKit for DB2 Professionals
  • 推荐读物清单
  • IBM Smart Business Development and Test on the IBM Cloud
数据迁移
  • 数据移动工具
  • Rational Software Architect
  • eKit for DB2 Professionals
  • 推荐读物清单
  • IBM Smart Business Development and Test on the IBM Cloud
代码迁移
  • PHP 扩展文档
  • PHP Redbook
  • ISV 经验
  • 推荐读物清单
  • IBM Smart Business Development and Test on the IBM Cloud
部署
  • 成本削减战略
  • developerWorks 利用系列
  • 读物清单
  • 推荐读物清单
  • IBM Smart Business Development and Test on the IBM Cloud

图 1 图解了表 5。

图 1. 从 MySQL 迁移到 DB2 的阶段和资源映射
从 MySQL 迁移到 DB2 的阶段和资源映射

预览迁移结果:Spoiler 警报!

2009 年末,我们最终确定了将应用程序从 MySQL 迁移到 DB2 的计划。幸运的是,迁移方法有充分的记录,尽管还有许多在某种情况下适合的其他可用的选项。您可以在 MySQL to DB2 Conversion Guide 等资源中了解其他替代方案。本文说明了我们使用的计划和帮助我们成功的工具。

2010 年,应用程序成功迁移,它帮助我们的业务加速工作的量和质,这使客户非常满意。

对于我们,这个迁移对我们的大多数终端用户来说是一个无缝体验,这也是我们成功的真正标志。应用程序仍旧工作如常,但是我们现在拥有更好的数据完整性,改善了业务对数据洞察的响应能力,扩展了应用程序在 IBM 基础架构中的潜在集成,这扩展了未来可用的软件多样性。


结束语

该系列文章的目标就是让您了解我们项目团队将 PHP 应用程序从 MySQL 迁移到 DB2 的场景。您还可以了解到什么资源能用于帮助您完成相同的任务,以及我们在 2010 年初如何成功地完成任务。

在该系列的第 1 部分,您:

  • 了解了我们的 IBM intranet 应用程序转换案例研究的原因,风险和获益
  • 从我们的经验中了解了如何收集材料来学习 DB2、了解 MySQL 迁移的必备条件
  • 发现了帮助您执行迁移的工具
  • 看到所有资源如何结合起来,在项目各个阶段为您提供指导。

在本系列的下一部分,您将会了解如何转换数据库结构,并执行数据迁移。

致谢

作者感谢 Leons Petrazickis 和 Ambrish Bhargava,感谢他们对本文的审查和建议。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management, Open source
ArticleID=643064
ArticleTitle=将 PHP 应用程序从 MySQL 移动到 DB2,第 1 部分: 为您的迁移做好准备
publish-date=03242011