在生产服务器上更新数据库结构的最佳方法?

时间:2016-08-18 20:37:39

标签: php mysql git cakephp

我正在构建一个应用程序,并想知道更新生产数据库的最佳方法是什么。

现在我部署我的代码(通过GIT存储库的CakePHP应用程序)

就像这个教程https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps

一样

但更新数据库结构的方法是什么?不是数据。

让我说我在调试中创建一个新表或更改另一个表中的某些字段,现在我导出查询然后ssh到服务器并连接到MySql并将查询注入数据库。

但我确定必须有另一种不那么复杂的方式。

3 个答案:

答案 0 :(得分:4)

我喜欢写的是一组函数,用于将我的数据转换为新的字段/表格等等。

例如,我最近不得不对存储交易日期的数据库进行更改,因为我在查询过程中存储日期的格式没有正确评估。

  1. 我写了一个PHP函数,为每个字段进行转换 数据库。
  2. 我抓住了实时制作数据库的备份副本。
  3. 我在实时数据库的备份副本上使用干运行测试了我的功能。
  4. 一旦检查完所有,我将我的应用程序/站点置于临时维护模式并抓取另一个实时数据库副本。为了确保我的客户和数据库之间的任何互动都很顺利,并且没有差距。
  5. 我在数据库的副本上运行了函数并重新上传到我的数据库服务器。
  6. 我的网站/应用程序已退出维护模式。
  7. 事先准备好所有事项并进行测试的结果确保只需3-5分钟的部署停机时间。

答案 1 :(得分:0)

数据库迁移就是您所需要的。如果您使用的是CakePHP v2.x,请阅读以下内容:
http://book.cakephp.org/2.0/en/console-and-shells/schema-management-and-migrations.html
如果CakePHP 3.x这个:
http://book.cakephp.org/3.0/en/migrations.html

post-receive挂钩中,您必须设置一些触发器以在生产服务器上运行迁移

答案 2 :(得分:0)

为什么不使用像Cake内置的迁移。这将允许您在本地创建它们,然后当通过git推送代码时,在生产中运行迁移。