网站如何处理数据库崩溃

我目前在php中创建了一个具有数据库后端(可以是MySQL或SQL Server)的网站,最近我意识到如果我的数据库随时崩溃,我的网站将无法正常运行并可能引起一些麻烦。 那么,如果我的数据库(或任何关键的外部组件)出现故障,在网站上显示的内容是什么?我的特定网站在很大程度上依赖于它的数据库,没有它就几乎没用。 我被告知的一个选项是通过电子邮件发送网站管理员并显示错误500页面,该页面显示服务器出现问题,并且基本上使网站无法使用,直到问题得到解决。我还能做些什么来解决这个问题吗?有没有办法设计一个网站,以便数据库(任何关键组件)崩溃不是一个问题? 我正在寻找一般的经验法则以及人们过去如何解决这个问题的具体例子。此外,这些示例不仅仅是我的网站示例。     
已邀请:
如果你只有一个数据库服务器,并且网站在没有数据库的情况下无法工作,那就没有魔力了:你必须显示某种不错的错误页面,通知用户存在技术问题并且网站将返回不久。 一般来说 : 这种问题的可能性非常低 如果您的网站是正常网站,人们会偶尔接受一个问题,特别是如果您进行沟通。 如果你能负担得起(并具备设置它的技术知识),你可以使用两个数据库服务器,它们之间有复制(MySQL支持这个):你使用一个主服务器和一个被认为是备份的从服务器。 然后,如果主机掉落,您的应用程序将使用从机。 当然,这将大大降低数据库相关问题的风险(同时两个服务器崩溃的可能性很小),但是你仍然会遇到所有其他组件的问题 - 比如你的网络服务器:如果你只有一,你可能想考虑使用两个,第二个作为后备。 在那之后,如果你还有钱(并且认为你的网站需要更好的正常运行时间),那么你需要考虑数据中心出现问题的情况 - 在两个不同的位置设置服务器......     
显示的正确的是一个简单的“oops”错误消息,它不会提供任何有助于黑客的信息。 “我们遇到技术困难”或“网站不可用”的问题。这是出于安全目的。 最好有一个错误记录和通知系统,以便在发生崩溃时通知管理员。编写起来相当简单,但我确信已经存在可以处理这个问题的库。 (http://net.tutsplus.com/tutorials/php/404403-website-error-pages-with-php-auto-mailer/上有一个代码示例教程,http://www.w3schools上有一个更简单的例子的.com / PHP / php_error.asp) 有一些方法可以设计网站的体系结构来处理数据库组件崩溃。它不是构建您的网站,它是整个环境中的架构师。例如,数据库集群具有高可用性(http://en.wikipedia.org/wiki/High-availability_cluster)。它并不便宜。 总的来说,您只需要确保正确地进行错误处理。数据库崩溃是我们需要错误处理的典型例子。有很多资源和指导。 http://www.google.com/search?q=Error+Handling+Guidelines&rls=com.microsoft:en-us&ie=UTF-8&oe=UTF-8&startIndex=&startPage=1 编辑 我发现了这一点,并认为这是一个非常好的资源来回答如何处理错误: http://www.nyphp.org/PHundamentals/7_PHP-Error-Handling     
在数据库关闭或任何其他残缺服务阻止您的网站正常运行的情况下,最佳做法是返回HTTP 500状态代码。根据您的网站功能,这可能是逐页或网站范围。例如,当您的搜索页面显示时,您的“关于我们”页面可能不需要数据库功能。因此,您可以保持“关于我们”页面的运行状态,但当有人进入您的搜索页面时,会返回500状态代码。 不要提供有关网站未向最终用户工作的原因的任何技术信息。这可能是一种安全风险。 如果您使用的是apache,本文档将告诉您如何设置自定义错误页面: http://httpd.apache.org/docs/2.0/custom-error.html 我建议您为500状态代码页使用纯HTML。您还可以通过header()函数让PHP页面发送500状态代码,如下所示: http://php.net/manual/en/function.header.php     

要回复问题请先登录注册