返回首页

gbase数据、南大通用产品文档:GBase8a/gnode/server/bin

更新日期:2024年09月11日

由于172.16.3.61, 172.16.3.64 是一台服务器,172.16.3.62, 172.16.3.65 是一台服
务器,可以修改如下两个文件:
/172.16.3.61/gnode/server/bin/gcluster_services
/172.16.3.62/gnode/server/bin/gcluster_services
脚本内容修改如下:
NUMA 绑定需修改gcluster_services 脚本两处后,
使用该gcluster_services 脚本
重启集群服务。
以172.16.3.61 下gcluster_services 脚本为例进行numa 绑定
修改第一处如下:
$ cd /opt/172.16.3.61/gnode/server/bin

GBase UP 产品手册 3 软件安装

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 94
$ vi gcluster_services
410 行左右找到下面代码
$2 > /dev/null 2>&1 &
# waiting for start completely
修改如下,增加红色代码
$2 > /dev/null 2>&1 &

# echo "$prog_name ------------------------$2"

if [ $prog_name = '/opt/172.16.3.61/gnode/server/bin/gbased' ];then


#echo -e "\n------numactl${loop_count}------$3"


count_numa=$(($(($3))%2))


echo "--cpunodebind=+$count_numa --membind=+$count_numa"


numactl --cpunodebind=+"${count_numa}"
--membind=+"${count_numa}" $2 > /dev/null 2>&1 &




#



$2 > /dev/null 2>&1 &


sleep 10
else
$2 > /dev/null 2>&1 &
fi





if [ $prog_name = '/opt/172.16.3.64/gnode/server/bin/gbased' ];then


#echo -e "\n------numactl${loop_count}------$3"


count_numa=$(($(($3))%2))


echo "--cpunodebind=+$count_numa --membind=+$count_numa"


numactl --cpunodebind=+"${count_numa}"
--membind=+"${count_numa}" $2 > /dev/null 2>&1 &




#



$2 > /dev/null 2>&1 &


sleep 10
else
$2 > /dev/null 2>&1 &
fi

# waiting for start completely
注意,在NUMA 绑定时需要绑定进程的全路径,如绑定gbased 进程,则将其



/opt//gnode/server/bin/gbased






/opt//gnode/server/bin/gcluster_services 文件中,替换为真实IP 地址。
修改第二处如下:

GBase UP 产品手册 3 软件安装

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 95
500 行左右处增加红色代码:


# start data service


if [ $node_type == 2 -o $node_type == 3 ]; then



