高可用性集群环境故障诊断

高可用性集群环境与独立服务器环境相比,需要很少甚至不需要额外的故障诊断。 本主题说明了用于描述高可用性集群环境的术语,并提供了一些常见的故障诊断过程。

可以使用诊断工具显示高可用性环境的配置,并验证是否正确设置辅助服务器来更新数据。

服务器会快速处理事务。onstat 命令只在运行瞬间显示状态信息。

为了更新辅助服务器上的数据,GBase 8s 在主数据库服务器和辅助数据库服务器上创建了代理分发器。为每个代理分发器都分配了一个在集群内唯一的标识。 代理分发器负责将 DML 更新请求从辅助服务器发送至主服务器。 辅助服务器根据辅助服务器的 onconfig 文件中的 UPDATABLE_SECONDARY 设置确定要创建的代理分发器的实例数。

对于高可用性集群环境中的可更新辅助服务器,从可更新辅助服务器到主服务器的加密需要 SMX 加密。要加密从可更新辅助服务器发送到主服务器的数据,请在辅助服务器上设置 ENCRYPT_SMX 配置参数。请参阅启用 SMX 加密以获取更多信息。

在高可用性集群中初始化可更新的辅助服务器时,该服务器将保持快速恢复方式,直到所有打开的事务(包括已打开和已准备好的 XA 事务)完成为止。处于快速恢复方式时,应用程序不能连接到该服务器。在所有已打开的事务落实或回滚之前,服务器将保持快速恢复方式。

在主服务器上使用 onstat -g proxy 命令查看有关高可用性集群中所有代理分发器的信息。
onstat -g proxy

Secondary    Proxy      Reference     Transaction  Hot Row
Node         ID         Count         Count        Total
serv2        392        0             2            112
serv2        393        0             2            150
检查前一示例中 onstat 命令的输出,两个代理分发器的标识为 392 和 393. 事务计数显示每个代理分发器当前正在处理的事务数。
在辅助服务器上运行 onstat -g proxy,以便查看有关能够为来自辅助服务器的更新请求提供服务的代理分发器的信息。
onstat -g proxy

Primary    Proxy     Reference     Transaction  Hot Row
Node       ID        Count         Count        Total
serv1      392       0             2            112
serv1      393       0             2            150
在此示例中,服务器是共享磁盘 (SD) 辅助服务器,并且已配置为更新数据。 另外,服务器被连接到命名为 serv1 的主服务器。并且具有两个代理分发器,每个的事务计数为 2。
在主服务器上使用 onstat -g proxy all,以便显示有关代理分发器和代理线程的信息。代理分发器创建了一个或多个代理线程以用于处理来自辅助服务器的数据更新。
onstat -g proxy all

Secondary  Proxy      Reference     Transaction  Hot Row
Node       ID         Count         Count        Total
serv2      392        0             2            1
serv2      393        0             2            0

TID      Flags      Proxy  Source   Proxy   Current  sqlerrno iserrno
                                     ID     SessID   TxnID   Seq     
63       0x00000024 392    22       1        5        0        0
64       0x00000024 392    19       2        5        0        0
62       0x00000024 393    23       1        5        0        0
65       0x00000024 393    21       2        5        0        0
	
onstat -g proxy all 命令输出中,TID 表示在主服务器上运行的代理线程的标识。 Source SessID 表示辅助服务器上的用户会话标识。 Proxy TxnID 显示当前事务的序号。 每个 Proxy TxnID 对于代理分发器而言都是唯一的。Current® Seq 表示正在处理的事务中当前操作的序号。每个发送至辅助服务器的数据库事务都被从内部分成一个或多个操作,然后将这些操作发送至主服务器。 最后两个字段 sqlerrno iserrno 显示在事务中遇到的任何 SQL 或 ISAM/RSAM 错误。 错误数 0 表示完成且没有错误。
在辅助服务器上运行 onstat -g proxy all 会显示有关当前可更新辅助服务器上数据的所有会话的信息。
onstat -g proxy all

Primary   Proxy      Reference     Transaction  Hot Row
Node      ID         Count         Count        Total
serv1     3466       0             0            1
serv1     3465       0             1            0

Session  Proxy    Proxy    Proxy    Current  Pending  Reference
                  ID       TID      TxnID    Seq      Ops      Count
19       3465     67       1        23       0        1
在辅助服务器上运行的 onstat -g proxy all 命令生成的输出中,Session 表示该辅助服务器上的用户会话标识。 Proxy IDProxy TID 与在主服务器上显示的一样。 Pending Ops 显示正在等待传送至主服务器的操作数。 Reference Count 显示该事务正在使用的线程数。 当 Reference Count 显示 0 时,表示事务处理已完成。
要显示由给定分发器执行的当前工作的详细信息,请使用:
onstat -g proxy <proxy id> [proxy transaction id] [operation number]
代理事务标识和操作编号都是可选参数。 如果已提供,那么第一个编号将视为代理事务标识。 如果其后有第二个编号,那么会将此编号解释为操作编号。 如果没有代理事务标识,该命令执行的任务与以下命令相同:onstat -。与此类似,如果针对给定代理事务标识不存在此类操作编号,那么该命令执行的任务与以下命令相同:onstat -
使用以下命令显示服务器是否配置为允许对数据进行更新的相关信息。 该命令可以在主服务器或辅助服务器上运行:
onstat -g <server_type>
示例:
onstat -g rssonstat -g sds
onstat -g dri