长期以来,我们一直将数据保存在项目的代码库中。所有数据都存储在data/sql文件夹下,每个表格都有其自己的create_tablename.sql和data_tablename.sql文件。
现在我们已经将第二个项目部署到Scalr上了,我们意识到这有点混乱。
我们的部署方式:
我们有一个“packageup”脚本集合,它将项目分解为三个归档(数据、代码、静态文件),然后我们将它们分别存储在S3的三个不同桶里。
每当角色启动时,它会下载其中一个文件(根据角色:数据、nfs或web),然后“unpackage”脚本会为每个角色设置一切,将数据加载到mysql中,设置nfs等。
我们这样做是因为我们不想保存服务器镜像,我们总是从基础实例开始,使用各种内部构建的脚本从头安装所有内容。启动时间不是问题(我们可以在9分钟内准备好可用的农场)。
问题是,在尝试设置新的开发版本时,查找正确版本的数据库非常麻烦(在任何时候,我们都有大约4个开发版本的项目)。此外,随着sql文件的总计约为500mb,git在进入生产阶段后开始出现问题。
问题是:
其他人是如何管理数据库的呢?我一直在寻找一些使从生产中取出数据变得容易,并将数据从开发中迁移到生产中的工具,但并没有找到。