假设有一个大型数据库,正常的升级(结构变化和数据升级)目前大约需要2-3天(不是问题,在生产期间没有完成,每年约1-2次)。
目前,备份已经完成,如果有任何失败,将恢复备份,并检查升级脚本的原因。我们正在研究在事务中升级数据库的可能性,如果发生任何事情,就回滚更改。
是否有任何最佳做法、理由、知识和/或经验可以说明这是否是一个好主意?
谢谢
发布于 2015-11-02 18:35:49
恢复到有效备份是最常见和最安全的方法。通过对更改进行版本控制,可以减少需要从备份恢复的风险和可能性。
例如,假设您的升级过程涉及50个步骤,这些步骤都有一定的顺序/顺序要求。在应用重新引导之后,任何步骤或一小组步骤都应该安全地重新调整DB中的版本号,这样您就可以确切地知道上一次成功的升级步骤是什么。然后,您可以恢复该进程,而不必重新启动。
将此添加到事务中的每个步骤或步骤集合中,将有助于确保升级步骤符合ACID要求,并使升级过程更加健壮。我们使用一些主要的升级来实现这一点,并且很少需要在中间出现故障时进行恢复,除非其中一个升级步骤的脚本中有错误。
https://dba.stackexchange.com/questions/119807
复制相似问题