首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >H2数据库集群恢复

H2数据库集群恢复
EN

Stack Overflow用户
提问于 2013-05-09 15:01:38
回答 1查看 1.8K关注 0票数 3

我有一个运行在Apache上并使用SpringMVC数据库的H2应用程序。基础设施包含两个运行自己的Tomcat服务器的应用服务器(让我们将它们命名为A& B)。我还设置了一个H2数据库集群。

在一个系统(A)上,我运行了以下命令

代码语言:javascript
复制
java org.h2.tools.Server -tcp -tcpPort 9101 -tcpAllowOthers -baseDir server1

另一方面,我跑了

代码语言:javascript
复制
java org.h2.tools.Server -tcp -tcpPort 9101 -tcpAllowOthers -baseDir server2

我在机器A中启动了集群

代码语言:javascript
复制
java org.h2.tools.CreateCluster
-urlSource jdbc:h2:tcp://IpAddrOfA:9101/~/test
-urlTarget jdbc:h2:tcp://IpAddrOfB:9101/~/test
-user sa
-serverList IpAddrOfA:9101,IpAddrOfB:9101

当任何一个服务器关闭时,都会提到,必须删除失败的数据库,重新启动服务器并重新运行CreateCluster。

我有以下问题?

  1. 如果两台服务器都关机,如何确定要删除哪个数据库,以便重新启动服务器并重新运行群集?
  2. CreateCluster包含一个urlSource和urlTarget。我是否需要具体地给予它们与以前相同的价值,或者我可以在没有任何副作用的情况下交换它们?
  3. 我需要在这两台机器上运行CreateCluster命令吗?如果需要,我需要交换urlSource和urlTarget吗?
  4. 有没有办法知道两个服务器都在运行,还是没有一个服务器在运行?我希望,如果两个IpAddress都已启动,将返回两个IpAddress,如果只有一个向上,则返回一个IpAddress,否则没有一个全部关闭。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-09 17:00:35

  1. 如果两台服务器都关机,我如何确定要删除哪个数据库? 集群的思想是,第二个数据库增加了系统的冗余。假设服务器每100天发生一次故障(硬盘故障、电源故障等)。这是99%的可用性。这对您来说可能还不够好,这就是为什么您可能希望使用一个带有两个服务器的集群。这样,即使每100天有一台服务器出现故障,两台服务器同时出现故障的几率也非常低。理想情况下,失败的风险是完全独立的。这意味着在完全相同的时间两次失败的风险都是1/ 10000 (100乘100),从而使您获得99.99%的可用性。对于这两台服务器出现故障的风险,集群特性应该防止的正是这种情况。

  1. CreateCluster包含一个urlSource和urlTarget。我是否需要明确地给予它们与以前相同的价值? 这取决于您要使用哪个源和哪个源作为目标。将源中的数据库复制到目标。源是要复制到目标的数据库。

  1. 我需要在这两台机器上运行CreateCluster命令吗? 不是的。

  1. 有没有办法知道两个服务器都在运行,还是没有一个服务器在运行? 您可以尝试打开到它们的TCP/IP连接,以检查侦听器是否正在运行。我通常做的是在命令行上运行telnet <server> <port>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16464936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档