您可以在高可用性集群中升级 GBase 8s 软件而不会造成任何停机。
要在高可用性集群上升级 GBase 8s 软件,请首先将主服务器和和辅助服务器转换为独立的 Enterprise Replication (ER) 服务器。 然后,在辅助服务器上升级该软件,停止 ER,再使用 ifxclone 命令克隆该服务器。 服务器正在积极处理客户机请求时可以执行升级,因为 ER 支持在不同版本的服务器软件之间进行复制。
如果要升级 GBasedbt 软件 V11.50xC7 或更高版本,sec2er 命令可用于向尚未定义主键的任何表添加主键。 对于大型表,添加主键可能需要很长时间,在这段时间内,不会显示任何服务器活动。此外,sec2er 命令在添加主键时需要具有对表的互斥访问权,因此将阻止用户事务访问该表。您可能希望在运行 sec2er 命令之前,对任何大型表手动创建主键。如果您具有在设置 DELIMIDENT 环境变量的情况下创建的表,并且这些表不包含主键,那么在运行 sec2er 命令之前,必须手动为这些表创建主键。
升级过程中,用户必须执行步骤来将用户连接移动到相应的服务器。
错误:如果 ER 已在运行,命令将无法在 11.70 之前版本的实例上运行如果收到此错误,并且连接管理器未运行,请通过在两台服务器上运行 cdr delete server 命令来除去复制,然后重新运行 cdr start sec2er 命令。如果连接管理器正在运行,那么请执行以下步骤:
cdr start sec2er
未使用连接管理器时执行服务器升级
在本示例中,术语 server1 和 server2 是指服务器名称,而不是机器名。
升级软件还需要其他一些步骤。 以下是从文档中当前所示内容修改而来的:
cdr check sec2er -c server1 --print server2
该命令检查主服务器和辅助服务器,并确定是否可以将其转换为 ER。该命令显示的警告和错误用于说明可能阻止服务器转换为 ER 的情况。–print 选项用于打印将在 cdr start 命令运行时运行的命令。 应该先解决所有警告或错误,并重新运行该命令,然后再执行下一步。
cdr start sec2er -c server1 server2
sec2er 命令将主服务器和辅助服务器转换为独立服务器,然后配置并启动 Enterprise Replication。Enterprise Replication 使服务器上的数据保持同步;但是,不会复制在 sec2er 命令运行之后创建的任何表。
cdr stop
ontape -a
onmode -kuy
oninit
concdr.sh old_version new_version
cdr start
因为 ER 支持在不同版本的服务器软件之间进行复制,所以已升级的辅助服务器 (server2) 会复制上述主服务器 (server1) 的数据,这样数据更新将在这两个服务器上进行复制。
onmode -k
cdr stop
ifxclone -T -S server2 -I 192.168.0.2 -P 456 -t server1 -i 192.168.0.1 -p 123
ifxclone -T -S server2 -I 192.168.0.2 -P 456 -t server1 -i 192.168.0.1 -p 123 -d RSS
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 }
cdr check sec2er -c server1 --print server2
运行上述命令时,会检查主服务器和辅助服务器,以确定是否可以将其转换为 ER。该命令显示的警告和错误用于说明可能阻止服务器转换为 ER 的情况。–print 选项用于打印将在 cdr start sec2er 命令运行时运行的命令。 应该先解决所有警告或错误,并重新运行该命令,然后再执行下一步。
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 }
cdr start sec2er -c server1 server2
sec2er 命令将主服务器和辅助服务器转换为独立服务器,然后配置并启动 Enterprise Replication。Enterprise Replication 使服务器上的数据保持同步;但是,不会复制在 sec2er 命令运行之后创建的任何表。
因为 ER 支持在不同版本的服务器软件之间进行复制,所以已升级的辅助服务器 (server2) 会复制上述主服务器 (server1) 的数据,这样数据更新将复制到这两个服务器。
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} }
cdr list repl通过运行以下命令来创建复制集:
cdr def replset replset_name repl1 repl2 ...在上面的示例中,repl1 和 repl2 是 sec2er 命令所创建的复制。
执行以上步骤可确保客户机连接重定向到 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
onmode -k
在升级过程中,此时高可用性集群正在已升级的服务器上运行。
cdr stop