for ((count=0; count<${#DataServerName[@]}; count++))



do



instance_no=0


for inst in `echo $GBASE_INSTANCES|sed
's/:/\n/g'|sort|uniq`


do


if [ $inst != "" ];then


#echo $inst


. $inst


declare -a DataServerBin


DataServerBin[0]=$GBASE_HOME/bin/gbased



DataServerBin[1]=$GBASE_HOME/bin/gc_sync_server


#echo ${DataServerBin[count]}


#__start ${DataServerName[count]}
${DataServerBin[count]}








__start ${DataServerName[count]}
${DataServerBin[count]} ${instance_no}


if [ "$?" != "$RET_SUCCESS" ]; then


ret_start=$RET_START_ALL_ERROR


fi








((instance_no++))


fi


done



done


Fi
重启集群服务
$ cd /opt/GBase/172.16.3.61/gnode/server/bin
$ ./gcluster_services all start
$ numastat `pidof gbased`
Per-node process memory usage (in MBs)
PID Node 0 Node 1 Total

GBase UP 产品手册 3 软件安装

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 96
---------------- --------------- --------------- ---------------
25788 (gbased) 139.56 8.03 147.59
27445 (gbased) 8.37 135.30 143.67
---------------- --------------- --------------- ---------------
Total 147.93 143.32 291.26

在NUMA 绑定时需要绑定进程的全路径,所以使用上述方法修改下面文件时
不能完全拷贝,需按上述方法修改下面文件。

TERMINFO 环境变量用于终端处理。
该环境变量仅在完全支持 System V 和 Solaris UNIX™ 系统提供的 terminfo 库的
平台上受支持。


GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 200 -
TERMINFO 告诉 DB-Access 与 terminfo 目录通信而不是与 termcap 文件通信。
terminfo 目录有包含与终端及其特征有关的文件的子目录。
要设置 TERMINFO,输入以下命令:
setenv TERMINFO /usr/lib/terminfo

要设置连接管理器,您必须创建连接管理器配置文件。
大多数连接管理器选项是在配置文件中指定的。配置文件由两部分组成:

头,其中包含连接管理器配置选项,用于指定实例名称和其他可选参数。

主体,其中包含一个或多个连接单元部分,用于定义连接单元的类型和名称、服
务级别协议、故障转移配置和故障转移警报程序。
以下代码块显示了连接管理器配置文件的格式:
# *** HEADER ***
NAME connection_manager_instance_name

# Optional Parameters
MACRO name_1=server_list_1
MACRO name_2=server_list_2
MACRO name_n=server_list_n
.
.
.
LOCAL_IP ip_list

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 428 -
LOG value
LOGFILE path_and_filename
DEBUG value
CM_TIMEOUT seconds
EVENT_TIMEOUT seconds
SECONDARY_EVENT_TIMEOUT seconds
SQLHOSTS value

# *** BODY ***
# Connection Unit 1unit_type unit_name_1
{
GBASEDBTSERVER server_list
SLA sla_name_1 DBSERVERS=value \
\
\ #Optional SLA Attributes
MODE=value \
USEALIASES=value \
POLICY=value \
WORKERS=number_of_threads \
HOST=host_name \
NETTYPE=network_protocol \
SERVICE=service_name \
SQLHOSTSOPT=options
SLA sla_name_2 DBSERVERS=value ...
SLA sla_name_n DBSERVERS=value ...
.
.
.
#Optional Failover Parameter and Attributes
FOC ORDER=value \
PRIORITY=value \
TIMEOUT=seconds \
RETRY=attempts


GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 429 -
#Optional Failover Alarm Parameter
CMALARMPROGRAM path_and_filename
}

# Connection Unit 2unit_type unit_name_2
{
GBASEDBTSERVER server_list
SLA sla_name_1 DBSERVERS=value ...
SLA sla_name_2 DBSERVERS=value ...
SLA sla_name_n DBSERVERS=value ...
FOC ORDER=value ...
CMALARMPROGRAM path_and_filename
}
.
.
.
# Connection Unit nunit_type unit_name_n
{
GBASEDBTSERVER server_list
SLA sla_name_1 DBSERVERS=value ...
SLA sla_name_2 DBSERVERS=value ...
SLA sla_name_n DBSERVERS=value ...
FOC ORDER=value ...
CMALARMPROGRAM path_and_filename
}
提示: 为了提高可读性,请使用反斜杠 (\) 行接续字符来断开较长的配置文件行。以下示
例显示了分成四行的宏定义:
MACRO srvlist=node1,node2,node3,node4, \
node5,node6,node7,node8, \
node9,node10,node11,node12, \
node13,node14,node15
连接管理器配置文件参数
下表列出了可以在连接管理器配置文件的不同部分中使用的参数。有关每个参数的更多信
息,请访问表中该参数的链接。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 430 -
表 1. 连接管理器配置文件参数
配置文件的组成部分
必需参数
可选参数
头配置文件参数

NAME

LOCAL_IP

LOG

LOGFILE

DEBUG

MACRO

连接单元类型和名称

CM_TIMEOUT

EVENT_TIMEOUT

SECONDARY_EVENT_TIMEOUT
用于高可用性集群的主体

SLA

GBASEDBTSERVER

FOC

CMALARMPROGRAM
用于网格、复制集或服务器
集的主体

SLA

GBASEDBTSERVER

CMALARMPROGRAM

SQLHOSTS
示例 1:用于高可用性集群的基本配置文件
NAME cm1
LOG 1
LOGFILE ${GBASEDBTDIR}/tmp/cm1.log

CLUSTER west
{
GBASEDBTSERVER ids_w1,ids_w2
SLA oltp DBSERVERS=primary
SLA report DBSERVERS=HDR,SDS
FOC ORDER=ENABLED \
TIMEOUT=5 \
RETRY=2
CMALARMPROGRAM ${GBASEDBTDIR}/etc/CMALARMPROGRAM.sh
}

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 431 -
此示例针对高可用性集群配置了连接管理器,并定义了两个 SLA。
配置文件头定义了以下内容:

cm1 定义为连接管理器实例的名称

已启用日志记录

cm1.log 定义为日志文件的名称

$GBASEDBTDIR/tmp 定义为日志目录
配置文件主体定义了两个 SLA、故障转移参数以及故障转移处理失败时要调用的程序:

CONNECT TO @oltp 连接请求将定向到主服务器

CONNECT TO @report 连接请求将定向到 HDR 辅助服务器。如果 HDR 辅助服
务器不可用,CONNECT TO @report 连接请求将定向到任何可用的 SD 辅助服务
器。

主服务器的 HA_FOC_ORDER 配置参数值在故障转移规则中使用。

连接管理器再等待 5 秒,以等待有关连接单元的主服务器故障转移处理开始的事
件。

连接管理器在主服务器的 HA_FOC_ORDER 配置参数指定的列表中循环 2 次
后,自动故障转移将终止并生成警报。

如果故障转移处理遇到错误,将调
用 $GBASEDBTDIR/etc/CMALARMPROGRAM.sh。
某些参数和属性不包含在此配置文件中,因此连接管理器具有以下缺省行为:

未设置 DEBUG 参数,因此将禁用调试。

未设置 EVENT_TIMEOUT 参数,因此连接管理器将等待主服务器事件 60 秒,
然后再开始故障转移处理。

未设置 SECONDARY_EVENT_TIMEOUT 参数,因此连接管理器将等待辅助服
务器事件 60 秒,然后再与辅助服务器断开连接。

未设置 CM_TIMEOUT 参数,因此在下一个可用连接管理器成为故障转移仲裁器
之前,数据库服务器将等待 60 秒以从故障转移仲裁器连接管理器接收事件。

未设置 SQLHOSTS 参数,因此连接管理器将依次检查本地 sqlhosts 文件和远
程 sqlhosts 文件以查找 ids_w1 和 ids_w2 的实例。

未设置 SLA 参数的 MODE 属性,因此连接管理器会将连接请求重定向
到 oltp 和 report,而不是充当代理服务器。

未设置 report SLA 的 POLICY 属性,因此连接管理器会将连接请求定向到工作
负载最低的辅助服务器。

未设置 SLA 参数的 WORKERS 属性,因此将为每个 SLA 分配四个工作程序线

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 432 -
程。

未设置 SLA 参数的 HOST、NETTYPE、SERVICE 和 SQLHOSTSOPT 属性,
因此连接管理器将使用 ids_w1 和 ids_w2 的 sqlhosts 值。
示例 2:用于多个连接单元类型的复杂配置文件
NAME cm2
MACRO NY=(ny1,ny2,ny3)
MACRO CA=(ca1,ca2,ca3)
LOG 1
LOGFILE ${GBASEDBTDIR}/tmp/cm2.log

CLUSTER west
{
GBASEDBTSERVER ids_w1,ids_w2
SLA oltpw DBSERVERS=primary
SLA reportw DBSERVERS=(HDR,SDS)
FOC ORDER=ENABLED \
TIMEOUT=5 \
RETRY=1
CMALARMPROGRAM /etc/CMALARMPROGRAM.sh
}

CLUSTER east
{
GBASEDBTSERVER ids_e1,ids_e2
SLA oltpe DBSERVERS=primary
SLA reporte DBSERVERS=RSS,HDR
FOC ORDER=ENABLED \
TIMEOUT=5 \
RETRY=1
CMALARMPROGRAM ${GBASEDBTDIR}/etc/CMALARMPROGRAM.sh
}

REPLSET erset
{
GBASEDBTSERVER g_er1,g_er2
SLA repl1_any DBSERVERS=ANY
SLA repl1_ca DBSERVERS=${CA} \

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 433 -
POLICY=WORKLOAD
SLA repl1_ny DBSERVERS=${NY}
}

GRID grid1
{
GBASEDBTSERVER node1,node2,node3
SLA grid1_any DBSERVERS=ANY \
POLICY=LATENCY
SLA grid1_avail DBSERVERS=${NY},${CA}
}

GRID grid2
{
GBASEDBTSERVER node4,node5
SLA grid2_any DBSERVERS=ANY \
POLICY=LATENCY
SLA grid2_avail DBSERVERS=${CA},${NY}
}

SERVERSET ss
{
GBASEDBTSERVER ids1,ids2,ids3
SLA ssavail DBSERVERS=ids1,ids2,ids3 \
HOST=apollo \
SERVICE=9600 \
NETTYPE=onsoctcp
SLA ssany DBSERVERS=(ids1,ids2,ids3) \
HOST=apollo \
SERVICE=9610 \
NETTYPE=onsoctcp
}
此示例将连接管理器配置为支持两个高可用性集群、一个复制集、两个网格和一个服务器
集。
配置文件头定义了以下内容:

cm2 定义为连接管理器实例的名称

定义了两个宏

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 434 -

NY,由 ny1、ny2 和 ny3 组成

CA,由 ca1、ca2 和 ca3 组成

已启用日志记录

cm2.log 定义为日志文件的名称

$GBASEDBTDIR/tmp 定义为日志目录
配置文件主体定义了用于六个连接单元的服务级别协议和故障转移处理选项。配置文件头
中定义的宏在某些 SLA 中使用。
某些参数和属性不包含在此配置文件中,因此连接管理器具有以下缺省行为:

未设置 DEBUG 参数,因此将禁用调试。

未设置 EVENT_TIMEOUT 参数,因此连接管理器将等待主服务器事件 60 秒,
然后再开始故障转移处理。

未设置 SECONDARY_EVENT_TIMEOUT 参数,因此连接管理器将等待辅助服
务器事件 60 秒,然后再与辅助服务器断开连接。

未设置 CM_TIMEOUT 参数,因此在下一个可用连接管理器成为故障转移仲裁器
之前,数据库服务器将等待 60 秒以从故障转移仲裁器连接管理器接收事件。

未设置 SQLHOSTS 参数,因此连接管理器将依次检查本地 sqlhosts 文件和远
程 sqlhosts 文件以查找数据库服务器实例。
连接管理器配置文件的参数
要设置连接管理器,您必须创建连接管理器配置文件。
CMALARMPROGRAM 参数

指定在故障转移处理遇到错误时要运行的程序或脚本的路径和文件名。如果故障转移处理
失败,那么连接管理器将调用 CMALARMPROGRAM 指定的程序。
在以下示例中,如果故障转移处理失败,将调用 cmalarmprogram.sh:
${GBASEDBTDIR}/etc/cmalarmprogram.sh
${GBASEDBTDIR} 是 GBASEDBTDIR 环境变量的值。
CM_TIMEOUT 参数

指定在下一个可用连接管理器成为故障转移仲裁器之前,数据库服务器等待从故障转移仲
裁器连接管理器接收事件的秒数。 如果未指定 CM_TIMEOUT,超时为 60 秒。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 435 -
DEBUG 参数

指定是启用还是禁用调试方式。

1 启用 SQL 和 ESQL/C 错误消息的日志记录。

0 禁用 SQL 和 ESQL/C 错误消息的日志记录。
如果连接管理器配置文件中未指定 DEBUG,将禁用调试方式。
不能从命令行启用调试方式。
EVENT_TIMEOUT 参数

指定连接管理器在开始故障转移处理之前,等待主服务器事件的秒数。主服务器事件由主
服务器发出,用于表明该服务器仍在运行,如性能统计信息、节点更改或管理消息。

-1 表示连接管理器无限期等待来自主服务器的事件,或等到收到某个辅助服务器
有关主服务器已脱机的通知为止。

值 0 到 30 会读取为 30。
如果连接管理器配置文件中未指定 EVENT_TIMEOUT,那么连接管理器在开始故
障转移处理之前,将等待主服务器事件 60 秒。
FOC 参数和属性

指定连接管理器用于确定在主服务器发生故障时由哪台服务器进行接管的故障转移配置。
FOC 参数对于连接单元类型 REPLSET、GRID 和 SERVERSET 无效。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 436 -
重要: 如果指定了 FOC 参数并且故障转移处理开始,那么在故障转移处理完成之前,不
能手动重新启动发生故障的主服务器。
表 1. FOC 参数的属性
FOC 参数的属性
描述
ORDER
指定服务器类型的逗号分隔列表,或指定服务器类型
列表是否来自集群的主服务器的 HA_FOC_ORDER
配置参数。 要配置多个连接管理器实例来管理高可
用性集群,请在主服务器的 onconfig 文件中设置
HA_FOC_ORDER 配置参数。

ENABLED 指定在故障转移仲裁时会考虑连
接管理器,并使用主服务器的
HA_FOC_ORDER 配置参数值来确定节点故
障转移顺序。

DISABLED 禁止连接管理器进行故障转移处
理。如果禁用了故障转移处理,连接管理器
将忽略故障转移请求。

HDR 指定高可用性数据复制辅助服务器。

RSS 指定远程独立辅助服务器

SDS 指定共享磁盘辅助服务器。
如果未指定 ORDER 属性,并且未设置主服务器的
HA_FOC_ORDER 配置参数,那么故障转移的顺序
依次为 SDS、HDR 和 RSS。
重要: 如果 FOC 参数的 PRIORITY 属性设置为正
整数,那么 ORDER 属性必须设置为 ENABLED。
PRIORITY
指定在应用程序所在相同主机上或在高可用性集群中
应用程序服务器上运行的连接管理器的故障转移优先
级。PRIORITY 值必须为 0 或者正整数值,并且在配
置为管理特定集群的所有连接管理器中必须是唯一
的。

0 指定在发生集群网络故障后禁用故障转移。
如果活动的仲裁器连接管理器检测到主数据
库服务器处于不活动状态,或者如果与主数

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 437 -
据库服务器的连接丢失,那么该仲裁器连接
管理器将开始故障转移。

1 指定连接管理器具有最高优先级。
重要: 如果 PRIORITY 值设置为正整数,那么 FOC
参数的 ORDER 属性必须设置为 ENABLED。
如果未指定 PRIORITY 属性,那么在发生集群网络故
障后将禁用连接管理器故障转移。
仅当优先级最高的连接管理器可以保持与新的主数据
库服务器的有效连接时,才能执行故障转移。例如,
如果 PRIORITY=2 的连接管理器尝试执行故障转移
时,PRIORITY=1 的连接管理器与主数据库服务器的
连接会丢失,那么将阻塞该故障转移请求。然而,如
果 PRIORITY=1 的连接管理器尝试开始故障转移
时,PRIORITY=2 的连接管理器与主数据库服务器的
连接会丢失,那么将允许该故障转移请求继续。
RETRY
指定连接管理器尝试完成故障转移期间,在 ORDER
属性值中循环的次数。在未成功故障转移的情况下达
到 RETRY 限制后,将生成警报,并且连接管理器会
终止自动执行的故障转移尝试。

0 指示连接管理器无限期地继续故障转移处
理。

如果未指定 RETRY 属性,连接管理器将在
ORDER 属性值中循环一次。
TIMEOUT
指定连接管理器在开始故障转移处理之前,再等待主
服务器事件的秒数。
TIMEOUT 属性值在超出 EVENT_TIMEOUT 参数值后应
用。例如,如果 EVENT_TIMEOUT 参数设置为 60,
而 TIMEOUT 值设置为 10,那么必须在经过 70 秒

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 438 -
都没有收到任何主服务器事件的情况下,才能开始故
障转移。
如果未指定 TIMEOUT 属性,那么故障转移将在超出
EVENT_TIMEOUT 参数值指定的时间量后立即开始。
GBASEDBTSERVER 参数

指定初始化期间连接管理器连接到的数据库服务器。
LOCAL_IP 参数

指定运行连接管理器的计算机上要监视的 IP 地址。LOCAL_IP 参数与 FOC 参数的
PRIORITY 属性结合使用。必须列出要监视的每块网络接口卡的 IP 地址。
LOG 参数

为连接管理器方式指定日志记录。

0 指定不进行日志记录。

1 指定记录有关 PROXY 和 REDIRECT 服务级别协议的连接信息。

2 仅记录 PROXY 方式 SLA 信息,并指定记录客户机和连接管理器之间的数据
发送和接收活动。

3 仅记录 PROXY 方式 SLA 信息,并指定记录客户机与连接管理器之间的数据
内容。
如果未设置 LOG 参数,将禁用日志记录。
LOGFILE 参数

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 439 -

指定连接管理器日志文件的名称和位置。连接管理器启动时会显示该日志文件的路径和文
件名,并且在连接管理器运行期间,该日志文件会持续更新状态信息。 该日志文件对于
监视和故障诊断用途是必需的。
确保该日志文件的目录存在,并且已为启动连接管理器的用户启用对该文件的访问权。
如果未设置 LOGFILE 参数,连接管理器将在 $GBASEDBTDIR/tmp 目录中创建日志文
件,名称为connection_manager_name.process_ID.log。
在以下示例中,cm.log 是连接管理器日志文件:
${GBASEDBTDIR}/tmp/cm.log
${GBASEDBTDIR} 是 GBASEDBTDIR 环境变量的值。
MACRO 参数

指定宏的名称和服务器名称列表。宏在用于 SLA 定义时将成为服务器名称列表。
例如,以下参数定义名为 CA 的宏,其中列出了三台服务器:
MACRO CA=ca1,ca2,ca3
通过用圆括号将服务器列表括起,可以在宏内定义负载均衡(其中连接基于所列数据库服
务器的 CPU 使用率进行定向):
MACRO CA=(ca1,ca2,ca3)
MACRO 参数可以设置多次以创建多个宏。 例如:
MACRO NorthCA=ca1,ca2,ca3
MACRO SouthCA=ca4,ca5,ca6
NAME 参数

指定连接管理器实例的名称。 连接管理器实例的名称对于监视、关闭或重新装入连接管
理器是必需的。如果未设置 NAME 参数,那么第一个 SLA 的名称将用作连接管理器实
例名称。连接管理器实例名称必须唯一。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 440 -
SECONDARY_EVENT_TIMEOUT 参数

指定连接管理器在与辅助服务器断开连接之前,等待辅助服务器事件的秒数。

-1 表示连接管理器无限期等待来自辅助服务器的事件。

值 0 到 30 会读取为 30。
如果未设置 SECONDARY_EVENT_TIMEOUT 参数,超时将为 60 秒。
SLA 参数

SQLHOSTS 属性


GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 441 -
客户机应用程序使用 SLA 名称连接到 DBSERVERS 属性值指定的数据库服务器或数据
库服务器类型。对于每个 SLA,侦听器线程会安装在服务器上的指定端口处,用于检测
入局客户机请求。SLA 参数可以在同一配置文件中多次指定;但是,每个 SLA 名称必须
唯一。
在一些可选属性可以在 SLA 定义中进行设置:

每个 SLA 通常在 sqlhosts 文件中都有一个对应的条目;但是,用户可以改为通过
设置 NETTYPE、HOST、SERVICE 和 SQLHOSTSOPT 属性,在 SLA 内部指
定 sqlhots 信息。例如,可以在 SLA 中输入以下 sqlhosts 条目中的值:
#dbserver nettype hostname servicename options
oltp1 onsoctcp host_1 sales_1 csm=path
SLA 条目:
SLA oltp1 DBSERVERS=primary \
NETTYPE=onsoctcp \
HOST=host_1 \
SERVICE=sales_1 \
SQLHOSTSOPT="cms=path"

MODE 属性指定连接请求是通过连接管理器传递,还是由连接管理器重定向。

POLICY 属性指定连接管理器如何确定选择列出的哪个数据库服务器来接收连接
请求。

USEALIASES 属性指定连接管理器是否可以将客户机连接请求重定向到
DBSERVERALIASES 配置参数指定的数据库服务器。
表 2. SLA 参数的必需属性和值。
必需属性

DBSERVERS
指定服务器、服务器别名、服务器类型或先前定义的用于定向连接请求的
宏。 用圆括号将列表括起可启用负载均衡,其中连接将定向到 CPU 利用
率最低的服务器。

ANY 指定连接请求可以发送到任何可用的数据库服务器。

HDR 指定连接请求可以发送到高可用性数据复制服务器。

PRI 或 primary 指定连接请求可以发送到主数据库服务器。

SDS 指定连接请求可以发送到共享磁盘辅助服务器。

RSS 指定连接请求可以发送到远程独立辅助服务器。

特定服务器名称或别名指定连接请求可以发送到具有该名称或别
名的数据库服务器。

${macro} 指定连接请求可以发送到配置文件头中的宏内所定义的

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 442 -
必需属性

数据库服务器。
表 3. SLA 参数的可选属性和值。
可选属性

MODE
指定连接请求是通过连接管理器传递,还是由连接管理器重定向。

PROXY 指定客户机连接将连接管理器用作代理服务器。客户机
应用程序无法连接到位于防火墙后面的数据库服务器时,请使用
代理方式。 由于代理服务器连接管理器将处理所有客户机请
求,因此配置多个连接管理器实例可避免连接管理器成为单个故
障点。

REDIRECT 指定客户机连接使用重定向方式,这将连接管理器配
置为向客户机应用程序返回相应服务器节点、IP 地址和端口
号。客户机应用程序使用连接管理器返回的 IP 地址和端口号来
连接到数据库服务器。
如果未设置 MODE 属性,连接请求将由连接管理器重定向。
POLICY
指定连接管理器如何定向客户机连接请求。指定 LATENCY 并不表示特
定等待时间段;而是表示连接管理器将使用采用相对值的公式来确定将
客户机连接请求定向到的位置。

LATENCY 指定连接管理器将连接请求定向到等待时间最短的服
务器。

FAILURE 指定连接请求将定向到应用失败次数最少的服务器。

WORKLOAD 指定连接请求将定向到工作负载最低的服务器
如果未设置 POLICY 属性,连接管理器会将连接请求定向到工作负载最
低的服务器。
可以为策略值提供相对权重。例如,要将客户机请求定向到等待时间最
短且应用失败次数最少(但等待时间比应用失败次数重要 10 倍)的服
务器,请使用以下值:
POLICY=10*LATENCY+FAILURE

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 443 -
要使用等待时间和失败策略:

网格必须具有启用复制的表。

必须启用数据质量 (qod) 监视。
USEALIASES
指定连接管理器是否可以将客户机连接请求重定向到 DBSERVERALIASES
配置参数指定的数据库服务器别名。

ON 指定连接管理器可以将客户机连接请求定向到 DBSERVERS
属性指定的服务器别名。

OFF 指定连接管理器不将客户机连接请求定向到 DBSERVERS
属性指定的服务器别名。
如果未设置 USEALIASES 属性,连接管理器可以将客户机连接请求定向
到 DBSERVERS 属性指定的服务器别名。
例如,数据库服务器 srv1 具有别
名 srv1_alias1 和 svr1_alias2,并且连接管理器包含以下服务级
别协议:
SLA sla1 DBSERVERS=srv1
SLA sla2 DBSERVERS=srv1 \
USEALIASES=OFF
SLA sla3 DBSERVERS=srv1_alias1
SLA sla4 DBSERVERS=srv1_alias1 \
USEALIASES=OFF
连接管理器将通过以下方式定向客户机请求:

CONNECT TO @sla1 请求可以定向到 srv1、
srv1_alias1 和 srv1_alias2。

CONNECT TO @sla2 请求将定向到 srv1。

CONNECT TO @sla3 请求可以定向到 srv1、
srv1_alias1 和 srv1_alias2。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 444 -

CONNECT TO @sla4 请求将定向到 srv1_alias1。
WORKERS
指定分配给 SLA 的工作程序线程数。指定了服务级别协议时,连接管理
器将创建 SLA 侦听器进程来拦截客户机连接请求。SLA 侦听器进程可以
有一个或多个线程,称为工作程序线程。
如果未设置 WORKERS 属性,将为 SLA 分配 4 个工作程序线程。
表 4. SLA 参数的可选 SQLHOSTS 属性和值。
可选
SQLHOSTS 属


HOST
指定数据库服务器的主机。将使用 SLA 中的值,而不是 sqlhosts 文
件中的值。

host_name 指定数据库服务器的主机名或主机别名。

ip_address 指定数据库服务器的 TCP/IP 地址。
NETTYPE
指定数据库服务器的网络协议。将使用 SLA 中的值,而不
是 sqlhosts 文件中的值。

onsoctcp 指定使用 TCP/IP 协议的套接字
SERVICE
指定数据库服务器的端口号或服务名称。将使用 SLA 中的值,而不
是 sqlhosts 文件中的值。

port_number 指定端口号。

service_name 指定服务名称。
SQLHOSTSOPT
指定在 SLA 中所指定的数据库服务器的连接选项。用一对引号将所有连
接选项括起。将使用 SLA 中的值,而不是sqlhosts 文件中的值。
SQLHOSTS 参数

要禁止客户机应用程序访问高可用性集群中的一个或多个数据库服务器时,SQLHOSTS
选项会很有用。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 445 -
连接管理器可以使用本地计算机或远程计算机上的 sqlhosts 文件条目。
表 5. SQLHOSTS 连接管理器配置参数的值
SQLHOSTS 参数值
描述
LOCAL
连接管理器在 GBASEDBTSQLHOSTS 环境变量指定的本
地 sqlhosts 文件中搜索请求的数据库服务器实例。
REMOTE
连接管理器在远程计算机上的 sqlhosts 文件中搜索请求的
数据库服务器实例。远程计算机由本地数据库服务器
的 GBASEDBTSQLHOSTS 环境变量指定。 远程计算机上
的 sqlhosts 文件由远程数据库服务器的
GBASEDBTSQLHOSTS 环境变量指定。
LOCAL+REMOTE(缺省
值)
连接管理器依次检查本地 sqlhosts 文件和远
程 sqlhosts 文件以查找 GBase 8s 实例。
如果未设置 SQLHOSTS 参数,连接管理器将首先检查本地 sqlhosts 文件以查找 GBase
8s 实例。 如果找不到请求的服务器条目,那么将使用远程服务器上的
DBSERVERNAME 或 DBSERVERALIASES 配置参数。
例如,您有一个 Web 服务器(位于外部网络上)和一个应用程序服务器(位于内部网络
上)。 数据库服务器为外部网络连接定义了 TCP/IP port1 和 port2,为内部连接定义了
TCP/IP port3 和 port4。指定 SQLHOSTS local 会使连接管理器只查找连接管理器实例的
sqlhosts 文件中定义的服务器实例。在这种情况下,连接管理器只会将客户机连接请求定
向到外部网络上的服务器。
unit_type

连接单元是特定的高可用性服务器配置。connection_unit_name 指定连接管理器识别连接
单元所依据的名称。 在连接管理器配置文件中指定组类型和连接单元,以将客户机连接
请求定向到相应的数据库服务器。每个名称在配置文件中必须唯一。
在配置文件中指定 CLUSTER 连接单元的名称时,请将与组名相同的名称用
于 GBASEDBTSQLHOSTS 文件中的对应集群。
在连接管理器配置文件中指定连接单元名称时,只有 GRID 和 REPLSET 连接单元类型
可以使用多字节字符。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 446 -
连接管理器配置文件中服务级别协议的示例
以下示例显示了如何针对高可用性集群、复制集、网格和服务器集来配置各种服务级别协
议 (SLA)。
在以下示例中,可以使用服务器别名或通用服务器类型。例如,RSS 指定连接管理器对集
群中的每个 RS 辅助服务器进行评估,以确定客户机应用程序请求的最佳候选项。您还可
以指定数据库服务器的网络别名,例如 sds1 或 rss1。
以下配置文件示例显示了各种选项:
示例 1:从服务级别协议进行连接请求重定向
NAME cm1
LOG 1
LOGFILE ${GBASEDBTDIR}/tmp/cm1.log

CLUSTER east
{
GBASEDBTSERVER ids_e1,ids_e2
SLA secondaryNodes DBSERVERS=SDS,HDR,PRI
FOC ORDER=ENABLED \
TIMEOUT=5 \
RETRY=1
CMALARMPROGRAM ${GBASEDBTDIR}/etc/CMALARMPROGRAM.sh
}
连接管理器 cm1 按如下所示定向 CONNECT TO @secondaryNodes 连接请求:
连接到任何可用 SD 辅助服务器。
如果 SD 辅助服务器不可用,那么连接到 HDR 辅助服务器。
如果 HDR 辅助服务器不可用,那么连接到主服务器。
示例 2:指定多个服务级别协议
NAME cm2
LOG 1
LOGFILE ${GBASEDBTDIR}/tmp/cm2.log

CLUSTER west
{
GBASEDBTSERVER ids_w1,ids_w2
SLA oltp DBSERVERS=primary
SLA report DBSERVERS=HDR,SDS

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 447 -
FOC ORDER=ENABLED \
TIMEOUT=5 \
RETRY=2
CMALARMPROGRAM ${GBASEDBTDIR}/etc/CMALARMPROGRAM.sh
}
此示例针对高可用性集群配置了连接管理器,并定义了两个 SLA。
配置文件主体定义了两个 SLA、故障转移参数以及故障转移处理失败时要调用的程序:
CONNECT TO @oltp 连接请求将定向到主服务器
CONNECT TO @report 连接请求将定向到 HDR 辅助服务器。如果 HDR 辅助服务器不
可用,CONNECT TO @report 连接请求将定向到任何可用的 SD 辅助服务器。
示例 3:服务级别协议中的负载均衡
要启用服务器间的负载均衡,请用圆括号将服务器类型列表括起。
NAME cm3
LOG 1
LOGFILE ${GBASEDBTDIR}/tmp/cm3.log

CLUSTER south
{
GBASEDBTSERVER ids_s1,ids_s2
SLA secondary DBSERVERS=(SDS,HDR)
FOC ORDER=ENABLED \
TIMEOUT=5 \
RETRY=1
CMALARMPROGRAM ${GBASEDBTDIR}/etc/CMALARMPROGRAM.sh
}
连接管理器 cm3 将客户机 CONNECT TO @secondary 连接请求定向到 CPU 利用率最低的
SD 或 HDR 辅助服务器。
示例 4:服务级别协议中的代理和重定向方式
在重定向方式下,连接管理器将指定数据库服务器的 IP 地址和端口号发送到客户机应用
程序。 然后客户机应用程序使用此 IP 地址和端口号来连接到数据库服务器。在代理方
式下,客户机请求将通过连接管理器进行路由。如果未指定 SLA 方式,重定向方式是缺
省方式。
NAME cm4
LOG 1
LOGFILE ${GBASEDBTDIR}/tmp/cm4.log

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 448 -

CLUSTER north
{
GBASEDBTSERVER ids_n1,ids_n2
SLA sla1 DBSERVERS=alpha \
MODE=REDIRECT
SLA sla2 DBSERVERS=beta \
MODE=PROXY
SLA sla3 DBSERVERS=SDS \
MODE=REDIRECT
FOC ORDER=ENABLED \
TIMEOUT=5 \
RETRY=1
CMALARMPROGRAM ${GBASEDBTDIR}/etc/CMALARMPROGRAM.sh
}
对于此示例:
主服务器的别名为 alpha
HDR 辅助服务器的别名为 beta
有两个 SD 辅助服务器,别名为 gamma1 和 gamma2
连接管理器 cm4 按如下所示定向客户机连接请求:
CONNECT TO @sla1 连接请求将定向到主服务器 (alpha)。
CONNECT TO @sla2 连接请求将通过连接管理器(充当代理服务器)定向到 HDR 辅助
服务器 (beta)。
CONNECT TO @sla3 连接请求将定向到可用资源最多的 SD 辅助服务器。
示例 5:主服务器、辅助服务器和连接管理器的超时
NAME cm5
LOG 1
LOGFILE ${GBASEDBTDIR}/tmp/cm5.log
CM_TIMEOUT 300
EVENT_TIMEOUT 45
SECONDARY_EVENT_TIMEOUT 50

CLUSTER southwest
{
GBASEDBTSERVER ids_sw1,ids_sw2

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 449 -
SLA oltp DBSERVERS=primary
MODE=PROXY
SLA report DBSERVERS=SDS,RSS,HDR
SLA primary DBSERVERS=primary
SLA secondary DBSERVERS=(SDS,RSS,HDR)
FOC ORDER=ENABLED \
RETRY=1
CMALARMPROGRAM ${GBASEDBTDIR}/etc/CMALARMPROGRAM.sh
}
如果数据库服务器在 300 秒内未接收到来自连接管理器的任何事件,该数据库服务器将
假定连接管理器未运行,而下一个可用的连接管理器将成为故障转移仲裁器。
如果连接管理器在 45 秒内未接收到来自主服务器的任何事件,那么连接管理器将开始故
障转移处理。如果为某个连接单元定义了 FOC 参数的 TIMEOUT 属性,那么该参数的
值会与 EVENT_TIMEOUT 参数的值相加,所得结果作为该连接单元的故障转移处理开始
之前要等待的总时间。
如果连接管理器在 50 秒内未接收到来自辅助服务器的任何事件,那么连接管理器将与该
辅助服务器断开连接。

CONNECT TO @oltp 连接请求将通过连接管理器(充当代理服务器)定向到主服
务器。

CONNECT TO @report 连接请求将定向到第一个可用的 SD 辅助服务器。如果
SD 辅助服务器不可用,CONNECT TO @report 连接请求将发送到任何可用的 RS
辅助服务器。如果 RS 辅助服务器不可用,那么 CONNECT TO @report 连接请求
将发送到 HDR 辅助服务器。

CONNECT TO @primary 连接请求将定向到主服务器。

CONNECT TO @secondary 连接请求将通过负载均衡定向到可用资源最多的辅助服
务器。
示例 6:服务级别协议中的宏和工作负载均衡
可以为服务器组定义宏。可以在宏内或 SLA 内定义负载均衡。
NAME cm6
MACRO NY=(ny1,ny2,ny3)
MACRO CA=(ca1,ca2,ca3)
LOG 1
LOGFILE ${GBASEDBTDIR}/tmp/cm6.log

REPLSET erset
{

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 450 -
GBASEDBTSERVER g_er1,g_er2
SLA repl1_any DBSERVERS=ANY
SLA repl1_ca DBSERVERS=${CA}
SLA repl1_ny DBSERVERS=${NY}
}
在此示例中,定义了两个宏:

NY,由 ny1、ny2 和 ny3 组成,并使用工作负载均衡。

CA,由 ca1、ca2 和 ca3 组成,并使用工作负载均衡。

连接管理器 cm6 按如下所示定向客户机连接请求:

CONNECT TO @repl1_any 连接请求将定向到任何可用的服务器。

CONNECT TO @repl1_ca 连接请求将定向到 ca1、ca2 或 ca3 中 CPU 利用率最低
者。

CONNECT TO @repl1_ny 连接请求将定向到 ny1、ny2 或 ny3 中 CPU 利用率最低
者。
示例 7:服务级别协议中的重定向策略
NAME cm7
MACRO SF=(sf1,sf2,sf3)
MACRO LA=(la1,la2,la3)
LOG 1
LOGFILE ${GBASEDBTDIR}/tmp/cm7.log

GRID grid1
{
GBASEDBTSERVER node1,node2,node3
SLA grid1_any DBSERVERS=ANY
POLICY=LATENCY
SLA grid1_avail DBSERVERS=${SF},${LA}
}
在此示例中,定义了两个宏:

SF,由 sf1、sf2 和 sf3 组成,并使用工作负载均衡。

LA,由 la1、la2 和 la3 组成,并使用工作负载均衡。
连接管理器 cm7 按如下所示定向客户机连接请求:

CONNECT TO @grid1_any 连接请求可以定向到任何可用的服务器。连接请求将定
向到等待时间最短的服务器。

CONNECT TO @grid1_avail 连接请求将定向到 sf1、sf2 或 sf3 中 CPU 利用率最

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 451 -
低者。如果 sf1、sf2 和 sf3 不可用,连接请求将发送到 la1、la2 或 la3 中 CPU 利
用率最低者。
示例 8:服务级别协议中的 sqlhosts 连接信息
NAME cm8
LOG 1
LOGFILE ${GBASEDBTDIR}/tmp/cm8.log

SERVERSET ss
{
GBASEDBTSERVER ids1,ids2,ids3
SLA ssavail DBSERVERS=ids1,ids2,ids3 \
HOST=apollo \
SERVICE=9600 \
NETTYPE=onsoctcp
SLA ssany DBSERVERS=(ids1,ids2,ids3) \
HOST=apollo \
SERVICE=9610 \
NETTYPE=onsoctcp
}
此示例显示了支持连接管理器所支持的服务器集的示例配置。连接管理器使用 HOST、
SERVICE 和 NETTYPE 属性的值,而不是服务器的 sqlhosts 文件中的值。
对于 ssavail SLA,ids1、ids2 和 ids3 具有以下 sqlhosts 信息:
#dbservername nettype hostname servicename options
ids1 onsoctcp apollo 9600
ids2 onsoctcp apollo 9600
ids3 onsoctcp apollo 9600
对于 ssany SLA,ids1、ids2 和 ids3 具有以下 sqlhosts 信息:
#dbservername nettype hostname servicename options
ids1 onsoctcp apollo 9610
ids2 onsoctcp apollo 9610
ids3 onsoctcp apollo 9610
连接管理器 cm8 按如下所示定向客户机连接请求:

CONNECT TO @ssavail 连接请求将定向到 ids1。如果 ids1 不可用,CONNECT TO
@ssavail 连接请求将发送到 ids2。如果 ids2 不可用,CONNECT TO @ssavail 连接
请求将发送到 ids3。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 452 -

CONNECT TO @ssany 连接请求将定向到 ids1、ids2 或 ids3 中 CPU 利用率最低
者。
连接管理器服务级别协议中故障转移配置的示例
以下示例显示了由连接管理器执行的故障转移的配置示例。
以下示例显示了将连接管理器配置为在原始主服务器遇到问题时将辅助服务器提升为主服
务器的多种方法。每个服务级别协议 (SLA) 都应该定义故障转移配置。
如果使用多个连接管理器来管理集群的故障转移,请在集群的主服务器上设置
HA_FOC_ORDER 配置参数。HA_FOC_ORDER 配置参数的值会替换连接到主服务器的
每个连接管理器的配置文件中 FOC ORDER= 的值。
对于以下示例,所有服务器上的 HA_FOC_ORDER 配置参数都是缺省值 SDS,HDR,RSS
(依次为共享磁盘辅助服务器、高可用性数据复制辅助服务器和远程独立辅助服务器)。
示例 1:立即故障转移
FOC ORDER=ENABLED TIMEOUT=0
在此示例中,指定了以下行为:

如果连接管理器检测到主服务器因在 EVENT_TIMEOUT 值指定的时间量内未发
生任何主服务器事件而脱机,那么由于 TIMEOUT 值设置为 0,因此故障转移处
理将立即启动。

连接管理器首先尝试将最适合的 SDS 服务器转换为主服务器。如果没有任何
SDS 服务器联机,那么连接管理器会尝试将 HDR 服务器转换为主服务器。 如
果 HDR 服务器未联机,那么连接管理器会尝试将最适合的 RSS 服务器转换为
主服务器。

由于未指定 RETRY 属性,因此连接管理器将在 ORDER 属性值中循环一次。
示例 2:包含延长的超时的故障转移
FOC ORDER=ENABLED TIMEOUT=10
在此示例中,指定了以下行为:

如果连接管理器检测到主服务器因在 EVENT_TIMEOUT 值指定的时间量内未发
生任何主服务器事件而脱机,那么 TIMEOUT 值会使连接管理器再等待 10 秒,
以等待主服务器恢复联机,然后才能开始故障转移处理。

故障转移处理期间,连接管理器首先尝试将最适合的 SDS 服务器转换为主服务
器。如果没有任何 SDS 服务器联机,那么连接管理器会尝试将 HDR 服务器转
换为主服务器。 如果 HDR 服务器未联机,那么连接管理器会尝试将最适合的
RSS 服务器转换为主服务器。

由于未指定 RETRY 属性,因此连接管理器将在 ORDER 属性值中循环一次。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 453 -
示例 3:包含延长的超时、重试和警报的故障转移
FOC ORDER=ENABLED TIMEOUT=20 RETRY=2
CMALARMPROGRAM ${GBASEDBTDIR}/etc/cmalarmprogram.sh
在此示例中,指定了以下行为:

如果连接管理器检测到主服务器因在 EVENT_TIMEOUT 值指定的时间量内未发
生任何主服务器事件而脱机,那么 TIMEOUT 值会使连接管理器再等待 20 秒,
以等待主服务器恢复联机,然后才能开始故障转移处理。

故障转移处理期间,连接管理器首先尝试将最适合的 SDS 服务器转换为主服务
器。如果没有任何 SDS 服务器联机,那么连接管理器会尝试将 HDR 服务器转
换为主服务器。 如果 HDR 服务器未联机,那么连接管理器会尝试将最适合的
RSS 服务器转换为主服务器。

连接管理器在等待成功完成故障转移期间,最多会在 ORDER 列
表 SDS,HDR,RSS 中循环两次。

如果在 ORDER 列表中循环两次后,故障转移仍未完成,那么将调
用 cmalarmprogram.sh 程序来生成警报,并且连接管理器会终止故障转移。