在集群联机时对其进行升级

您可以在高可用性集群中升级 GBase 8s 软件而不会造成任何停机。

要在高可用性集群上升级 GBase 8s 软件,请首先将主服务器和和辅助服务器转换为独立的 Enterprise Replication (ER) 服务器。 然后,在辅助服务器上升级该软件,停止 ER,再使用 ifxclone 命令克隆该服务器。 服务器正在积极处理客户机请求时可以执行升级,因为 ER 支持在不同版本的服务器软件之间进行复制。

在集群上升级软件时,以下先决条件适用:
  • 不支持非日志记录数据库。
  • 不支持原始表或未记录的表。
  • 除非类型表包含主键,否则不支持类型表。
  • 不支持那些不支持 ER 的 UDT。
  • 必须在主服务器和辅助服务器上都设置 CDR_QDATA_SBSPACE 配置参数。
  • sqlhosts 文件必须定义一个服务器组。
  • 主服务器和辅助服务器必须属于不同的组。

如果要升级 GBasedbt 软件 V11.50xC7 或更高版本,sec2er 命令可用于向尚未定义主键的任何表添加主键。 对于大型表,添加主键可能需要很长时间,在这段时间内,不会显示任何服务器活动。此外,sec2er 命令在添加主键时需要具有对表的互斥访问权,因此将阻止用户事务访问该表。您可能希望在运行 sec2er 命令之前,对任何大型表手动创建主键。如果您具有在设置 DELIMIDENT 环境变量的情况下创建的表,并且这些表不包含主键,那么在运行 sec2er 命令之前,必须手动为这些表创建主键。

根据是否使用连接管理器,升级过程中涉及的步骤有所不同:
  • 对于使用连接管理器来重定向用户连接的高可用性集群:
    根据您的需求,有两个选项可供选择。您可以:
    • 在集群升级时,添加新的连接管理器实例以管理用户连接。这涉及配置新的 3.70 连接管理器实例,此实例用于支持 ER 并且具有对用户应用程序的 sqlhosts 文件或其他连接机制的对应更改。如果用户已经有连接管理器组支持基础结构来管理其用户连接,那么他们可以轻松地将用于 ER 的新连接管理器添加到其现有连接管理器组,以确保升级过程中不会发生任何用户连接停止。
    • 在整个升级过程中使用现有集群连接管理器或连接管理器组,而不对连接管理器配置、应用程序或应用程序连接机制进行任何更改。此选项会对用户连接造成 10 秒的停止时间,但如果这种情况可接受,那么可以避免因添加连接管理器实例以及随之发生的配置更改而产生的开销。
  • 对于不使用连接管理器来重定向用户连接的集群:

    升级过程中,用户必须执行步骤来将用户连接移动到相应的服务器。

仅 GBasedbt V11.70.xC1 和 GBase 8s V8.5中包含带 sec2er 选项的 cdr 命令版本。如果打算使用 sec2er 命令,请使用 11.70.xC1 分发版中的 cdr 命令。如果 cdr start sec2er 命令失败或中断,可能会显示以下错误消息:
错误:如果 ER 已在运行,命令将无法在 11.70 之前版本的实例上运行
如果收到此错误,并且连接管理器未运行,请通过在两台服务器上运行 cdr delete server 命令来除去复制,然后重新运行 cdr start sec2er 命令。如果连接管理器正在运行,那么请执行以下步骤:
  1. 关闭连接管理器。
  2. 使用以下某个命令关闭 ER:
    • cdr delete server group
    • cdr delete server server
    
                         
  3. 启动连接管理器。
  4. 按如下所示重新启动 sec2er 命令:
    cdr start sec2er

未使用连接管理器时执行服务器升级

在本示例中,术语 server1server2 是指服务器名称,而不是机器名。

