返回首页

gbase数据、南大通用产品文档:GBase8sCLUSTER_TXN_SCOPE 配置参数

更新日期:2024年09月11日

设置 CLUSTER_TXN_SCOPE 配置参数来配置高可用性集群,以便在客户端会话发出提交时,
服务器在辅助服务器上或跨集群地阻塞会话直到事务在那个会话中应用。
onconfig.std 值
CLUSTER_TXN_SCOPE SERVER

l SESSION = 当客户端会话发出提交时,数据库服务器阻塞会话,直到事务提交的影
响返回到那个会话。控制返回到会话之后,同一个数据库服务器的其他会话或集
群中其他数据库服务器上的其他会话可能觉察不到事务提交和事务的影响。
l SERVER (缺省行为) = 当客户端会话发出提交时,数据库服务器阻塞会话,直到
事务应用在客户端发出提交的那个数据库服务器。那个数据库服务器的其他会话
觉察到事务提交和事务的影响。集群中的其他数据库服务器会话可能觉察不到事
务的提交及其影响。对于高可用性集群服务器,这是缺省行为。

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

l CLUSTER = 当客户端会话发出提交时,数据库服务器阻塞会话,直到事务应用在高
可用性集群中所有数据库服务器,除了使用 DELAY_APPLY 或 STOP_APPLY 的 RS
辅助服务器之外,这些会话觉察到事务提交和事务的影响。
生效
编辑 onconfig 文件并重启数据库服务器之后。
当您通过运行onmode -wf 命令在 onconfig 文件中动态地重置该值时。
当您通过运行 onmode -wm 命令重置内存中的该值时。
您运行带有 -wf CLUSTER_TXN_SCOPE=value 或 -wm CLUSTER_TXN_SCOPE=value 参数的
SQL 管理 API task() 或 admin() 函数之后。
用法
设置 CLUSTER_TXN_SCOPE 配置参数来控制从高可用性集群返回事务提交到客户端应用程
序。集群事务协调可延迟事务提交到客户端应用程序的返回,直到事务应用到辅助服务器
或高可用性集群中的所有辅助服务器。 这个例程防止由于异步日志处理导致的操作失败,
并确保多步骤处理中的那些步骤按串行顺序发生。
集群事务协调不应用到 RS 辅助服务器,
该服务器有 DELAY_APPLY 或 STOP_APPLY 配置函
数值而不是 0。在客户端应用程序可收到提交之前,事务不需要应用在 RS 辅助服务器上。

CLUSTER_TXN_SCOPE 影响只读辅助服务器和可更新辅助服务器上的会话。
示例1:在高可用性集群服务器间的事务协调
在这个示例中,客户端应用程序启动一个两步骤进程。客户端应用程序在主数据库服务器
上插入数据,然后在 HDR 辅助服务器上启动数据处理。
在来自主服务器的日志应用在 HDR 辅助服务器上之前,如果试图在 HDR 服务器上对插入
的数据执行 SELECT,
则操作失败。
为了防止此失败,
设置主服务器的 CLUSTER_TXN_SCOPE
配置参数为 CLUSTER,以便客户端应用程序不收到提交,且不可启动数据处理,直到数据
插入页应用在 HDR 辅助服务器上。
示例2:数据库服务器上的事务协调
在此示例中,您让一个客户端应用程序分作几个处理步骤。每个处理步骤使用一个不同的
SQL 会话来连接到数据库服务器。应用程序更新数据,然后应用程序的另一部分在不同的
SQL 会话中处理被更新的数据。
如果 CLUSTER_TXN_SCOPE 设置为 SESSION,
则处理被更新的数据的那部分应用程序觉察不
到更新的结果,
可发生失败。
为了防止此失败,
设置数据库服务器的 CLUSTER_TXN_SCOPE 配
置参数为 SERVER,以便客户端应用程序不接收提交,且不启动数据处理,直到在数据库服
务器上更新完成。

编辑集群配置文件。
模板配置文件默认在安装目录中
(例如/home/gbase/gbase_package/)

