H2群集设置

Fra*_*eth 7 java transactions cluster-computing h2

由于H2支持群集,因此过程非常类似于:

  • 启动服务器
  • 用于java org.h2.tools.CreateCluster在所需群集中复制数据库

并且知道CreateCluster期望一个目标,一个源和一个集群端点列表,我有以下问题:

  1. 当我说为了启动3个服务器(A,B和C)的集群时,我是正确的,我需要准确知道集群上的服务器数量,因为每个服务器都需要有用于SET CLUSTER语句的数据库服务器列表org.h2.tools.CreateCluster.process(String, String, String, String, String)方法调用.

    • 启动服务器A;
    • 启动服务器B;
    • 启动服务器C;
    • 在B机器CreateCluster上执行,A为源,B为目标,A,B,C为簇列表;
    • 在B机器CreateCluster上执行,以B为源,C为目标,A,B,C为簇列表;
  2. 假设我正在启动服务进程并启动A和B,应用程序开始在集群执行一些SQL.找不到C,C会被处理掉吗?

  3. 继续在第二个问题上启动启动过程,我启动了C,我已经准备好执行CreateClusterB作为源和A,B,C作为集群节点列表,在这个时刻发生了两件事:

    • B将被锁定在独占模式(SET EXCLUSIVE 2)由于CreateCluster
    • SQL SET CLUSTER 'A,B,C'将在B和C上执行

B被锁定时执行SQL是否在A中执行?如果是这样他们已经承诺?B被释放后,客户还在等待吗?之后会通知C这个命令吗?