如何为小型Web团队设置本地数据库开发过程?
背景 我正在为一个由约4位程序员和4位设计师组成的小型Web团队创建一个新的开发过程,并有望在未来发展该团队。我们的产品是一个中央应用程序,可为我们设计和托管的客户网站提供支持。 以前,我们都通过FTP在开发服务器上使用单个开发数据库进行工作。有效” *了一段时间,但我们正在进入一个新的发展方向,所以它是成熟的时间我们的进程。 我们使用Percona Server 5.5,但这应该是数据库不可知的,其思想是保持低成本。 目标: 我正在考虑为数据库开发创建一个持续集成(CI)流程,请注意以下几点: 开发人员拥有本地数据副本以针对其运行开发代码 能够将数据库结构回滚到以前的变更集 能够将新功能架构更改与架构设计修订更改分开 能够在本地修改数据库结构以进行测试 初始概念 我已经在下面使用SVN和LiquiBase勾勒出了一个过程,尽管它完全删除了#4。 从主干创建一个“开发”分支 中央“开发”数据库服务器从“开发”分支运行 本地开发人员被设置为开发分支的奴隶(#1上面提供) liquibase变更集定期提交给开发分支,该分支执行提交后挂钩以更新中央开发数据库(它将滴流到作为该开发服务器的从属服务器运行的本地计算机)(liquibase #2上面提供了) 当功能或模式修订准备好进行质量检查时,DBA(我)将把适当的更改从开发分支合并到主干中。此操作将创建一个SQL脚本以应用于暂存数据库服务器。 登台服务器应反映TRUNK,该结构应与Production具有相同的结构,以及质量检查中的更改 在登台服务器上执行sql脚本后,请对更改进行一些质量检查。 如果一切看起来不错,请标记结构。这将生成.sql脚本,以供DBA在生产环境中手动运行(如果需要,请在非高峰时间运行) 此过程要求所有开发人员都在同一个“开发”分支下运行,这意味着在任何给定时间仅存在一个数据库模式版本(不确定我是否需要此版本)。 这也意味着对模式的任何更改都无法在本地进行测试,如果操作不当,可能会影响其他开发人员。在我们的环境中,开发人员可能会添加新表,但很少修改现有结构。作为DBA,设计修复工作由我完成。但是无法在本地测试修复程序是我最大的困扰。 如何调整上述过程以允许本地开发,同时仍保持数据的相对最新副本(如我建议的过程中的复制所提供的那样)?我不需要直到上周的最新数据。 * “有效”是指足够,但是PITA。