【问题标题】:Java WebApp Configuration Backup and RestoreJava WebApp 配置备份和恢复
【发布时间】:2014-11-04 06:25:07
【问题描述】:

我有一个 Java Spring MVC Web 应用程序。它有一些配置和属性文件。

有一个目录,比如说,myappconf。里面有配置和属性文件夹。里面有一些文件。

myappconf
  |
  |---conf
  |    |
  |    |__ settings.xml
  |    |__ nodes.xml
  |
  |---prop
       |
       |__ app.properties 

我想将整个文件夹备份到另一个位置。我已经实现了 Quartz 来运行其他一些作业。我也可以使用它来进行备份。到指定位置,我可以在特定时间间隔或更改任何文件时复制整个文件夹。

我在 tomcat 中运行应用程序。

万一应用程序崩溃或服务器出现故障,我想在服务器中安装一个新应用程序,它应该恢复配置。该文件夹还将包含一些数据。我要全部还原。

我不知道如何恢复它。有没有人实施过这样的事情?或者有人有一些备份和恢复指南吗?

谢谢

【问题讨论】:

  • 停止tomcat,复制文件,然后启动tomcat。
  • 我知道。但它应该以编程方式发生
  • 很难说这是否可以通过编程方式完成。由于您的程序可能还需要此配置,而新应用程序中不存在这些配置。
  • 备份正常。但恢复是问题。我可以使用新的战争文件手动停止和启动 tomcat。但它需要决定是恢复文件还是从新配置开始

标签: java tomcat backup restore


【解决方案1】:

我会这样做 -

  1. 如果您可以在每次加载/部署到数据库或文件中时保存应用程序的状态,那就是新安装或恢复的应用程序..
  2. 如果您使用的是linux平台,请去更新tomcat启动时执行的startup.sh文件。
  3. 假设您在您的 tomcat 实例中只运行一个应用程序,您可以在启动服务器时检查您在步骤 1 中创建的文件或数据库条目。
  4. 如果该条目表明存在任何以前的配置,只需将其部署到您的应用程序中,否则,启动一个新的应用程序。

这将递归地继续,直到您手动删除在步骤 1 中创建的条目。

希望这会有所帮助。

【讨论】:

  • 我也是这么想的。我认为最好将状态存储在数据库中。
  • 为此,您必须使用 shellscript 从数据库中获取条目,因为在您想要检查状态时可能无法提取您的 war 文件。 :-)
  • 应用程序将在数据库中有一个 ID,因为应用程序的许多副本将在多个系统中运行。因此,当应用程序启动时,它将具有与前一个相同的 id,并且我可以签入数据库并恢复,(就像普通应用程序一样)。不需要shell脚本。我可以使用 Java 本身。或者哪个更好?
  • 如果用Java编写的用于获取条目的代码将在WAR中,那么您将无法检查数据库和恢复。如果你还想这样做,你必须重新启动一次tomcat。
  • 是的,某些配置仅在启动 tomcat 时会加载,所以我可能需要重新启动 tomcat 以应用新值。所以我最好使用shell脚本。
【解决方案2】:

是的,您可以简单地将文件复制到“exploded war”目录中。如果您愿意,可以使用石英,也可以使用任何文件系统备份工具。后者可能更容易,因为它具有恢复功能。

如果您确实使用自己的工具(即石英),“恢复”您将关闭您的 tomcat 实例,将文件复制回原位,可选择覆盖旧文件,然后重新打开 tomcat。 Tomcat 从分解的战争文件中读取,所以你会很高兴的。

编辑:理想情况下,您希望在复制文件之前(优雅地)关闭 tomcat,以确保是否刷新了内存中这些文件的任何更改 - 但实际上,这很少是问题这类文件(我的看法)。

【讨论】:

  • 万一应用程序崩溃了,那么 Quratz 也将无法正常工作吗?只有还原才是问题所在。在 tomcat webapp 文件夹中安装新应用程序后,我可以手动启动 tomcat。但是我怎么知道它应该恢复旧的配置和数据,或者它是一个刚刚安装了新配置的新应用程序?我是否需要在单独目录或数据库中的某些配置中设置任何标志?配置文件也可能损坏。
  • 我假设您会使用石英将这些文件复制到另一个目录,最好保持相同的文件结构。在恢复时,您可以按照您所说的复制您的应用程序,然后将这些文件从您之前复制的位置复制回来。
  • 我可以使用 Quartz 进行备份。有时,我可以在 tomcat 中将应用程序作为新应用程序安装并启动它。有时当我需要恢复时,我会使用相同的程序。将war文件复制到tomcat并启动它。但我需要检查它是作为新应用程序启动还是需要恢复旧配置。这是我的看法。但不确定这是不是好主意。所以我在这里要求有一些指导方针。
  • 在我看来,您知道何时进行还原 --- 因为发生了一些不好的事情……而您正在进行还原。同样,您知道您是否正在进行全新安装。因为您,“管理员”,拥有上下文,只需根据该上下文做正确的事情。无需使您的代码复杂化,增加错误的可能性,对于看起来非常适合相当简单的文档的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-10
  • 2012-01-14
  • 2011-07-02
  • 2021-08-14
  • 2014-07-24
  • 2013-12-03
  • 2019-06-30
相关资源
最近更新 更多