#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;
/