我目前正在开展一个项目,我们在当前版本的产品部署在多个客户端站点上。更常见的是,我们不在开发/测试环境中测试和废弃(a.k.a.refactor :)数据库设计。无法跟踪数据库的每个增量更改以创建相应的“迁移文件”。现在,当我们对数据库设计(相对稳定)感到满意时,我们需要将生产数据库更新为当前状态。
我们的生产系统不仅可以发出DROP/CREATE SCHEMA
命令来更新架构(想想可能丢失的工作,包括我的:)所以我们要么编写MySQL转储或应用程序包装器备份数据并将其重新输入数据库。非常麻烦,特别是当多个“客户”不在同一个DB版本时。为客户端的每个版本编写一个都非常麻烦。
那么您在生产中重构数据库的一些最佳实践是什么,特别是当您不仅可以删除该数据但需要重新输入数据并让系统在一些“停机时间”后无缝继续?
如果有任何用途,后端是Java / Restlet和MySQL
答案 0 :(得分:2)
您可以使用书籍Refactoring Databases中描述的数据库重构模式,并查看数据库重构的网站http://databaserefactoring.com/。使用迁移方法,您无需删除并创建数据库。诸如[dbdeploy],[dbmaintain],[ibatis migrator],[liquibase]等工具可以在这里为您提供帮助。