6.1 相关参数
6.1.1 DM.INI
DM.INI 是 DM 数据库实例的配置文件,通过配置该文件可以设置 DM 数据库服务器的各种功能和性能选项。
6.1.1.1 DMDPC 相关的参数
DM.INI 中的配置项多达数百个,涉及 DM 数据库运行各个方面的设置,这里我们只介绍与 DMDPC 相关的几个配置项,读者若对其他配置项感兴趣可以参看《DM8 系统管理员手册》的相关章节。
参数 | 说明 | 属性 | 缺省值 |
---|---|---|---|
INSTANCE_NAME | 实例名称。推荐以角色开头,例如:SP_1,BP_2 | 静态 | DMSERVER |
PORT_NUM | 数据库服务器监听端口,SP/BP 本地设置的 PORT_NUM 如果和自身在 MP 上注册的不一致,按照在 MP 上实际注册的为准,启动时会自动覆盖 | 静态 | 5236 |
AP_PORT_NUM | 分布式环境下协同工作的监听端口,SP/BP 本地设置的 AP_PORT_NUM 如果和自身在 MP 上注册的 AP_PORT_NUM 不一致,按照在 MP 上实际注册的为准,启动时会自动覆盖 | 静态 | 6000 |
DPC_OPT_FLAG | 执行计划优化策略。取值 1、2、4、8、16、32、64、128、256、512、1024、2048、4096 和 8192,或上述任意取值的和。 1:表示忽略 UNIONALL,将分支的内容直接发给 UNIONALL 之上的 ERECV; 2:表示根据 HSCN 的使用情况,对 HTAB 的分布信息调整,可以减少 HSCN 之后的数据分发量; 4:表示在通讯符之前将 afun 转换成两个,可以减少通讯量; 8: 表示按照实际执行的 BP 个数调整子任务并行度; 16:根据利用统计信息最大、最小值计算相同表不同别名的选择率。例如 t1.c1 + 10 > t1.c1 ==> t1.c1 < max(t1.c1) +10; 32:同时开启 SP、MP 和 BP 节点的计划缓存的功能,减少事务密集型应用中计划发送带来的耗时。非 32 的情况下,只有 SP 具有计划缓存功能; 64:多列 primary key 用于连接时的行数估算调整优化; 128:根据估算的行数对连接、分组等使用到的哈希表大小进行缩放优化; 256:哈希连接时,如果连接左边数据来自广播,启用共享哈希表优化减少哈希表构造开销; 512:huge 表考虑 hfsek 与 hfscn+slct 的代价; 1024:计划只从几个子任务开始,而不是所有的叶子节点; 2048:DISTINCT 尝试下放至集合运算的左右侧的子任务先做; 4096:afun/sagr+sort+dis 的 sort 下放到 dis 下面,变成 afun/sagr+dis(归并信息)+sort。sort 放到 dis 下面后,每一路可先做排序,如果子任务并行度比 sagr/afun 的并行度大时能较快的完成排序; 8192:esend 发送时对 link_id 进行优化。优化后,消息可以多条链路同时发生,而非一条链路串行 | 动态,会话级 | 16383 |
ALTER_MODE_STATUS | 在多副本系统中使用。 是否允许手工修改服务器的模式、状态和 OGUID。1:允许;0:不允许。建议设置为 0 | 动态,系统级 | 1 |
DPC_2PC | DMDPC 系统是否采用两阶段提交策略及是否使用优化方案。 0:关闭两阶段提交,没有故障的情况下直接提交效率更高,但是出现故障就无法保证事务一致性了; 1:启用两阶段提交; 2 或 3:启用两阶段提交,启用 trxid 缓存,启用 snap_seq 缓存方案优化; 4 或 5:启用两阶段提交,启用 trxid 缓存,启用 snap_seq 本地优化; 6 或 7:启用两阶段提交,启用 trxid 缓存,启用 snap_seq 缓存,启用 snap_seq 本地优化 | 手动 | 1 |
SWITCH_CONN | JDBC 客户端是否进行连接切换,执行过程中发现计划只和一个 BP 相关时,客户端是否切换到该 BP 执行。 0:否;1:是。 此参数需要和 JDBC 驱动/dm_svc.conf 配合使用,只用于 BS 模式 | 动态,系统级 | 0 |
TRC_LOG | TRACE 日志开关。需和 TRC_LOG_MODULE 配合使用。 0:表示关闭; 非 0:为功能组合值,组合规则为: switch_mod4 + asyn_flag2 + 1。其中,<switch_mode> 日志文件切换方式: 0 不切换;1 按文件记录行数,满 10000 行切换;2 按文件大小进行切换,满 128M 切换; 3 按时间间隔进行切换,每小时切换。 <asyn_flag> 日志文件是否采用异步方式:0 否,采用同步方式; 1 是,采用异步方式 。 TRACE 日志位于安装目录下的/log 中,名称为 dmtrc_instname.log(不含切换方式)或 dmtrc_instname_日期时间.log(含有切换方式) | 动态,系统级 | 0 |
TRC_LOG_MODULE | 当打开 TRC_LOG 开关时,用于配置 TRACE 日志中记录的内容。该参数为字符类型,最大长度 128。 书写格式为:TRC_LOG_MODULE=服务器记录项,DMDPC 记录项。 服务器记录项和 DMDPC 记录项设置方法相同。缺省表示不记录该模块中的任何内容。 具体记录项和代号: 内存 MEM (0),任务线程 TSK (1), 站点信息 SITE (2), 事务 TRX (3), 通信消息 MSG (4), 会话 SESS (5),计划 PLN_GEN (6), HUGE 文件系统 HFS (7),0 |
动态,系统级 | ALL |
DPC_LOG_INTERVAL | MP 定时通知各节点生成相同时间点日志的时间间隔。取值范围 0~1440(24 小时)。以分钟为单位。0 表示关闭定时通知功能。 此参数打开后,可支持使用归档恢复到指定时间点功能,在对系统性能有要求的情况下,可以调大或关闭此参数值 | 动态,系统级 | 0 |
SQC_GI_NUM_PER_TAB | 每个表拆分的扫描单元个数。取值范围 1~1024。 扫描表对象时,每个表可以被拆分成多个单元以提升并行性能。参数值表示拆分的单元个数,每个单元可以独立用于工作线程的扫描任务。例如:需要扫描一个子表且子表数据量较大,为充分利用工作线程资源,可以调大此参数以使用分区内并行 | 动态,会话级 | 1 |
HP_TAB_COUNT_PER_BP | 创建一级、二级哈希分区时,如果分区数指定为 DEFAULT 而不是具体数值,系统会根据本参数值决定每个 BP RAFT 上创建的哈希子表个数。 取值范围 1~1024 | 动态,会话级 | 1 |
DPC_SYNC_STEP | 打开 DMDPC 限流(MPP_MOTION_SYNC 非 0)时使用。 表示检查接收端数据堆积的步长,即每发送 DPC_SYNC_STEP 次 BDTA 后检查一次是否堆积。取值范围 1~5000 | 动态,会话级 | 16 |
DPC_SYNC_TOTAL | 打开 DMDPC 限流(MPP_MOTION_SYNC 非 0)时使用。XBOX 上所有来源路数(并行线程数)的总限流资源数。取值范围 0~10000。0 表示不限总资源数 | 动态,会话级 | 0 |
XBOX_DUMP_THRESHOLD | XBOX 邮件内存阈值,超过该值则保存到文件中。取值范围 0~409600。单位 MB。 和 XBOX_DUMP_PATH 一起设置才生效 | 动态,系统级 | 0 |
XBOX_DUMP_PATH | XBOX 邮件保存到临时文件的目录。 和 XBOX_DUMP_THRESHOLD 一起设置才生效 | 手动 | 空串 |
STMT_XBOX_REUSE | DMDPC 会话的语句是否重用 box_id。 0:否,每个语句都请求分配一个 box_id; 1:是 | 动态,会话级 | 1 |
xbox_short_msg_size | 在配置了 xbox_dump_threshold 后,即使内存达到阈值的情况下,小于此长度的短消息也不会保存到文件,防止大量的文件读写。 取值范围 0~32768。单位 MB | 系统,会话级 | 1024 |
DPC_TRX_TIMEOUT | 用于 DMdpc 中,表示事务等待超时时间。取值范围 0~604800。单位秒 | 动态,会话级 | 10 |
DPC_GUP_SESS_TIMEOUT | 用于 DMdpc 中,表示 sP 升级时事务、会话超时断开时间。取值范围 60~600。单位秒 | 动态,会话级 | 180 |
DPC_TABLESPACE_BALANCE | 当在 DPC 下创建分区表,子表个数少于所选择的表空间个数时,是否启用随机选择起始表空间以使得表空间负载均衡。0:不启用;1:启用 | 动态,系统级 | 0 |
DPC_DCT_REFRESH_POLICY | MP 广播实例字典信息优化开关。 0:表示关闭,MP 会定时广播实例字典信息; 1:表示打开,MP 只会在每次修改实例字典信息时进行广播 | 动态,系统级 | 1 |
ENET_SESS_CHECK_INTERVAL | 当 BP/SP 处于 MP 无效服务状态时,BP/SP 断开会话连接的时间间隔阈值。如果 BP/SP 处于 MP 无效服务状态的时间超过该阈值,则会主动断开所有会话连接。取值范围 0~4294967294,单位 S。0 表示关闭 | 动态,系统级 | 10 |
ETHD_FLAG | 是否启用 esess 线程池,取值范围 0~1。0 表示关闭;1 表示打开 | 静态 | 0 |
EHTD_THREAD_NUM | 每个 esess 线程池初始化的线程数量。取值范围 1~10000 | 静态 | 8 |
ETHD_GRP_NUM | 初始化的 esess 线程池数量。取值范围 1~64 | 静态 | 8 |
RLOG_RAFT_NEED_WAIT | 主库是否进行日志包发送等待控制,仅 RAFT 主库生效。 0:主库不进行日志包发送控制;1:任意备库存在日志堆积时,根据 RLOG_RAFT_WAIT_TIME 暂缓日志包发送;2:存在日志堆积的备库个数超过备库总数的半数时,根据 RLOG_RAFT_WAIT_TIME 暂缓日志包发送;3:任意归档状态有效的备库存在日志堆积,根据 RLOG_RAFT_WAIT_TIME 暂缓日志包发送;4:存在日志堆积的归档状态有效的备库个数超过备库总数的半数时,根据 RLOG_RAFT_WAIT_TIME 暂缓日志包发送 | 动态, 系统级 | 3 |
RLOG_RAFT_WAIT_TIME | 备库出现堆积后,RAFT 主库延迟发送等待时间,取值范围 0~3600000,单位 MS。仅 RAFT 主库生效 | 动态, 系统级 | 1000 |
SHADOW_CHECK_INTERVAL | 用于设置清理影子库的本地归档文件的时间间隔,取值范围 0~3600,单位 S。如果设为 0,则关闭自动清理功能。此参数仅对影子库有用 | 动态,系统级 | 60 |
STAT_CACHE_FLAG | SP 是否缓存表行数。 0:不缓存; 1:SP 缓存表行数,而不是每次都向 MP 请求表行数,从本地缓存中获取表行数以降低 MP 的性能瓶颈。和 STAT_CACHE_CAPACITY 搭配使用 | 静态 | 1 |
STAT_CACHE_CAPACITY | 当 STAT_CACHE_FLAG=1 时使用。sp 缓存表行数的缓存容量。取值范围 100~100000000,单位缓存表的个数 | 动态,系统级 | 1000 |
TSMV_RAFIL_SIZE | 指定表空间迁移的临时归档文件的最大空间。取值范围 2~1024。单位 Mb | 静态 | 64 |
TSMV_FILE_COPY_PLL | 表空间迁移时物理文件拷贝并行度。取值范围 1~128 | 动态,系统级 | 1 |
TSMV_WAIT_TIMEOUT | 表空间迁移上锁等待时间。取值范围 0~12000,单位 S | 动态,系统级 | 120 |
TSMV_SEND_BUF_SIZE | 表空间迁移发送文件缓冲区大小。单位 MB,取值范围 1~64。值越小,迁移越慢,但迁移中对并发业务影响越小;值越大迁移速度越快,但迁移中对并发业务影响越大,可结合实际情况设置 | 动态,系统级 | 4 |
6.1.1.2 自动覆盖不一致的参数
部分 DM.INI 参数,当 SP/BP 本地设置的 DM.INI 参数值和自身在 MP 上注册的参数值不一致时,按照在 MP 上实际注册值为准,系统启动时会将 SP/BP 本地的参数自动覆盖掉。如果 MP 为多副本架构,则以 MP 主节点为准。
会被覆盖的 DM.INI 参数为:一是和 DMDPC 相关的 PORT_NUM、AP_PORT_NUM;二是 DM 数据库通用的 length_in_char、parallel_policy、use_new_hash、compress_mode、list_table、compatible_mode、COUNT_64BIT、blank_pad_mode、alter_table_opt、DECIMAL_FIX_STORAGE、enable_huge_secind、pk_with_cluster、datetime_fmt_mode、slct_err_process_flag、FORCE_CERTIFICATE_ENCRYPTION、cast_varchar_mode、space_compare_mode、json_mode、dpc_2pc、mpp_motion_sync、bdta_size、use_pln_pool、MAX_SESSION_STATEMENT、TRUNC_CHECK_MODE 等。
6.1.1.3 从主库同步参数
在主备环境中,当备库 DM.INI 参数与主库不一致时。可在备库执行 INT SF_SYNC_INI( LEVEL
INT)函数来同步主库上的 DM.INI 参数。LEVEL 为同步级别,取值 0 和 1。0 表示同步所属环境下必须同步的参数;1 表示同步所有可以同步的参数。
例如,在备库上执行 SF_SYNC_INI 函数,备库同步主库上所有可以同步的 INI 参数。
SELECT SF_SYNC_INI (1);
SF_SYNC_INI 函数的详细用法请参考《DM8 SQL 语言使用手册》。
6.1.2 DMINIT 工具
通过 DMINIT 工具指定初始化参数, 和 DMDPC 集群搭建相关的参数如下表 6.2 所示。
使用 DMINIT 工具初始化时,如果同一个 INI 参数在 DM.INI 和 DMINIT 中分别指定了不同的值,那么以 DMINIT 工具中指定的为准。
参数 | 说明 | 缺省值 |
---|---|---|
PATH | 初始数据库存放的路径 | 无。不指定时会提示输入 |
INSTANCE_NAME | 实例名 | DMSERVER |
PORT_NUM | 数据库服务器监听端口号,取值范围 1024~65534 | 5236 |
AP_PORT_NUM | 分布式环境下协同工作的监听端口号,取值范围 1024~65534 | 6000 |
DPC_MODE | 指定 DMDPC 集群中的实例角色。 0:无;1/MP:MP;2/BP:BP;3/SP:SP;4/BS:BS。 使用 DMINIT 搭建环境时,DPC_MODE 参数值既可以使用数字 0/1/2/3,也可以使用 MP/BP/SP 字符串代替,二者作用等价 |
0 |
注意只要DMINIT初始化库时,指定了DPC_MODE参数值,那么在DMSERVER启动时,启动参数DPC_MODE值必须和DMINIT保持一致。否则,可能导致服务器起不来。
6.1.3 MP.INI
DMDPC 集群中除 MP 自身外,SP、BP 都存在和 MP 通讯的可能,因此在 SP、BP 和 MP 初始化的 PATH 相同目录下需要用 MP.INI 来写明 MP 的 IP 地址和端口号。同一集群中 SP、BP 的 MP.INI 内容完全一致。
参数名 | 说明 |
---|---|
MP_HOST | mp 实例的 IP 地址 |
MP_PORT | mp 实例的监听端口号 |
MP_RECONN_TIMEOUT | 连接 MP 失败时,尝试重连的超时时间。在设定的时间段内,如果与 MP 连接断开,会不断的尝试连接 MP。单位为秒。取值范围 0~4294967294,缺省为 4294967294 |
例如,一个完整的 MP.INI 文件内容如下:
mp_host = 223.254.30.136
mp_port = 9000 #与MP、BP和SP上的ap_port_num不冲突的端口号
6.1.4 DMARCH.INI
DMARCH.INI 是 DM 数据库实例的归档配置文件,用于配置数据库本地归档和 RAFT 归档。这里仅对多副本系统相关配置项进行介绍。若读者对其他配置项感兴趣,可参考《DM8 系统管理员手册》的相关章节。
项目 | 项目意义 | 字段 | 字段意义 |
全局配置项 | XMAL_HB_INTERVAL | 节点间通信检测间隔。单位s,取值范围1~600。该参数仅在多副本集群中使用,多副本各实例需配置相同 | |
RAFT_HB_interval | 主库广播心跳消息的间隔时间。单位ms,取值范围5~1800。该参数仅在多副本集群中使用,多副本各实例需配置相同 | ||
RAFT_VOTE_INTERVAL | 选举超时时间。单位MS,取值范围10~60000。这个配置值需要保证至少是RAFT_HB_interval的2倍大小,确保在选举超时时间内能够收到主库的心跳消息,避免误判主库故障发起无效选举。建议各实例配置为不同的值,以便能够快速选举出主库,配置的值越小,被选举为主库的优先级越高。该参数仅在多副本集群中使用 | ||
RAFT_SELF_ID | 多副本节点编号,用于标识多副本RAFT组中不同的节点。取值范围0~31 | ||
RAFT_LEARNER | 用于标识自己是否为LEARNER角色。1:是,0:否。 参数缺省为0,非learner节点可不配置此参数 | ||
[ARCHIVE_RAFT1] | RAFT归档 | ARCH_TYPE | 归档类型。ARCH_TYPE支持配置为RAFT和LEARNER。其中LEARNER归档仅在动态增删节点时使用 |
ARCH_DEST | 归档目标实例名 | ||
ARCH_DEST_ID | 归档目标多副本节点编号,用于标识多副本RAFT组中不同的节点。取值范围0~31 | ||
[ARCHIVE_LOCAL1] | 本地归档配置 | ARCH_TYPE | 归档类型 |
ARCH_DEST | 归档路径 | ||
ARCH_FILE_SIZE | 单个归档文件大小,单位MB,取值范围64~2048,缺省为1024MB,即1G | ||
ARCH_SPACE_LIMIT | 归档文件空间限制,单位MB,取值范围1024~4294967294,缺省为0,表示无空间限制 | ||
ARCH_FILE_SIZE | 归档合并刷盘缓存大小,单位MB,取值范围0~128,缺省为0,表示不使用归档合并刷盘 |
说明:
- ARCH_TYPE 表示 Redo 日志归档类型,多副本系统中需要使用到 RAFT 归档和本地归档,配置 RAFT 归档时,必须配置至少一个本地归档;
- XMAL_PORT 是多副本用于选举和消息通信的专用端口号。为了防止端口通信冲突,XMAL_PORT 配置项必须不同于 dm.ini 中 PORT_NUM 配置;
- 由于多副本系统总的节点个数必须为奇数,因此 RAFT 归档目标个数要配置为偶数个(除去本机后剩余的节点个数),也就是最少要配置 2 个,最多允许配置 8 个;
- 可以通过 RAFT_VOTE_INTERVAL 设置选举优先级,RAFT_VOTE_INTERVAL 配置值越小的节点实例,被选举为新主库的优先级越高。
6.1.5 DMSERVER 启动参数
DMSERVER 程序指定启动参数,表示实例以何种模式工作,相关参数如下表 6.5 所示。
参数 | 说明 | 缺省值 |
---|---|---|
PATH | 数据库 dm.ini 存放的路径 | dm.ini 绝对路径或者 dmserver 当前目录的 dm.ini |
DPC_MODE | 实例运行模式 | 指定 DPC 中的实例角色,0:无角色,缺省为 0、1:MP、2:BP、3:SP、4:BS,取值 1/2/3/4 时也可以分别用 MP/BP/SP/BS 代替。其中 BS 模式表示直连 BP 模式,详见 3.1 基本概念中的 BS 模式说明。 |
6.2 配置方法
本节对 DMDPC 进行配置的多种过程进行详细介绍。
6.2.1 SP_CREATE_DPC_BP_GROUP
定义:
SP_CREATE_DPC_BP_GROUP(
group_name varchar(128),
desc varchar(256)
)
功能说明:
向 MP 注册一个新的 BP 组。
参数说明:
group_name:待注册 BP 组名称;
desc:描述信息。
举例说明:
注册名字为 BG_1 的 BP 组,描述信息为“bp group1”。
SP_CREATE_DPC_BP_GROUP('BG_1', 'bp group1');
6.2.2 SP_DROP_DPC_BP_GROUP
定义:
SP_DROP_DPC_BP_GROUP(
name varchar(128)
)
功能说明:
删除一个 BP 组。
参数说明:
name:待移除 BP 组名称,必须是已经注册过的 BP 组。
举例说明:
删除名字为 BG_1 的 BP 组。
SP_DROP_DPC_BP_GROUP('BG_1');
6.2.3 SP_CREATE_DPC_SP_GROUP
定义:
SP_CREATE_DPC_SP_GROUP(
group_name varchar(128),
desc varchar(256)
)
功能说明:
向 MP 注册一个新的 SP 组。
参数说明:
group_name:待注册 SP 组名称;
desc:描述信息。
举例说明:
注册名字为 SPG_1 的 SP 组,描述信息为“sp group1”。
SP_CREATE_DPC_SP_GROUP('SPG_1', 'sp group1');
6.2.4 SP_DROP_DPC_SP_GROUP
定义:
SP_DROP_DPC_SP_GROUP(
name varchar(128)
)
功能说明:
删除一个 SP 组。
参数说明:
name:待移除 SP 组名称,必须是已经注册过的 SP 组。
举例说明:
删除名字为 SPG_1 的 SP 组。
SP_DROP_DPC_SP_GROUP('SPG_1');
6.2.5 SP_CREATE_DPC_RAFT
定义:
SP_CREATE_DPC_RAFT(
dpc_mode varchar(8),
raft_name varchar(128)
)
功能说明:
向 MP 注册一个新的 RAFT 组。
参数说明:
dpc_mode:待注册 RAFT 组类型,取值只能为 BP 或者 SP。一个 SP 类型的 RAFT 组中最多只能加入一个 SP 节点;
raft_name:待注册 RAFT 组名称。
举例说明:
注册名字为 RAFT_1 的 BP RAFT 组,隶属于 BG_1。
SP_CREATE_DPC_RAFT('BP', 'RAFT_1');
6.2.6 SP_DROP_DPC_BP_RAFT/SP_DROP_DPC_RAFT
定义:
SP_DROP_DPC_BP_RAFT(
name varchar(128)
)
或
SP_DROP_DPC_RAFT(
name varchar(128)
)
功能说明:
删除一个 RAFT 组。
参数说明:
name:待删除 RAFT 组名称。
举例说明:
删除名字为 RAFT_1 的 RAFT 组。
SP_DROP_DPC_BP_RAFT('RAFT_1');
或
SP_DROP_DPC_RAFT('RAFT_1');
6.2.7 SP_CREATE_DPC_INSTANCE
SP_CREATE_DPC_INSTANCE 过程有两个。
1.内外网地址相同情景
定义:
SP_CREATE_DPC_INSTANCE (
raft_name varchar(128),
name varchar(128),
dpc_mode varchar(8),
ap_port int,
inst_port int,
ip_addr varchar(256),
sys mode varchar(32),
status int,
desc varchar(256)
)
功能说明:
注册一个 BP/SP 实例。
参数说明:
raft_name:RAFT 名称,和 SP_CREATE_DPC_RAFT 中保持一致。如果是 MP,因为 MP 多副本系统只有一个 RAFT 组,所以 RAFT 组名固定为 MP_RAFT,缺省值也为 MP_RAFT;
name: 待注册的实例名称,和 dm.ini 中 INSTANCE_NAME 保持一致;
dpc_mode: 注册的实例类型,取值:BP、SP 或 MP。需要和 raft_name 所属类型一致;
ap_port:AP_PORT 端口号,和 dm.ini 中 AP_PORT_NUM 保持对应。和 DPC_INSTANCE 表中 XMAL_PORT 值对应。SP/BP 本地设置的 AP_PORT_NUM 如果和自身在 MP 上注册的 AP_PORT_NUM 不一致,按照在 MP 上实际注册的为准,启动时会自动覆盖;
inst_port:实例端口号,和 dm.ini 中 PORT_NUM 保持对应。和 DPC_INSTANCE 表中 INST_PORT 值对应。SP/BP 本地设置的 PORT_NUM 如果和自身在 MP 上注册的 PORT_NUM 不一致,按照在 MP 上实际注册的为准,启动时会自动覆盖;
ip_addr: IP 地址;
sys_mode: 主备模式,取值有 NORMAL,PRIMARY,STANDBY;
status:实例状态,1:有效;0:无效;2:表示 SP 为正常退出状态,可动态删除此 SP 实例;
desc: 描述信息。
举例说明:
在 RAFT_1 组注册一个新的 BP 节点 BP_1。
SP_CREATE_DPC_INSTANCE('RAFT_1', 'BP_1', 'BP', 1822, 5238, '192.168.1.76',
'NORMAL', 1, 'BP instance');
2.内外网地址不同或相同的情景
定义:
SP_CREATE_DPC_INSTANCE (
raft_name varchar(128),
name varchar(128),
dpc_mode varchar(8),
ap_port int,
inst_port int,
ip_inter varchar(256),
ip_exter varchar(256),
sys mode varchar(32),
status int,
desc varchar(256)
)
功能说明:
注册一个 BP/SP 实例。
参数说明:
raft_name:RAFT 名称,和 SP_CREATE_DPC_RAFT 中保持一致。如果是 MP,因为 MP 多副本系统只有一个 RAFT 组,所以 RAFT 组名固定为 MP_RAFT,缺省值也为 MP_RAFT;
name: 待注册的实例名称,和 dm.ini 中 INSTANCE_NAME 保持一致;
dpc_mode: 注册的实例类型,取值:BP、SP 或 MP。需要和 raft_name 所属类型一致;
ap_port:AP_PORT 端口号,和 dm.ini 中 AP_PORT_NUM 保持对应。和 DPC_INSTANCE 表中 XMAL_PORT 值对应。SP/BP 本地设置的 AP_PORT_NUM 如果和自身在 MP 上注册的 AP_PORT_NUM 不一致,按照在 MP 上实际注册的为准,启动时会自动覆盖;
inst_port:实例端口号,和 dm.ini 中 PORT_NUM 保持对应。和 DPC_INSTANCE 表中 INST_PORT 值对应。SP/BP 本地设置的 PORT_NUM 如果和自身在 MP 上注册的 PORT_NUM 不一致,按照在 MP 上实际注册的为准,启动时会自动覆盖;
ip_inter: 实例的内网 IP 地址;
ip_exter: 实例的外网 IP 地址;可传空串,表示内外网地址相同;
sys_mode: 主备模式,取值有 NORMAL,PRIMARY,STANDBY;
status:实例状态,1:有效;0:无效;2:表示 SP 为正常退出状态,可动态删除此 SP 实例;
desc: 描述信息。
举例说明:
在 RAFT_1 组注册一个新的 BP 节点 BP_1。
SP_CREATE_DPC_INSTANCE('RAFT_1', 'BP_1', 'BP', 1822, 5238, '192.168.1.76',
’192.168.1.77’, 'NORMAL', 1, 'BP instance');
6.2.8 SP_DROP_DPC_INSTANCE
定义:
SP_DROP_DPC_INSTANCE (
name varchar(128)
)
功能说明:
移除多副本中的一个 BP/SP/MP 实例。只剩最后一个实例则不能删除。
参数说明:
name:待移除实例名称,必须是已经注册过的实例名。
举例说明:
移除名字为 BP_1 的 BP 服务器。
SP_DROP_DPC_INSTANCE('BP_1');
6.2.9 SP_MODIFY_DPC_INSTANCE
定义:
SP_MODIFY_DPC_INSTANCE (
name varchar(128),
ip_inter varchar(256),
ip_exter varchar(256),
ap_port int,
inst_port int,
)
功能说明:
修改注册在 MP 上的实例信息。修改成功后需要重启全部环境来应用新参数。
SP/BP 本地设置的 AP_PORT_NUM/PORT_NUM 如果和自身在 MP 上注册的 AP_PORT_NUM/PORT_NUM 不一致,按照在 MP 上实际注册的为准,启动时会自动覆盖。
参数说明:
name::待修改的实例名称,非空;
ip_inter:修改为新的内网 IP 地址,可为空串,表示不修改;
ip_exter:修改为新的外网 IP 地址,可为空串,表示不修改;
ap_port:AP_PORT 端口号,和 dm.ini 中 AP_PORT_NUM 保持对应。和 DPC_INSTANCE 表中 XMAL_PORT 值对应。可为空串,表示不修改。SP/BP 本地设置的 AP_PORT_NUM 如果和自身在 MP 上注册的 AP_PORT_NUM 不一致,按照在 MP 上实际注册的为准,启动时会自动覆盖;
inst_port:实例端口号,和 dm.ini 中 PORT_NUM 保持对应。和 DPC_INSTANCE 表中 INST_PORT 值对应。可为空串,表示不修改。SP/BP 本地设置的 PORT_NUM 如果和自身在 MP 上注册的 PORT_NUM 不一致,按照在 MP 上实际注册的为准,启动时会自动覆盖。
举例说明:
修改 BP_1 实例的 IP 地址、ap 端口号和实例端口号。可同时修改多个字段,也可以只修改部分字段值,不需要修改的字段传入空串’’值即可,要求必须修改至少一个字段。
SP_MODIFY_DPC_INSTANCE('BP_1', '192.168.1.76', '192.168.100.77', 2822, 5338);
6.2.10 SP_BP_GROUP_ADD_RAFT
定义:
SP_BP_GROUP_ADD_RAFT(
bp_group_name varchar(128),
raft_name varchar(128)
)
功能说明:
向 BP 组中添加一个 RAFT 组。
参数说明:
bp_group_name:指定添加 RAFT 组的 BP 组名;
raft_name:待添加的 RAFT 组名。
举例说明:
向 BP 组 BG_1 中添加一个名为 RAFT_1 的 RAFT 组。
SP_BP_GROUP_ADD_RAFT('BG_1', 'RAFT_1');
6.2.11 SP_BP_GROUP_DEL_RAFT
定义:
SP_BP_GROUP_DEL_RAFT(
bp_group_name varchar(128),
raft_name varchar(128)
)
功能说明:
从 BP 组中删除一个 RAFT 组。
参数说明:
bp_group_name:指定删除的 BP 组名;
raft_name:待删除的 RAFT 组名。
举例说明:
从 BP 组 BG_1 中删除名为 RAFT_1 的 RAFT 组。
SP_BP_GROUP_DEL_RAFT('BG_1', 'RAFT_1');
6.2.12 SP_SP_GROUP_ADD_RAFT
定义:
SP_SP_GROUP_ADD_RAFT(
sp_group_name varchar(128),
raft_name varchar(128)
)
功能说明:
向 SP 组中添加一个 RAFT 组。
参数说明:
sp_group_name:指定添加 RAFT 组的 SP 组名;
raft_name:待添加的 RAFT 组名。
举例说明:
向 SP 组 SPG_1 中添加一个名为 SP_RAFT_1 的 RAFT 组。
SP_SP_GROUP_ADD_RAFT('SPG_1', 'SP_RAFT_1');
如果传入的参数 sp_group_name 并不是 SP 组或者 raft_name 不是 SP RAFT 对象,系统会因指定的对象不存在而报错。
6.2.13 SP_SP_GROUP_DEL_RAFT
定义:
SP_SP_GROUP_DEL_RAFT(
sp_group_name varchar(128),
raft_name varchar(128)
)
功能说明:
从 SP 组中删除一个 SP RAFT。
参数说明:
sp_group_name:指定删除的 SP 组名;
raft_name:待删除的 RAFT 组名。
举例说明:
从 SP 组 SPG_1 中删除名为 SP_RAFT_1 的 RAFT 组。
SP_SP_GROUP_DEL_RAFT('SPG_1', 'SP_RAFT_1');
6.2.14 SP_SET_DPC_NET_CONF
定义:
SP_SET_DPC_NET_CONF(
PARA_NAME varchar(128),
PARA_VALUE varchar(128)
);
功能说明:
修改注册在 MP 上的通信参数。
参数说明:
PARA_NAME: 待修改的参数名称,非空;
PARA_VALUE: 修改为新的参数值,非空。
举例说明:
修改 MP 与 BP,MP 与 SP 通信时使用的参数信息,调用时同步修改系统表 SYS.DPC_NET_CONF,修改成功后需要重启全部环境来应用新参数。目前支持修改的参数为 TIMEOUT(通信超时,单位为秒)、XLNK_NUM(链路数)、MONITOR_XLNK_TIME(监控链路消息收发用时,单位为微秒)、CRC_CHECK(消息的 CRC 检验)、COMPRESS_LEVEL(消息压缩级别)。
SP_SET_DPC_NET_CONF('TIMEOUT', '1000');
为了增加网络传输效率和减少带宽利用,对 XLNK 消息统一增加 COMPRESS_LEVEL 参数,配置在 DPC_NET_CONF 系统表中。修改成功后需要重启全部节点才能生效。登录 SP 或者 MP 执行系统过程设置 XLNK 消息压缩等级。
SP_SET_DPC_NET_CONF('COMPRESS_LEVEL',10);
6.2.15 SP_DISABLE_DPC_RAFT
定义:
SP_DISABLE_DPC_RAFT(
NAME varchar(128)
)
功能说明:
失效一个 BP RAFT 组。只支持失效 BP 模式的 RAFT 组。
参数说明:
NAME:待失效 RAFT 组名称,必须是 BP 模式的 RAFT 组。
举例说明:
失效名字为 RAFT_1 的 BP RAFT 组。失效后的组不可以访问。
SP_DISABLE_DPC_RAFT('RAFT_1');
6.2.16 SP_ENABLE_DPC_RAFT
定义:
SP_ENABLE_DPC_RAFT(
NAME varchar(128)
)
功能说明:
恢复一个已失效的 BP RAFT 组。
参数说明:
NAME:待恢复的 RAFT 组名称,必须是 BP 模式的 RAFT 组。
举例说明:
恢复已经失效的名字为 RAFT_1 的 RAFT 组。恢复后的组又可以重新被访问。
SP_ENABLE_DPC_RAFT('RAFT_1');
6.2.17 SP_TS_GROUP_CREATE
定义:
SP_TS_GROUP_CREATE(
NAME varchar(128),
DESC varchar(256)
)
功能说明:
创建表空间组。
参数说明:
NAME:表空间组名称。
DESC:表空间描述。
举例说明:
SP_TS_GROUP_CREATE('TSG_1', 'tablespace group1');
6.2.18 SP_TS_GROUP_DROP
定义:
SP_TS_GROUP_DROP(
GROUP_NAME varchar(128)
)
功能说明:
删除表空间组。
参数说明:
NAME:表空间组名称。
举例说明:
SP_TS_GROUP_DROP('TSG_1');
6.2.19 SP_TS_GROUP_ADD_TS
定义:
SP_TS_GROUP_ADD_TS(
GROUP_NAME varchar(128),
TS_NAME varchar(128)
)
功能说明:
表空间组添加表空间。
参数说明:
GROUP_NAME:表空间组名称;
TS_NAME:表空间名称。
举例说明:
SP_TS_GROUP_ADD_TS('TSG_1', 'TS1');
6.2.20 SP_TS_GROUP_REMOVE_TS
定义:
SP_TS_GROUP_REMOVE_TS(
GROUP_NAME varchar(128),
TS_NAME varchar(128)
)
功能说明:
表空间组移除表空间。
参数说明:
GROUP_NAME:表空间组名称;
TS_NAME:表空间名称。
举例说明:
SP_TS_GROUP_REMOVE_TS('TSG_1', 'TS1');
6.2.21 SP_RENAME_DPC_INSTANCE
定义:
SP_RENAME_DPC_INSTANCE(
old_name varchar(128),
new_name varchar(128)
)
功能说明:
重命名实例。
参数说明:
old_name:旧实例名;
new_name:新实例名。
举例说明:
SP_RENAME_DPC_INSTANCE('BP1_A', 'BP_INSTANCE_A');
6.2.22 SP_ALTER_DPC_INSTANCE
定义:
SP_ALTER_DPC_INSTANCE(
name varchar(128),
sys_mode varchar(32),
sys_status int,
status int
)
功能说明:
修改实例的系统模式、系统状态、实例状态信息。
参数说明:
name:实例名;
sys_mode:系统模式;
sys_status:系统状态;
status:实例状态。
举例说明:
SP_ALTER_DPC_INSTANCE('BP1','STANDBY',4,1);
6.2.23 SP_DPC_MOVE_TS_OFFLINE
定义:
SP_DPC_MOVE_TS_OFFLINE(
ts_name varchar(128),
raft_name varchar(128)
);
功能说明:
脱机方式表空间迁移时,MP 上手动修改系统表信息。只在脱机表空间迁移过程中使用。
参数说明:
ts_name:迁移的表空间名称;
raft_name:目标 raft 名。
举例说明:
将表空间 TS_1 迁移到 RAFT_1 上。
SP_DPC_MOVE_TS_OFFLINE('TS_1', 'RAFT_1');
6.2.24 SP_SET_DPC_INST_AUX
定义:
SP_SET_DPC_INST_AUX(
inst_name varchar(128),
aux_flag INT
);
功能说明:
设置 SP 实例是否作为辅助计算节点。缺省为是。
参数说明:
inst_name:SP 节点的实例名;
aux_flag:是否作为辅助计算节点。1 是;0 否。
举例说明:
取消 SP_1 实例作为辅助计算节点。
SP_SET_DPC_INST_AUX('SP_1', 0);
6.2.25 SP_ADD_RAFT_LEARNER
定义:
SP_ADD_RAFT_LEARNER(
DEST VARCHAR,
DEST_IP VARCHAR,
DEST_PORT INT,
DEST_ID INT,
);
功能说明:
增加 LEARNER 节点。需在当前多副本集群的主节点上执行。
参数说明:
DEST:LEARNER 节点实例名,对应 ARCH_DEST 字段;
DEST_IP:LEARNER 节点 IP 地址,对应 ARCH_DEST_IP 字段;
DEST_PORT:LEARNER 节点通信 PORT,对应 ARCH_DEST_PORT 字段;
DEST_ID:LEARNER 节点编号,对应 ARCH_DEST_ID 字段。
返回值:
无
举例说明:
增加多副本集群的 LEARNER 节点 BP_04。
SP_ADD_RAFT_LEARNER('BP_04', '192.168.1.68', 10010 , 3);
6.2.26 SP_DELETE_RAFT_LEARNER
定义:
SP_DELETE_RAFT_LEARNER(
DEST VARCHAR
)
功能说明:
删除 LEARNER 节点。需在当前多副本集群的主节点上执行。
使用细则如下:
- 每次执行只允许删除 1 个节点;
- 只允许在 LEARNER 主节点上执行,其他节点不允许执行;
- 仅多数 RAFT 节点正常的情况下,才允许执行;
- DMDPC 下的删除 LEARNER 的顺序为,先执行 SP_DELETE_RAFT_LEARNER 从 RAFT 组中删除,再使用 SP_DROP_DPC_INSTANCE 从系统表中删除节点;
- 和 SP_ADD_RAFT_LEARNER 策略一样,此函数仅会删除 RAFT 节点上的 LEARNER 归档配置,对于 LEARNER 节点上的配置则仍然是以手工方式进行修改。
参数说明:
DEST:LEARNER 节点实例名,对应 ARCH_DEST 字段。
返回值:
无
举例说明:
删除多副本集群的 LEARNER 节点 BP_04。
SP_DELETE_RAFT_LEARNER('BP_04');
6.2.27 SP_ALTER_RAFT_NODE
定义:
SP_ALTER_RAFT_NODE(
NEW_NODE VARCHAR
)
功能说明:
执行多副本集群成员变更。将当前多副本集群变更为仅含有 NEW_NODE 节点的集群。不管是增加、删除还是替换,都可以使用这个系统函数来完成。
需在当前多副本集群的主节点上执行。
参数说明:
NEW_NODE:指定新配置的所有节点实例名字符串。可以是一个或多个实例名,多个实例名之间用“/”符号分隔,目前最多支持 9 个节点。
返回值:
无
举例说明:
将当前多副本集群变更为仅含有 BP_01、BP_02、BP_03、BP_04、BP_05 节点的集群。
SP_ALTER_RAFT_NODE('BP_01/BP_02/BP_03/BP_04/BP_05');
6.2.28 SP_ADD_RAFT_NODE
SP_ADD_RAFT_NODE(
NEW_NODE VARCHAR
)
功能说明:
增加多副本集群节点。如果集群变更还包含删除或替换节点,则不建议使用这个系统函数。
需在当前多副本集群的主节点上执行。
参数说明:
NEW_NODE:指定新增的所有节点实例名。实例名之间用“/”符号分隔。加入新增节点后,新集群的节点总数最多支持 9 个节点。
返回值:
无
举例说明:
增加多副本集群的节点 BP_04、BP_05。
SP_ADD_RAFT_NODE('BP_04/BP_05');
6.2.29 SP_DELETE_RAFT_NODE
SP_DELETE_RAFT_NODE(
DELETE_NODE VARCHAR
)
功能说明:
删除多副本集群节点。如果集群变更还包含增加或替换节点,则不建议使用这个系统函数。
需在当前多副本集群的主节点上执行。
参数说明:
DELETE_NODE:指定要删除的所有节点实例名。各实例名以“/”符号分隔。
返回值:
无
举例说明:
删除多副本集群的节点 BP_04、BP_05。
SP_DELETE_RAFT_NODE('BP_04/BP_05');
6.2.30 SP_REPLACE_RAFT_NODE
定义:
SP_REPLACE_RAFT_NODE(
OLD_NODE VARCHAR,
NEW_NODE VARCHAR
)
功能说明:
替换多副本集群的节点。即同时包含新增和删除节点的情况下,使用该系统函数来完成。
需在当前多副本集群的主节点上执行。
参数说明:
OLD_NODE:指定要删除的所有节点实例名。各实例名先“/”符号分隔,OLD_NODE 必须是旧配置下的多副本节点;
NEW_NODE:指定要增加的所有节点实例名。各实例名以“/”符号分隔,NEW_NODE 必须是 learner 节点。
返回值:
无
举例说明:
例 1 将 BP_02/BP_03 替换为 BP_04/BP_05。
SP_REPLACE_RAFT_NODE('BP_02/BP_03', 'BP_04/BP_05');
例 2 将 BP_02/BP_03 替换为 BP_04/BP_05,再新增 BP_06/BP_07。
SP_REPLACE_RAFT_NODE('BP_02/BP_03', 'BP_04/BP_05/BP_06/BP_07');
6.2.31 SP_DPC_DUMP_INST
定义:
SP_DPC_DUMP_INST (
file_path varchar(256)
)
功能说明:
将 dpc_instance 的配置以追加的形式,转储到文本文件,以便于在 MP 故障时查看。文件路径不存在时报错。在 MP/BP/BS/SP 均能执行。
参数说明:
file_path:导出的文本文件路径。
举例说明:
SP_DPC_DUMP_INST('S:\DPC\C\dpc_instance.md');
6.2.32 SP_SET_SP_UPGRADE
定义:
SP_SET_SP_UPGRADE(
inst_name VARCHAR(128)
)
功能说明:
将一个正常状态的 SP 标记为升级状态。非正常状态的 SP 无效。
只能在 SP 上运行;BP 和 MP 上无法运行。只能升级 SP。
参数说明:
inst_name:待升级的 SP 的实例名称。
返回值:
无
举例说明:
SP_SET_SP_UPGRADE('SP2');
6.2.33 SP_RESET_SP_UPGRADE
定义:
SP_RESET_SP_UPGRADE(
inst_name VARCHAR(128)
)
功能说明:
将一个升级状态的 SP 恢复正常;非升级状态的 SP 无效。
只能在 SP 或 MP 上运行;BP 上无法运行。只能恢复 SP。
参数说明:
inst_name:待恢复的 SP 的实例名称。
返回值:
无
举例说明:
SP_RESET_SP_UPGRADE('SP2');
6.2.34 SP_DPC_REBANLANCE_SESSION
定义:
SP_DPC_REBANLANCE_SESSION(
balance_flag int
)
功能说明:
收集当前 SP 可见的所有 SP 的会话数,并产生或清空所有节点各自的平衡方案。
参数说明:
balance_flag:取 1 表示产生节点各自的平衡方案;取 0 表示清空各个节点的方案;不论取 0 还是取 1,都会收集可见的所有 SP 的会话数。
返回值:
无
举例说明:
SP_DPC_REBANLANCE_SESSION(1);
6.2.35 SP_RAFT_SUSPEND_THREAD
定义:
SP_RAFT_SUSPEND_THREAD()
功能说明:
多副本环境中,主库挂起工作线程。直连主库执行。
举例说明:
主库挂起自己的工作线程。
SP_RAFT_SUSPEND_THREAD();
6.2.36 SP_RAFT_SWITCHOVER
定义:
SP_RAFT_SWITCHOVER()
功能说明:
多副本环境中,将备库手动切换为主库。直连备库执行。
举例说明:
备库手动切换为主库流程:
1.连接主库执行挂起
SP_RAFT_SUSPEND_THREAD();
2.连接备库执行手动切换
SP_RAFT_SWITCHOVER();
6.2.37 SP_RAFT_RESUME_THREAD
定义:
SP_RAFT_RESUME_THREAD(
inst_name varchar(128)
)
功能说明:
多副本环境中,唤醒指定多副本组内的节点的工作线程,直连任意一个备库执行。
参数说明:
inst_name:待唤醒的实例名称。
举例说明:
唤醒 BP01 的工作线程。
SP_RAFT_RESUME_THREAD('BP01');
6.2.38 SP_TS_DROP_INVALID
定义:
SP_TS_DROP_INVALID(
)
功能说明:
删除本地节点有,但是 MP 中没有注册的表空间。
只能在 BP 或 BS 节点执行该系统函数。
参数说明:
无。
举例说明:
SP_TS_DROP_INVALID;
6.2.39 SP_CLEAR_TAB_ROWCNT_CACHE
定义:
SP_CLEAR_TAB_ROWCNT_CACHE (
RAFT_ID INT,
TAB_ID INT
)
功能说明:
清除所有或指定节点上的全部或部分表行数缓存。
参数说明:
RAFT_ID:站点号。
TAB_ID: 表 ID。
如果表 id 和站点号都为 NULL,就清除所有站点上的全部缓存;提供表 id,但是站点号为 NULL,就清除所有站点上的表 id;如果表 id 为 NULL,提供站点号,就清除设置站点上的所有缓存。
举例说明:
清理所有 SP 站点上的全部表行数缓存:
SP_CLEAR_TAB_ROWCNT_CACHE(NULL,NULL);
6.2.40 SP_GET_ALL_TS_BY_TSGROUP
定义:
SP_GET_ALL_TS_BY_TSGROUP (
TGNAME VARCHAR(128)
)
功能说明:
显示表空间组内的所有表空间信息。显示的列信息和系统表 DPC_INSTANCE 相同。
参数说明:
TGNAME:表空间组名。
举例说明:
显示表空间组 TSG_1 内的所有表空间信息:
SP_GET_ALL_TS_BY_TSGROUP('TSG_1');