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、16384、32768、65536、131072、262144 或上述任意取值的和。 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 进行优化。优化后,消息可以多条链路同时发生,而非一条链路串行; 16384:表示 DMDPC 环境下支持变量跨层引用; 32768:支持 L_FULL 优化。具体为支持 LEFT JOIN 操作符左边使用全部数据,右边使用部分数据的情况; 65536:表示开启子任务为空连接提前终止的优化。若某个子任务的结果为空,上层有连接操作且可以推断出连接的结果也为空时,那直接终止此连接以及此连接的所有子任务。这个过程是可以向上传递的,直到某个子任务结果不为空或者无法推断为空为止; 131072:表示当某任务的子任务都在同一个站点上时,那么系统会优先让这个任务也在此站点做。因为数据在同站点不同线程内传输,相比不同站点会减小数据传输时间; 262144:表示将 GROUP BY 最大值下放到 HTAB |
动态,会话级 | 65535 |
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)、LOCK 相关(8)、快速装载服务器端模块 BLDR(9)、字典 DICT(10)、错误堆栈 ESTK(11) 、用户自定义向日志写入内容(12)、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 一起设置才生效 | 手动 | 空串 |
XBOX_SPACE_LIMIT | 配置了 XBOX_DUMP_THRESHOLD 和 XBOX_DUMP_PATH 时有效。 表示单个 XBOX 的空间限制。取值范围 0 ~ 409600。单位 MB。0 表示不限制。 XBOX_SPACE_LIMIT 和 XBOXS_SPACE_LIMIT 可分别单独配置,也可同时配置,同时配置时须保证 XBOXS_SPACE_LIMIT > XBOX_SPACE_LIMIT | 动态,系统级 | 0 |
XBOXS_SPACE_LIMIT | 配置了 XBOX_DUMP_THRESHOLD 和 XBOX_DUMP_PATH 时有效。 表示系统所有 XBOX 的总空间限制。取值范围 0 ~ 1000000。单位 MB。0 表示不限制 | 动态,系统级 | 0 |
STMT_XBOX_REUSE | DMDPC 会话的语句是否重用 box_id。 0:否,每个语句都请求分配一个 box_id; 1:是 | 动态,会话级 | 1 |
XBOX_SHORT_MSG_SIZE | 在配置了 XBOX_DUMP_THRESHOLD 后,即使内存达到阈值的情况下,小于此长度的短消息也不会保存到文件,防止大量的文件读写。 取值范围 0~32768。单位 BYTE | 系统,会话级 | 1024 |
DPC_TRX_TIMEOUT | 用于 DMdpc 中,表示事务等待超时时间。取值范围 0~604800。单位秒 | 动态,会话级 | 10 |
DPC_GUP_SESS_TIMEOUT | 用于 DMdpc 中,表示 sP 升级时事务、会话超时断开时间。取值范围 60~600。单位秒 | 动态,会话级 | 180 |
DPC_TABLESPACE_BALANCE | 当在 DPC 下创建分区表,子表个数少于所选择的表空间个数时,是否启用随机选择起始表空间以使得表空间负载均衡。0:不启用;1:启用,表示从已有子表所使用的表空间中挑选;2:启用,在新增子表时同时考虑从所有表空间中挑选 | 动态,系统级 | 1 |
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 |
STHD_FLAG | 是否启用 ESESS/SESS 线程池。取值范围 0~3。0:表示关闭;1:表示打开 ESESS 线程池;2:表示打开 SESS 线程池;3:表示同时打开 ESESS 和 SESS 线程池 | 静态 | 0 |
STHD_THREAD_NUM | 每个 ESESS 线程池初始化的线程数量。取值范围 1~10000 | 静态 | 8 |
STHD_GRP_NUM | 初始化的 ESESS 线程池数量。取值范围 1~64。当打开 SESS 线程池(即 STHD_FLAG=2 或 3)时,该参数强制等于 WORKER_THREADS 的值 | 静态 | 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 |
GROUP_OPT_FLAG | 分组项优化参数开关。 0:不优化; 1:非 MYSQL 兼容模式下(即 COMPATIBLE_MODE 不等于 4),支持查询项不是 GROUP BY 表达式; 2:外层分组项下放到内层派生表中提前分组优化; 4:表示对于多级分区,并行下允许尝试不生成多个 AGR; 8:进行哈希分组时,依赖分组项列中的核心项分组列来分组; 16:位图索引覆盖简单分组查询中的所有列时,允许使用位图索引对查询进行优化; 32:进行哈希分组时,对 TOP 查询进行优化,提前返回指定数量的分组; 64:DMDPC 下,对无分组项且含有 DISTINCT 集函数的查询,允许对集函数参数先进行一次分发处理。 支持使用上述有效值的组合值,如 3 表示同时进行 1 和 2 的优化 |
动态,会话级 | 52 |
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 |
MAX_ESESSIONS | 指定分支 ESESSION 个数上限,取值范围 0~650000,0 表示无限制。ESESSION 为 SP 和其他节点之间的内部会话,SP 上的 ESESSION 为主 ESESSION,其他节点上的 ESESSION 为分支 ESESSION | 动态,系统级 | 100000 |
注意DMDPC环境下不允许修改TS_MAX_ID和TS_FIL_MAX_ID参数。
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 数据库通用的参数,目前有以下这些: PARALLEL_POLICY、USE_NEW_HASH、COMPRESS_MODE、LIST_TABLE、LIST_TABLE_BRANCH、LIST_TABLE_NON_BRANCH、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、MAX_EP_SITES、DPC_SYNC_STEP、DPC_SYNC_TOTAL、STMT_XBOX_REUSE、HUGE_ENABLE_DEL_UPD、ENABLE_INJECT_HINT(只会同步 MP、SP 和 BS。BP 不支持该参数,永远为 0)、ENABLE_FLASHBACK、UNDO_RETENTION、ALLOWED_CLIENT_VERSIONS、SELECT_LOCK_MODE、ENABLE_CS_CVT、HFI_HP_MODE、NUMBER_MODE、VIEW_ACCESS_MODE、TRUNC_CHECK_MODE、PL_SQL_STRIP、CAST_CLOB_MODE、WM_CONCAT_LOB、CALC_AS_DECIMAL、ORA_REVERSE_MODE、USE_JSON_DATATYPE 等。
当试图修改上述参数的内存值时,DM 服务器会拒绝并报错。
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。 使用 DMINIT 搭建环境时,DPC_MODE 参数值既可以使用数字 0/1/2/3,也可以使用 MP/BP/SP 字符串代替,二者作用等价 |
0 |
只要 DMINIT 初始化库时,指定了 DPC_MODE 参数值,那么在 DMSERVER 启动时,启动参数 DPC_MODE 值必须和 DMINIT 保持一致。否则,可能导致服务器起不来。DPC_MODE 在 DMINIT 和 DMSERVER 中的取值对应关系如表 6.3 所示。
DMINIT 的 DPC_MODE | DMSERVER 的 DPC_MODE |
---|---|
0 | 0 |
1 或 MP | 1 或 MP |
2 或 BP | 2 或 BP |
4 或 BS | |
3 或 SP | 3 或 SP |
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节点可不配置此参数 | ||
RAFT_SELF_ID | 多副本节点编号,用于标识多副本RAFT组中不同的节点。取值范围0~31 | ||
RAFT_PKG_INTERVAL | 专用于多副本环境中,设置备库接收主库日志包的超时时间。当备库超过该时间还未接收到主库日志包,则备库主动断开与主库连接。单位S,取值范围60~36000。缺省为不配置该参数。可选参数 | ||
[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_HANG_FLAG | 本地归档写入失败时系统是否挂起。取值0或1。0不挂起;1挂起。缺省为1。第一路本地归档系统内固定设为1,设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.6 所示。
参数 | 说明 | 缺省值 |
---|---|---|
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 模式说明。DMSERVER 启动时,DPC_MODE 在 DMINIT 和 DMSERVER 中的取值须按照对应关系正确对应,对应关系请参考 DMINIT 工具介绍 |
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',也可缺省为空串''或 NULL,因为 MP 多副本系统只有一个 RAFT 组,所以 RAFT 组名固定为 MP_RAFT,缺省值也为 MP_RAFT。如果 BP 或 SP,则该值不能缺省;
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',也可缺省为空串''或 NULL,因为 MP 多副本系统只有一个 RAFT 组,所以 RAFT 组名固定为 MP_RAFT,缺省值也为 MP_RAFT。如果 BP 或 SP,则该值不能缺省。
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
)
或
SP_MODIFY_DPC_INSTANCE (
NAME VARCHAR(128),
ATTR VARCHAR(128),
VALUE VARCHAR(512)
)
功能说明:
修改注册在 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 上实际注册的为准,启动时会自动覆盖;
ATTR: 属性,不可为空串,目前 ATTR 参数仅支持使用'CFG_PORT',用于设置 MP 的 CFG_PORT 参数;
VALUE: 属性值,不可为空串。
举例说明:
修改 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_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.16 SP_TS_GROUP_DROP
定义:
SP_TS_GROUP_DROP(
GROUP_NAME VARCHAR(128)
)
功能说明:
删除表空间组。
参数说明:
NAME:表空间组名称。
举例说明:
SP_TS_GROUP_DROP('TSG_1');
6.2.17 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.18 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.19 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.20 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.21 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.22 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.23 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.24 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.25 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.26 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.27 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.28 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.29 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.30 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.31 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.32 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.33 SP_RAFT_SUSPEND_THREAD
定义:
SP_RAFT_SUSPEND_THREAD()
功能说明:
多副本环境中,主库挂起工作线程。直连主库执行。
举例说明:
主库挂起自己的工作线程。
SP_RAFT_SUSPEND_THREAD();
6.2.34 SP_RAFT_SWITCHOVER
定义:
SP_RAFT_SWITCHOVER()
功能说明:
多副本环境中,将备库手动切换为主库。直连备库执行。raft 影子节点不支持通过 SP_RAFT_SWITCHOVER()过程切换为主节点。
举例说明:
备库手动切换为主库流程:
1.连接主库执行挂起
SP_RAFT_SUSPEND_THREAD();
2.连接备库执行手动切换
SP_RAFT_SWITCHOVER();
6.2.35 SP_RAFT_RESUME_THREAD
定义:
SP_RAFT_RESUME_THREAD(
INST_NAME VARCHAR(128)
)
功能说明:
多副本环境中,唤醒指定多副本组内的节点的工作线程,直连任意一个备库执行。
参数说明:
INST_NAME:待唤醒的实例名称。
举例说明:
唤醒 BP01 的工作线程。
SP_RAFT_RESUME_THREAD('BP01');
6.2.36 SP_TS_DROP_INVALID
定义:
SP_TS_DROP_INVALID()
功能说明:
删除本地节点有,但是 MP 中没有注册的表空间。
只能在 BP 或 BS 节点执行该系统函数。
参数说明:
无。
举例说明:
SP_TS_DROP_INVALID;
6.2.37 SP_CLEAR_TAB_ROWCNT_CACHE
定义:
SP_CLEAR_TAB_ROWCNT_CACHE (
RAFT_ID INT,
TAB_ID INT
)
功能说明:
清除所有或指定 SP/BS 节点上的全部或部分表行数缓存。
虽站点号指定为其他类型的节点也能成功执行,并不报错,但因其他类型节点不存在表行数缓存,执行该过程没有实际意义。
参数说明:
RAFT_ID:SP/BS 站点号。
TAB_ID:表 ID。
如果表 ID 和 SP/BS 站点号都为 NULL,就清除所有 SP/BS 站点上的全部表行数缓存;提供表 ID,但是 SP/BS 站点号为 NULL,就清除所有 SP/BS 站点上的指定表 ID 的缓存;如果表 ID 为 NULL,提供 SP/BS 站点号,就清除指定 SP/BS 站点上的所有表行数缓存。
举例说明:
清理所有 SP/BS 站点上的全部表行数缓存:
SP_CLEAR_TAB_ROWCNT_CACHE(NULL,NULL);
6.2.38 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');
6.2.39 SP_SET_RAFT_ASYNC_INTERVAL
定义:
SP_SET_RAFT_ASYNC_INTERVAL(
ARCH_DEST VARCHAR,
ASYNC_INTERVAL INT
)
功能说明:
重置一个 RAFT 备库或 LEARNER 备库的异步恢复时间间隔。
仅在多副本环境主库上执行有效。
对于 BS 主库,需要以 LOCAL 方式登录执行。
参数说明:
ARCH_DEST:待重置异步恢复时间间隔的节点实例名。
ASYNC_INTERVAL: 异步恢复时间间隔,单位:S(秒),取值范围 3~86400。
返回值:
无
举例说明:
在主库上执行,设置 RAFT 备库 BP_2 的异步恢复时间间隔为 30s。
SP_SET_RAFT_ASYNC_INTERVAL('BP_2', 30);
6.2.40 SP_GET_RAFT_ASYNC_INTERVAL
定义:
SP_GET_RAFT_ASYNC_INTERVAL(
ARCH_DEST VARCHAR
)
功能说明:
获取一个 RAFT 备库或 LEARNER 备库的异步恢复时间间隔。
仅在多副本环境主库上执行有效。
对于 BS 主库,需要以 LOCAL 方式登录执行。
参数说明:
ARCH_DEST:待重置异步恢复时间间隔的节点实例名。
返回值:
异步恢复时间间隔。
举例说明:
在主库上执行,获取 RAFT 备库 BP_2 的异步恢复时间间隔。
SP_GET_RAFT_ASYNC_INTERVAL('BP_2');
6.2.41 SP_CREATE_FAULT_DOMAIN
定义:
SP_CREATE_FAULT_DOMAIN(
NAME varchar(128),
DESC varchar(256)
)
功能说明:
创建一个容错域,创建后同步字典信息。可在 MP、BS、SP 上执行,BP 报错。
参数说明:
NAME:容错域名称,与已有相同名称时报错。
DESC:容错域描述,可以为空。
返回值:
无
举例说明:
创建一个名为 FDOM_1 的容错域。
SP_CREATE_FAULT_DOMAIN('FDOM_1', 'shanghai');
6.2.42 SP_DROP_FAULT_DOMAIN
定义:
SP_DROP_FAULT_DOMAIN(
NAME varchar(128),
FORCE INT
)
功能说明:
删除一个容错域,删除后同步字典信息。可在 MP、BS、SP 上执行,BP 报错。
参数说明:
NAME:容错域名称,原本就没有该容错域时报错。
FORCE:是否强制删除,0 为不强制删除:该容错域不为空时报错;1 为强制删除:将移出容错域内所有实例,然后删除容错域。
返回值:
无
举例说明:
删除一个名为 FDOM_1 的容错域。
SP_DROP_FAULT_DOMAIN('FDOM_1', 0);
6.2.43 SP_MODIFY_FAULT_DOMAIN
定义:
SP_MODIFY_FAULT_DOMAIN(
DOMAIN_ID INT,
NAME varchar(128),
DESC varchar(128)
)
功能说明:
修改一个容错域,修改后同步字典信息。可在 MP、BS、SP 上执行,BP 报错。
参数说明:
DOMAIN_ID:容错域 ID,指定要修改哪一个容错域,id 不存在时报错。
NAME:修改后的容错域名称,与已有相同名称时报错,为 NULL 表示不修改。
DESC:修改后的容错域描述,为 NULL 时表示不修改。
返回值:
无
举例说明:
修改一个名为 FDOM_1 的容错域。
SP_MODIFY_FAULT_DOMAIN(1, 'FDOM_2', 'shanghai123'); --同时修改0号域的名称和描述
SP_MODIFY_FAULT_DOMAIN(1, NULL, ''); --不修改名称,同时描述清空
SP_MODIFY_FAULT_DOMAIN(1, 'FDOM_3', NULL); --修改名称,描述不修改
6.2.44 SP_FAULT_DOMAIN_MV_INST
定义:
SP_FAULT_DOMAIN_MV_INST(
DOMAIN_NAME varchar(128),
INST_NAME varchar(128)
)
功能说明:
将实例移入或移出某个容错域,调整后同步字典信息。可在 MP、BS、SP 上执行,BP 报错。
参数说明:
DOMAIN_NAME:容错域名称,容错域不存在时报错;取 NULL 时将尝试实例移出其所在当前容错域;容错域不为 NULL 且存在时,需要容错域中无相同 RAFT 组时才能成功移入,否则将报错。
INST_NAME:实例名称,实例不存在时报错。仅允许 MP,BP,BS 实例加入,SP 实例会报错。
返回值:
无
举例说明:
将实例 MP1 移入容错域 FDOM_1。将实例 BP3 移出当前容错域。
SP_FAULT_DOMAIN_MV_INST('FDOM_1', 'MP1'); --将MP1移入FDOM_1
SP_FAULT_DOMAIN_MV_INST(NULL, 'BP3'); --将BP3移出它所在的当前容错域
6.2.45 SP_SET_RAFT_ELECT
定义:
SP_SET_RAFT_ELECT(
ELECT_FLAG dmbool
)
功能说明:
设置当前 RAFT 库节点的选举开关。关闭选举开关的节点不会进行超时检测,不会主动发起选举,但收到其他节点的投票请求后,如果对方符合条件,可以正常投出选票。打开选举开关的节点检测超时后可以正常发起选举和投出选票。
选举开关默认情况下均为打开状态。SP_SET_RAFT_ELECT 仅修改内存值,节点重启后失效。对于 BS 主库节点需要 LOCAL 方式登录执行。
参数说明:
ELECT_FLAG:设置选举开关,0:关闭选举开关;1:打开选举开关。
返回值:
无
举例说明:
关闭当前 RAFT 库节点的选举开关。
SP_SET_RAFT_ELECT(0);
6.2.46 SF_GET_RAFT_ELECT
定义:
SF_GET_RAFT_ELECT()
功能说明:
获取当前 RAFT 库节点的选举开关。对于 BS 主库节点需要 LOCAL 方式登录执行。
参数说明:
无
返回值:
0:选举开关为关闭状态;1:选举开关为打开状态。
举例说明:
获取当前 RAFT 库节点的选举开关。
SELECT SF_GET_RAFT_ELECT();
6.2.47 SF_CLEAR_DICT_CACHE
定义:
INT
SF_CLEAR_DICT_CACHE(
RAFT_ID INT
)
或
INT
SF_CLEAR_DICT_CACHE(
RAFT_ID INT,
OBJID INT,
CASCADE INT,
TYPE VARCHAR(128),
SUBTYPE VARCHAR(128)
)
功能说明:
广播到指定节点,如果不指定对象 ID,清理该节点的所有字典缓存,否则清理指定 ID 的字典缓存。
参数说明:
RAFT_ID:广播的目标节点号。
OBJID:对象 ID。
CASCADE:是否级联删除。
TYPE:类型,对应 SYSOBJECTS 的 TYPE$。
SUBTYPE:子类型,对应 SYSOBJECTS 的 SUBTYPE$。
返回值:
清理的字典个数。
举例说明:
例 1 清理目标节点号为 1 的所有字典信息。
SELECT SF_CLEAR_DICT_CACHE(1);
例 2 清理目标节点号为 1,对象 ID 为 1024 的字典缓存。
SELECT SF_CLEAR_DICT_CACHE(1,1024,1,'SCHOBJ','UTAB');