安装时可移动至其他owner 为gbase 用户路径下。
用户需要根据实际情况,修改配置文件名和其中节点参数信息。
不需要使用的参数,可
直接删除或使用#符号注释掉。
例如,安装目录为/home/gbase/gbase_package/,将模板文件复制到owner 为gbase 用户
的/home/gbase 目录下,并编辑gbase.yml 配置文件:
[gbase@gbase8c gbase_package]$ cp /home/gbase/gbase_package/gbase.yml
/home/gbase/
[gbase@gbase8c gbase_package]$ cd /home/gbase/
[gbase@gbase8c gbase]$ vim /home/gbase/gbase.yml
修改配置文件中节点参数信息。例如:
gha_server:

GBase 8c V5 安装部署手册(分布式)
南大通用数据技术股份有限公司
20
- gha_server1:
host: 10.0.7.16
port: 20001
dcs:
- host: 10.0.7.16
port: 2379
- host: 10.0.7.17
port: 2379
- host: 10.0.7.18
port: 2379
gtm:
- gtm1:
host: 100.0.7.16
agent_host: 10.0.7.16
role: primary
port: 6666
agent_port: 8001
work_dir: /home/gbase/data/gtm/gtm1
- gtm2:
host: 100.0.7.17
agent_host: 10.0.7.17
role: standby
port: 6666
agent_port: 8002
work_dir: /home/gbase/data/gtm/gtm2
coordinator:
- cn1:
host: 100.0.7.17
agent_host: 10.0.7.17
role: primary
#syncMode: sync
port: 5432
agent_port: 8003
work_dir: /home/gbase/data/coord/cn1
- cn2:
host: 100.0.7.18
agent_host: 10.0.7.18
role: standby
port: 5432
#syncMode: sync
agent_port: 8004

GBase 8c V5 安装部署手册(分布式)
南大通用数据技术股份有限公司
21
work_dir: /home/gbase/data/coord/cn2
datanode:
- dn1:
- dn1_1:
host: 100.0.7.17
agent_host: 10.0.7.17
role: primary
port: 15432
agent_port: 8007
work_dir: /home/gbase/data/dn1/dn1_1
- dn1_2:
host: 100.0.7.18
agent_host: 10.0.7.18
role: standby
port: 15432
agent_port: 8007
work_dir: /home/gbase/data/dn1/dn1_2
- dn1_3:
host: 100.0.7.16
agent_host: 10.0.7.16
role: standby
port: 15432
agent_port: 8007
work_dir: /home/gbase/data/dn1/dn1_3
- dn2:
- dn2_1:
host: 100.0.7.18
agent_host: 10.0.7.18
role: primary
port: 20010
agent_port: 8008
work_dir: /home/gbase/data/dn2/dn2_1
# numa:
#
cpu_node_bind: 0,1
#
mem_node_bind: 0,1
- dn2_2:
host: 100.0.7.16
agent_host: 10.0.7.16
role: standby
port: 20010
agent_port: 8008

GBase 8c V5 安装部署手册(分布式)
南大通用数据技术股份有限公司
22
work_dir: /home/gbase/data/dn2/dn2_2
# numa:
#
cpu_node_bind: 2
#
mem_node_bind: 2
- dn2_3:
host: 100.0.7.17
agent_host: 10.0.7.17
role: standby
port: 20010
agent_port: 8008
work_dir: /home/gbase/data/dn2/dn2_3
# numa:
#
cpu_node_bind: 3
#
mem_node_bind: 3
env:
# cluster_type allowed values: multiple-nodes, single-inst, default is
multiple-nodes
cluster_type: multiple-nodes
pkg_path: /home/gbase/gbase_package
prefix: /home/gbase/gbase_db
version: V5_S3.0.0BXX
user: gbase
port: 22
#constant:
#
virtual_ip: 10.0.7.254/24
#
virtual_nic: ens224
其中,必选参数说明如下:

host 参数:指定此节点由数据面节点(gtm、cn、dn)访问连接的IP 地址。

agent_host 参数:指定此节点由控制面节点(gha_server、dcs)访问连接的IP 地址。可
与host 参数相同,表示数据面和控制面均通过同一IP 地址访问连接此节点。
注意

当主机为双网卡时,建议控制面设置在千兆网卡,
数据面设置在万兆网卡,以避免
大流量数据影响高可用报文的实时性。

role 参数:
集群节点角色类型。
可选值为primary 或standby。
在gtm、
coordinator、
datanode
节点参数中,为必选字段。

GBase 8c V5 安装部署手册(分布式)
南大通用数据技术股份有限公司
23

port 参数:集群节点连接端口号。

agent_port 参数:高可用端口号。

