我有一个在 Apache Tomcat 上运行并使用 H2 数据库的 SpringMVC 应用程序。该基础架构包含两个运行自己的 Tomcat 服务器的应用程序服务器(我们将它们命名为 A 和 B)。我还有一个 H2 数据库集群。
在一个系统(A)上,我运行了以下命令
java org.h2.tools.Server -tcp -tcpPort 9101 -tcpAllowOthers -baseDir server1
另一方面(B)我跑了
java org.h2.tools.Server -tcp -tcpPort 9101 -tcpAllowOthers -baseDir server2
我在机器 A 中启动了集群
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。
我有以下问题?
- 如果两台服务器都关闭了,我如何确定要删除哪个数据库,以便我可以重新启动该服务器并重新运行集群?
- CreateCluster 包含一个 urlSource 和 urlTarget。我是否需要具体说明给它们与之前给出的相同的值,或者我可以在没有任何副作用的情况下互换它们?
- 我需要从两台机器上运行 CreateCluster 命令吗?如果是这样,我需要交换 urlSource 和 urlTarget 吗?
- 有没有办法知道这两个、一个或没有一个服务器都在运行?我希望如果两个 IpAddress 都启动,则返回两个 IpAddress,如果只有一个 IpAddress 启动,则返回一个 IpAddress,否则没有一个 IpAddress 全部关闭。