我正在开发一个webapp。我需要计划如果主机出现故障会发生什么。 我将丢失一些最近的会话状态(我可以使用),其他所有内容都应该永久存储在数据库中。
如果我在中断后再次启动,我可以期待一个好的主机在几分钟或几秒内重建数据库,或者我应该在后台进程中构建以在其他地方持续镜像数据库吗?
什么是正常/明智的?
显然一个好的主机会有RAID和其他冗余,因此完全丢失的可能性应该很低,如果他们有定期备份,我应该只丢失最近的东西,但这可能是设计用几乎静态的网页考虑到内容,我的网站是交易性的,不断提交新数据(客户期望我永远不会失去它)。
有任何建议/意见吗?
是否有现成的框架来执行此操作? (我主要在Java工作。) 我是否应该只计划保存数据,还是应该计划在主机未在合适的时间范围内重新启动时,准备启动备用的可用主机实现?
答案 0 :(得分:1)
您需要一个复制策略,当然这取决于您的数据库引擎。 它通常由配置完成。 http://en.wikipedia.org/wiki/Replication_%28computer_science%29
我在Informix中遇到过您可以设置数据复制以使备用系统可用或对数据进行完全备份,以及重放逻辑日志(基本上包含所有SQL语句)的情况,这需要更多时间从崩溃。
对于光盘崩溃的情况,拥有冗余存储也是一个好主意。在serverfault.com上可能会更好地讨论这个主题