syncMode 参数:仅CN 为只读(standby)时,需设置此项。可选值为sync、async。其
中sync(同步)表示只读CN 在同步备机进行读操作;async 表示只读CN 在异步备机
进行读操作。

work_dir 参数:集群节点数据存放目录。

cluster_type 参数:指定集群的类型。部署分布式集群时,指定参数为multiple-nodes;
部署主备式集群时,指定参数为single-inst。

pkg_path 参数:指定数据库安装包的存放路径。与5.2 准备安装包中安装目录相同。

prefix 参数:指定运行目录路径。安装时后台自动扫描该目录是否已存在,若不存在,
则自动创建;若已存在,请注意需确保owner 为gbase 用户。

version 参数:指定安装包版本。格式为V5_S3.0.0BXX,XX 为具体版本号,可根据安
装包名称相应修改。如该参数配置错误,将找不到安装包而导致安装失败。
注意

可能受资源限制等因素影响,
需重复使用同一节点,
保证其仅承担一个高可用组的
主节点角色。且避免端口复用而报错。

语法
./orato8a parameter_1 parameter_2 …… parameter_n
说明

parameter_1:orato8a 的参数,一个orato8a 后可以使用多个参数,参数可以使用全称
格式,也可以使用简称格式;

全称格式:--parameter_1=参数值,“=”两边不能有空格;

简称格式:-parameter_1 参数值,简写格式时,参数和参数值之间不能有空格;

执行orato8a 的用户,必须是可以访问oracle 数据库的用户。
示例

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
525
orato8a 工具如何从oracle 中抽取数据,在本示例中,首先登录oracle,然后写一条
查询SQL,该SQL 在库中查询表lineorder 中的10 条数据;退出oracle,使用orat
o8a 工具抽取查询SQL 的结果数据,以验证orato8a 抽取数据的功能,具体如下:
$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Thu Sep 26 16:37:41 2013
Copyright (c) 1982, 2009, Oracle.
All rights reserved.
SQL> conn ct1/ct1@//192.168.103.79/orcl
Connected.
SQL> CREATE TABLE lineorder_test (
2
lo_orderkey
number(18),
3
lo_linenumber
number(18)
4
);
Table created.
SQL> INSERT INTO lineorder_test (lo_orderkey,lo_linenumber) VALUES(1,1);
1 row created.
SQL> INSERT INTO lineorder_test (lo_orderkey,lo_linenumber) VALUES(1,2);
1 row created.
SQL> INSERT INTO lineorder_test (lo_orderkey,lo_linenumber) VALUES(1,3);
1 row created.
SQL> INSERT INTO lineorder_test (lo_orderkey,lo_linenumber) VALUES(2,1);
1 row created.
SQL> INSERT INTO lineorder_test (lo_orderkey,lo_linenumber) VALUES(2,2);
1 row created.
SQL> INSERT INTO lineorder_test (lo_orderkey,lo_linenumber) VALUES(2,3);
1 row created.

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
526
SQL> INSERT INTO lineorder_test (lo_orderkey,lo_linenumber) VALUES(2,4);
1 row created.
SQL> INSERT INTO lineorder_test (lo_orderkey,lo_linenumber) VALUES(3,1);
1 row created.
SQL> INSERT INTO lineorder_test (lo_orderkey,lo_linenumber) VALUES(3,2);
1 row created.
SQL> INSERT INTO lineorder_test (lo_orderkey,lo_linenumber) VALUES(3,3);
1 row created.
SQL> COMMIT;
COMMIT complete.
SQL> SELECT LO_ORDERKEY, LO_LINENUMBER FROM lineorder_test;
LO_ORDERKEY LO_LINENUMBER
----------- -------------
1
1
1
2
1
3
2
1
2
2
2
3
2
4
3
1
3
2
3
3
10 rows selected.
然后退出oracle,使用orato8a 抽取上面查询的数据。
$ ./orato8a --user='ct1/ct1ct1@orcl' --query="select LO_ORDERKEY, LO_LINENUMBER
FROM lineorder_test" --file='/opt/orato8a_output/lineorder.txt ' --field=";" --format=3
export columns: 2
export rows: 10
export time: 0 sec
process ok!

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
527
$ cat /opt/orato8a_output/lineorder.txt
1;1
1;2
1;3
2;1
2;2
2;3
2;4
3;1
3;2
3;3
导出的数据文件中的内容与在oracle 系统中查询的结果一致。