#DBMS_CM

DBMS_CM包提供了一组内置的存储过程/函数,用于维护分布式集群的元数据信息。

Note:

  • DBMS_CM高级包通常由yasboot在特定功能场景中调用,不建议用户直接调用。如需直接调用DBMS_CM高级包,必须以sys用户直连主MN节点后操作,否则报错。
  • DBMS_CM高级包不适用于单机部署和共享集群部署。

# CREATE_CLUSTER

DBMS_CM.CREATE_CLUSTER(
   CLUSTER_ID   IN VARCHAR,
   CLUSTER_NAME IN VARCHAR,
   MN_HOST      IN VARCHAR
   );

该函数用于创建分布式集群的集群级别元数据信息,相应信息将被写入缓存和系统表中。

参数 描述
CLUSTER_ID 分布式集群的唯一UUID,部署时由yasboot自动生成。
CLUSTER_NAME 分布式集群的名称。
MN_HOST 首次部署时首个MN节点的服务器地址。

示例(分布式部署)

BEGIN
	DBMS_CM.CREATE_CLUSTER('66e2a5e2c9e7c184b99efccc05e03414', 'cluster name', 'mn host');
END;
/

# UPDATE_CLUSTER_ID

DBMS_CM.UPDATE_CLUSTER_ID();

该函数用于更新分布式集群的集群级别元数据信息,将相应信息从配置参数文件中加载到内存和系统表。

# CREATE_GROUP

DBMS_CM.CREATE_GROUP(
   GROUP_ID   OUT INT,
   GROUP_NAME IN VARCHAR,
   GROUP_TYPE IN INT
   );

该函数用于创建分布式集群的节点组级别元数据信息,相应信息将被写入缓存和系统表中。

参数 描述
GROUP_ID 节点组ID。
GROUP_NAME 节点组名称。
GROUP_TYPE 节点组类型,主要包含:CN(协调节点),DN(数据节点),MN(管理节点)。

示例(分布式部署)

DECLARE
group_id INT;
BEGIN
	DBMS_CM.CREATE_GROUP(group_id, 'group name', 1);
END;
/

# DELETE_GROUP

DBMS_CM.DELETE_GROUP(
   GROUP_ID   IN INT,
   IS_FORCE   IN BOOL
   );

该函数用于从系统表和缓存中删除分布式集群的节点组级别元数据信息。

参数 描述
GROUP_ID 节点组ID。
IS_FORCE 当前类型只剩最后一个节点组时,是否强制删除该组

示例(分布式部署)

BEGIN
	DBMS_CM.DELETE_GROUP(1, false);
END;
/

# CREATE_NODE

DBMS_CM.CREATE_NODE(
   GROUP_NODE_ID    OUT INT,
   ENDPOINT         OUT INT,
   GROUP_ID         IN  INT,
   NODE_TYPE        IN  INT,
   HOST             IN  VARCHAR,
   SERVICE_ADDR     IN  VARCHAR,
   REPLICA_ADDR     IN  VARCHAR,
   DATA_ADDR        IN  VARCHAR,
   IS_SYNC_METADATA IN  BOOL
   );

该函数用于创建分布式集群的节点级别元数据信息,相关信息将被写入缓存和系统表中。

参数 描述
GROUP_NODE_ID 组内节点ID。
ENDPOINT 节点endpoint。
GROUP_ID 节点组id。
NODE_TYPE 节点类型。
HOST 节点的服务器地址。
SERVICE_ADDR 节点的服务地址。
REPLICA_ADDR 节点的复制地址。
DATA_ADDR 节点的数据传输地址。
IS_SYNC_METADATA 新扩容的CN节点或DN组首节点时,是否需要同步元数据信息。

示例(分布式部署)

DECLARE
node_id INT;
endpoint INT;
BEGIN
	DBMS_CM.CREATE_NODE(node_id,endpoint,1,1,'host','127.0.0.1:1688','1270.0.1:1698','127.0.0.1:1699',false);
END;
/

# DELETE_NODE

DBMS_CM.DELETE_NODE(
   GROUP_ID      IN INT,
   GROUP_NODE_ID IN INT
   );

该函数用于从缓存和系统表中删除分布式集群的节点级别元数据信息。

参数 描述
GROUP_ID 节点组ID。
GROUP_NODE_ID 组内的节点id

示例(分布式部署)

BEGIN
	DBMS_CM.DELETE_NODE(1,2);
END;
/

# UPDATE_DATA_URL

DBMS_CM.UPDATE_DATA_URL(
   GROUP_ID      IN INT,
   GROUP_NODE_ID IN INT,
   URL           IN VARCHAR,
   DATA_ADDR     IN VARCHAR,
   REPLICA_ADDR  IN VARCHAR,
   DATA_PATH     IN VARCHAR,
   HOST          IN VARCHAR
   );

该函数用于更新分布式集群中节点的URL信息以及数据路径,相关信息将被写入缓存和系统表中。

参数 描述
GROUP_ID 节点组ID。
GROUP_NODE_ID 组内节点ID。
SERVICE_ADDR 服务地址。
DATA_ADDR 数据地址。
REPLICA_ADDR 复制地址。
DATA_PATH 数据路径。
HOST 服务器地址。

示例(分布式部署)

BEGIN
	DBMS_CM.UPDATE_DATA_URL(1,1,'127.0.0.1:1678','127.0.0.1:1679','127.0.0.1:1680','/data','host1');
END;
/

# UPDATE_DATA_PATH

DBMS_CM.UPDATE_DATA_URL(
   GROUP_ID      IN INT,
   GROUP_NODE_ID IN INT,
   DATA_PATH     IN VARCHAR
   );

该函数用于更新分布式集群中节点的数据路径,相关信息将被写入缓存和系统表中。

参数 描述
GROUP_ID 节点组ID。
GROUP_NODE_ID 组内节点ID。
DATA_PATH 节点数据路径。

示例(分布式部署)

BEGIN
	DBMS_CM.UPDATE_DATA_PATH(1,1,'/data');
END;
/