升级软件还需要其他一些步骤。 以下是从文档中当前所示内容修改而来的:

  1. 在主服务器 (server1) 上,通过运行以下命令来执行检查以了解服务器是否可以拆分成 ER 服务器:
    cdr check sec2er -c server1 --print server2

    该命令检查主服务器和辅助服务器,并确定是否可以将其转换为 ER。该命令显示的警告和错误用于说明可能阻止服务器转换为 ER 的情况。–print 选项用于打印将在 cdr start 命令运行时运行的命令。 应该先解决所有警告或错误,并重新运行该命令,然后再执行下一步。

  2. 从 11.70 分发版运行以下命令:
    cdr start sec2er -c server1 server2

    sec2er 命令将主服务器和辅助服务器转换为独立服务器,然后配置并启动 Enterprise Replication。Enterprise Replication 使服务器上的数据保持同步;但是,不会复制在 sec2er 命令运行之后创建的任何表。

  3. 在上述辅助服务器 (server2) 上,升级软件。升级服务器的步骤如下所示:
    1. 通过运行以下命令来停止复制:
      cdr stop
      
    2. 备份逻辑日志:
      ontape -a
    3. 停止包含较旧版本 GBasedbt 软件的服务器:
      onmode -kuy
    4. 登录到新安装了 GBase 8s 软件的服务器。
    5. 启动服务器并允许转换成功完成:
      oninit
    6. 运行 concdr.sh 脚本以将 syscdr 数据库从旧软件版本转换到新版本:
      concdr.sh old_version new_version
    7. 上述辅助服务器 (server 2) 升级后,在该服务器上启动复制:
      cdr start

    因为 ER 支持在不同版本的服务器软件之间进行复制,所以已升级的辅助服务器 (server2) 会复制上述主服务器 (server1) 的数据,这样数据更新将在这两个服务器上进行复制。

  4. 将客户机应用程序连接从上述主服务器 (server1) 移至已升级的服务器 (server2)。
  5. 在主服务器 (server1) 上,使用 onmode -k 命令将数据库服务器置于脱机方式。
    onmode -k
  6. 在上述辅助服务器 (server2) 上,运行以下命令来停止 ER:
    cdr stop
    
  7. 现在,可以克隆已升级的服务器,以设置集群中的其他辅助服务器。通过对 server1 运行 ifxclone 实用程序,克隆新升级的服务器 (server2)。使用 -d(处置)参数可创建独立、RSS 或 HDR 辅助服务器。在以下示例中,假定 server1 的 TCP/IP 地址为 192.168.0.1(端口 123 上),server2 的地址为 192.168.0.2(在端口 456 上)。
    • 要创建独立服务器:
      ifxclone -T -S server2 -I 192.168.0.2 -P 456 -t server1 
               -i 192.168.0.1 -p 123
    • 要创建 RS 辅助服务器,请使用 -d 选项指定处置:
      ifxclone -T -S server2 -I 192.168.0.2 -P 456 -t server1 
               -i 192.168.0.1 -p 123 -d RSS
    • 要创建 HDR 辅助服务器,请将处置指定为 RSS,然后将 RSS 服务器提升至 HDR:
      ifxclone -T -S server2 -I 192.168.0.2 -P 456 -t server1 
               -i 192.168.0.1 -p 123 -d RSS
      onmode -d secondary primary_server_name

此时,集群正在已升级的服务器上运行。 如果需要,客户机可以从 server2 移动应用程序。

使用连接管理器时执行服务器升级

当客户机正在使用连接管理器,但未在现有设置中定义连接管理器组时,请参阅以下步骤。

对于本示例,假定定义了以下连接管理器配置文件:

NAME      cm1
LOG       1
LOGFILE   $GBASEDBTDIR/tmp/cm1.log

