我是一个相对新手的DevOps。尝试为持续集成(CI)组织我的项目时,我面临着一个问题,但我还没有找到解决方案。我想知道在我的设置中管理数据库文件的最佳方式,以便开发人员和Jenkins都可以访问最新版本的DB。
类似的问题已经在各种线程中提及,例如下面的链接。但没有一个回答了我特定情况下的问题。
有人建议使用Dropbox或其他工具随时访问数据库。这是最好的方法吗?如果是,那么在Dropbox上应该保存什么?实际的数据库(*.db)文件和文件夹?在MySQL中,这些文件被集中保存在MySQL的/data/文件夹中,我不知道如何将它们存储在另一个文件夹(如Dropbox)中。
其他人建议保留DB的转储。这个过程应该是什么样的?在数据库每日更改后生成转储,并将.txt转储文件保存在Dropbox上?Jenkins如何从这些转储文件中重新创建DB?
类似的问题已经在各种线程中提及,例如下面的链接。但没有一个回答了我特定情况下的问题。
设置
这是我的设置:
- 语言: Python 3.5 (带有单元测试等)
- 数据库: MySQL - 数据每天更新一次(不包括架构)
- 版本控制: Git
- 代码托管: Bitbucket
- 开发操作系统: Windows 10
- CI机器: Amazon AWS EC2 运行 Linux (Ubuntu 16.04.1)
- CI工具: Jenkins
我已经设置了CI,以便每当我更新origin/master时,Jenkins就在AWS机器上运行测试。
编辑 为了澄清我的数据库是什么,假设它是某种每日销售数字或每日市场更新。我有一个用于每天更新数据库的代码,另一个程序用于对其进行某种数据分析。
问题
我不关心数据库的版本控制。换句话说,我不在乎我的数据库两天前是什么样子。然而,由于我的数据库每天都会更新,我希望不同的开发系统以及Jenkins在每次运行测试时都能访问到最新的数据库。根据我目前了解到的内容,把数据库包含在Git存储库中并不是好的做法(我也不想这样做,因为我不关心它的更改跟踪)。所以问题是,我应该如何存储我的数据库并将其集成到我的项目中?有人建议使用Dropbox或其他工具随时访问数据库。这是最好的方法吗?如果是,那么在Dropbox上应该保存什么?实际的数据库(*.db)文件和文件夹?在MySQL中,这些文件被集中保存在MySQL的/data/文件夹中,我不知道如何将它们存储在另一个文件夹(如Dropbox)中。
其他人建议保留DB的转储。这个过程应该是什么样的?在数据库每日更改后生成转储,并将.txt转储文件保存在Dropbox上?Jenkins如何从这些转储文件中重新创建DB?