由于我们没有对我们的生产系统良好的升级环境中,我们经常要调试的问题。我们有网络,应用程序和数据库服务器。

你用什么样的保障措施,以避免执行此操作时不小心让你的生产环境中意外更改?


编辑:

应用程序是一个非常复杂的B2B垂直web应用程序。有很多涉及的数据。有些表有近100万条记录。


编辑:

我们有代替分段环境不必镜生产的能力。也有数百个,除了参与实际的数据库数据的数据文件的GB的。


编辑:

我们做使用源代码控制的代码但不能用于存储过程。有在源代码控制一些旧的存储过程,但没有人会保留更新了。

在主要问题是在文件系统上的数据库和数据。

BTW,我在这家公司的顾问,而不是实际的员工。

有帮助吗?

解决方案

最直接的回答是:“不要那样做。”

其他提示

源控制。完全不像一个回滚时事情无可挽回的错误。此外,DIFF可以帮你更改复制到其他生产系统。

新产品发布通过我们的系统家伙去了,程序员和开发人员只能要求让自己的新系统去住,需要审批,以及,我们表明,已经取得每一个变化已经过测试(通过包括所有的快照这是在此版本中的生产请求测试)。

我们维持以前的生产版本的回退在出现问题时。

如果事情打破(他们不应该用正确的测试程序和管理的版本经常这样做),那么我们可以回滚或修补程序。通常,当事情在现场被破坏和修复是小,我们可以修补程序,然后将修复测试做一个适当的测试。

不管,有时事情度日......

仅允许某些帐户写权限,所以你必须登录不同做出改变。

网络服务器上,有两个目录结构,其互为镜像,一个只有一个ID可以写,其他分期目录,每个人都可以写。

数据库服务器上,具有一个生产dB,其中只有一个ID可以写,具有分段分贝,每个人都可以写。临时DB可具有恢复到它夜间备份。

不过,如果你有一个坏的查询或在您的分期系统资源一些吃资源将被从生产拉动,并且机器都挺。

有关Web和应用服务器,我会尝试将环境复制到新的位置(但在相同的环境),并有受灾群众重现的复制行为。这将至少给你分出个高低意外与客户的100%拧紧。

有关数据库服务器,我会在生产系统上配置用户帐户给他们只读权限。

只读/旅客账户。认真。这是同样的原因,你不要总是以root身份登录或管理员。

这是一个艰难的事情,它会与境内“不分级的环境。”

由于多种原因,最好有一个专门的(一式两份)PROD您可以使用阶段的部署来......并在调试,但我知道,有时当你开始不工作了尽快彻底或作为我们会想。

有一件事情我见过的工作是利用虚拟机:除了调试环境,您可以创建一个虚拟机迷你PROD和使用,调试。给你开发的应用类型,这可能不是实际的,在这方面使更多细节将是有益的。

对于调试过程中避免更改PROD:有没有你需要改变什么,方便调试理由吗?如果是这样,这可能是值得探讨解决的另一种方式。

版本控制为,改变生产环境有极大的帮助 - 只是让你的生产环境从储存库相应的目录或目录的工作副本。当你推出一个更新,你的源代码控制系统可以确保所有更改的文件被复制。当更新打破了东西,你可以滚生产工作副本返回到上一个版本,其也不会断裂。此外,您还可以检查您的生产WC了从一个标签,而不是从树干;这样你可以决定通过调整标签应用到生产环境中库修订版。

如果你不熟悉的版本控制系统的概念,我建议你做一些研究。他们是在概念复杂,但非常强大的。维基百科的文章是一个很好的起点: http://en.wikipedia.org/wiki/Revision_control

对不起,你必须有一个临时环境。有解决这个无法回避。如果它意味着你必须宰杀你的数据集的大小,那么这是你必须做的事情。使用VMware及其转换过程中下段导入生产系统,如果有的话(这是一个多小时的过程中,也许不实用)。

有某一类你不能没有具有完全访问生产的DB(或副本)解决问题,性能是其中之一。但你真的应该建立一个临时的环境,即使是别人的台式机上有一个精简的数据集。

这一边,我已经与其中的几个过我的生活在过去,真的,还有什么可以,除了大量的备份做。你所做的每一个变化都必须经增量备份之前。如果你fubar'd的东西,这样,你已经失去的量不是很大。 SQL Server可以采取差异备份限制用于备份的磁盘空间量。甲骨文也可以。

如果你真的没有其他选择,这很可能是一种慢性的情况......考虑增加一些方法来应用程序数据(文件或数据库)来标记一组数据为“拜托不要实际上积极改变生产状态与该数据”,与数据结合转储在一个过程中的关键位置,当该标志被激活时,则可能能够行使大部分生产逻辑的不妨碍实际被加载的数据。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top