CLUSTER	cluster1
{
	GBASEDBTSERVER	ids1,ids2
SLA  oltp    DBSERVERS=primary
	SLA webapp	DBSERVERS=HDR
	SLA report	DBSERVERS=(primary,HDR)
	FOC ORDER=ENABLED	TIMEOUT=10 RETRY=5
}
  1. 在主服务器 (server1) 上,通过运行以下命令来执行检查以了解服务器是否可以拆分成 ER 服务器:
    cdr check sec2er -c server1 --print server2

    运行上述命令时,会检查主服务器和辅助服务器,以确定是否可以将其转换为 ER。该命令显示的警告和错误用于说明可能阻止服务器转换为 ER 的情况。–print 选项用于打印将在 cdr start sec2er 命令运行时运行的命令。 应该先解决所有警告或错误,并重新运行该命令,然后再执行下一步。

  2. 重新装入连接管理器,使其能够将所有客户机连接定向到主服务器。以下是修改后的连接管理器配置文件:
    NAME cm1
    LOG       1
    LOGFILE $GBASEDBTDIR/tmp/cm1.log
    
    CLUSTER	cluster1
    {
       GBASEDBTSERVER ids1,ids2
       SLA oltp	DBSERVERS=primary
       SLA webapp	DBSERVERS=primary,HDR
       SLA report	DBSERVERS=primary,HDR
       FOC ORDER=ENABLED	TIMEOUT=10 RETRY=5
    }
  3. 从 11.70 分发版运行以下命令:
    cdr start sec2er -c server1 server2

    sec2er 命令将主服务器和辅助服务器转换为独立服务器,然后配置并启动 Enterprise Replication。Enterprise Replication 使服务器上的数据保持同步;但是,不会复制在 sec2er 命令运行之后创建的任何表。

  4. 在上述辅助服务器 (server2) 上,升级 GBase 8s 软件。

    因为 ER 支持在不同版本的服务器软件之间进行复制,所以已升级的辅助服务器 (server2) 会复制上述主服务器 (server1) 的数据,这样数据更新将复制到这两个服务器。

  5. 将客户机应用程序连接从上述主服务器 (server1) 移至已升级的服务器 (server2)。
    1. 为 ER 创建新的连接管理器配置文件。以下显示的是样本 ER 连接管理器配置文件。 SLA 名称是对于 cm1 相同的名称:
      NAME      cm2
      LOGFILE  $GBASEDBTDIR/tmp/cm2.log
      DEBUG    1
      LOG       1
      MACRO    list=g_server2,g_server1
      
      REPLSET replset_1
      {
         GBASEDBTSERVER g_server1,g_server2
         SLA oltp DBSERVERS=${list}
         SLA webapp DBSERVERS=${list}
         SLA report DBSERVERS=${list}
      }
      ER 连接管理器必须定义包含 sec2er 命令所生成的所有复制的复制集。 通过运行以下命令,可以查看复制的列表:
      cdr list repl
      通过运行以下命令来创建复制集:
      cdr def replset replset_name repl1 repl2 ...
      在上面的示例中,repl1 和 repl2 是 sec2er 命令所创建的复制。
    2. 停止 cm1 连接管理器实例并装入 cm2 实例。

      执行以上步骤可确保客户机连接重定向到 group_2(因为 server2 属于 group_2)。

      以下是样本 sqlhosts 文件:

      #dbservername    nettype       hostname      servicename      options
      g_server1       group        -          -             i=10
      ids1            onsoctcp     host1      port1         g=g_server1
      g_server2       group        -          -             i=20
      ids2            onsoctcp     host2      port2         g=g_server2
      
      oltp            onsoctcp     host1      port3 
      webapp          onsoctcp     host1      port4
      report          onsoctcp     host1      port5 
    
                      
  6. 在主服务器 (server1) 上,使用 onmode -k 命令将数据库服务器置于脱机方式。
    onmode -k
  7. 现在,可以将已升级的服务器克隆到集群中的其他辅助服务器。

    在升级过程中,此时高可用性集群正在已升级的服务器上运行。

  8. 关闭 cm2 连接管理器实例并启动 cm1 实例。
  9. 在上述辅助服务器 (server2) 上,运行以下命令来停止 ER:
    cdr stop