很长一段时间以来,我们一直将数据保存在项目的存储库中。我们只是将所有内容保存在 data/sql 下,每个表都有自己的 create_tablename.sql 和 data_tablename.sql 文件。
我们现在刚刚将我们的第二个项目部署到 Scalr 上,我们已经意识到它有点混乱。
我们的部署方式:
我们有一个“打包”脚本集合,将项目拆分为 3 个存档(数据、代码、静态文件),然后我们将它们存储在 S3 上的 3 个单独的存储桶中。
每当一个角色启动时,它会下载一个文件(取决于角色:数据、nfs 或 web),然后“解包”脚本为每个角色设置所有内容,将数据加载到 mysql,设置 nfs 等.
我们这样做是因为我们不想保存服务器图像,我们总是从 vanilla 实例开始,我们使用各种内部构建的脚本从头开始安装所有东西。启动时间不是问题(我们在 9 分钟内就可以使用农场)。
问题是,每当我们尝试设置新的开发构建时,尝试找到正确的数据库版本是一件很痛苦的事情(在任何时候,我们都有大约 4 个项目的开发构建)。此外,一旦我们投入生产,git 就会开始窒息,因为 sql 文件最终总计大约 500mb。
问题是:
其他人如何管理数据库?我一直在寻找可以轻松地将数据从生产环境中转移到开发环境中的方法,以及将数据从开发环境迁移到生产环境中的方法,但没有发现任何问题。