TBase创建默认组时报错:ERROR PGXC Node dn001 object not defined

文章目录

    • 使用数据库前需要创建default group以及sharding表
    • 实际操作:创建组报错
      • 分析
      • 修复


使用数据库前需要创建default group以及sharding表

https://github.com/Tencent/TBase/wiki/1.-TBase_Quick_Start

TBase使用datanode group来增加节点的管理灵活度,要求有一个default group才能使用,因此需要预先创建;一般情况下,会将节点的所有datanode节点加入到default group里 另外一方面,TBase的数据分布为了增加灵活度,加了中间逻辑层来维护数据记录到物理节点的映射,我们叫sharding,所以需要预先创建sharding,命令如下:

postgres=# create default node group default_group with (dn001,dn002);
CREATE NODE GROUP
postgres=# create sharding group to group default_group;
CREATE SHARDING GROUP

实际操作:创建组报错

规划1gtm,2cn,2dn,名称为:gtm,cn001,cn002,dn001,dn002。

create default node group default_group with (dn001,dn002);
-- > ERROR:  PGXC Node dn001: object not defined

分析

cn001查看节点视图,发现只有gtm和cn001。

cn002查看节点视图,发现只有gtm和cn002。

select * from pgxc_node;
cn001
gtm 

回想起艰难的安装过程,好像知道了是怎么回事,因为不是一次性就安装成功,反复修改一些配置后才成功,导致一开始初始化的时候集群是不全的,也就导致了部分节点压根没有创建。

相关代码可参考:\contrib\pgxc_ctl\coord_cmd.c#prepare_configureNode函数中的两个for循环,分别遍历cn和dn然后去创建node,之后重新加载配置。

cmd_t *prepare_configureNode(char *nodeName)
{cmd_t *cmd;int ii;int idx;FILE *f;if ((idx = coordIdx(nodeName)) < 0){elog(ERROR, "ERROR: %s is not a coordinator.\n", nodeName);return NULL;}if (is_none(aval(VAR_coordMasterServers)[idx]))return NULL;cmd = initCmd(NULL);snprintf(newCommand(cmd), MAXLINE,"psql -p %d -h %s -a %s %s",atoi(aval(VAR_coordPorts)[idx]),aval(VAR_coordMasterServers)[idx],sval(VAR_defaultDatabase),sval(VAR_pgxcOwner));if ((f = prepareLocalStdin(newFilename(cmd->localStdin), MAXPATH, NULL)) == NULL){cleanCmd(cmd);Free(cmd);return NULL;}/* Setup coordinators */for (ii = 0; aval(VAR_coordNames)[ii]; ii++){int targetIdx;if (is_none(aval(VAR_coordNames)[ii]))continue;if ((targetIdx = coordIdx(aval(VAR_coordNames)[ii])) < 0)continue;if (!is_none(aval(VAR_coordMasterServers)[ii])){if (idx != targetIdx)// 2024年12月18日 node不在pgxc_node里面,手动创建参考这个/* Register outside coordinator */fprintf(f, "CREATE NODE %s WITH (TYPE='coordinator', HOST='%s', PORT=%d);\n",aval(VAR_coordNames)[ii], aval(VAR_coordMasterServers)[ii],atoi(aval(VAR_coordPorts)[ii]));else/* Update myself */fprintf(f, "ALTER NODE %s WITH (HOST='%s', PORT=%d);\n",aval(VAR_coordNames)[ii],aval(VAR_coordMasterServers)[ii],atoi(aval(VAR_coordPorts)[ii]));}}/* Setup datanodes */for (ii = 0; aval(VAR_datanodeNames)[ii]; ii++){int dnIdx;if (is_none(aval(VAR_datanodeNames)[ii]))continue;if ((dnIdx = datanodeIdx(aval(VAR_datanodeNames)[ii])) < 0){fclose(f);cleanCmd(cmd);return NULL;}if (is_none(aval(VAR_datanodeMasterServers)[dnIdx]))continue;if (sval(VAR_primaryDatanode) && (strcmp(sval(VAR_primaryDatanode), aval(VAR_datanodeNames)[dnIdx]) == 0)){/* Primary Node */if (strcmp(aval(VAR_coordMasterServers)[idx], aval(VAR_datanodeMasterServers)[dnIdx]) == 0)/* Primay and preferred node */fprintf(f, "CREATE NODE %s WITH (TYPE='datanode', HOST='%s', PORT=%d, PRIMARY, PREFERRED);\n",aval(VAR_datanodeNames)[dnIdx], aval(VAR_datanodeMasterServers)[dnIdx],atoi(aval(VAR_datanodePorts)[dnIdx]));else/* Primary but not prefereed node */fprintf(f, "CREATE NODE %s WITH (TYPE='datanode', HOST='%s', PORT=%d, PRIMARY);\n",aval(VAR_datanodeNames)[dnIdx], aval(VAR_datanodeMasterServers)[dnIdx],atoi(aval(VAR_datanodePorts)[dnIdx]));}else{/* Non-primary node */if (strcmp(aval(VAR_coordMasterServers)[idx], aval(VAR_datanodeMasterServers)[dnIdx]) == 0)/* Preferred node */fprintf(f, "CREATE NODE %s WITH (TYPE='datanode', HOST='%s', PORT=%d, PREFERRED);\n",aval(VAR_datanodeNames)[dnIdx], aval(VAR_datanodeMasterServers)[dnIdx],atoi(aval(VAR_datanodePorts)[dnIdx]));else/* non-Preferred node */fprintf(f, "CREATE NODE %s WITH (TYPE='datanode', HOST='%s', PORT=%d);\n",aval(VAR_datanodeNames)[dnIdx], aval(VAR_datanodeMasterServers)[dnIdx],atoi(aval(VAR_datanodePorts)[dnIdx]));}}fprintf(f, "SELECT pgxc_pool_reload();\n");fclose(f);return(cmd);
}

修复

每个节点(cn,dn都需要!)都去执行创建node,然后重新加载配置。

以下仅供参考,具体ip和端口请按照实际配置进行修改。

-- 新建cn002
CREATE NODE cn002 WITH (TYPE='coordinator', HOST='106.1.1.1', PORT=30004);
-- 修改cn001,如果部分列数据错误的话
alter node cn001 WITH (TYPE='coordinator', HOST='106.1.1.1', PORT=30004);
-- 在dn上执行
EXECUTE DIRECT ON (dn001) 'CREATE NODE cn002 WITH (TYPE=''coordinator'', HOST=''106.1.1.2'', PORT=30004)';-- 重新加载配置
SELECT pgxc_pool_reload();
EXECUTE DIRECT ON (dn001) 'SELECT pgxc_pool_reload();';

效果,每个节点都需要是同样的数据才是对的。

select * from pgxc_node ORDER BY node_name;
node_name	node_type	node_port
cn001	C	30004
cn002	C	30004
dn001	D	40004
dn002	D	40004
gtm	G	50001

然后创建节点就正常了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/498149.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入浅出:从入门到精通大模型Prompt、SFT、RAG、Infer、Deploy、Agent

阅读原文 渐入佳境 我们都知道&#xff0c;通过编写一个提示词&#xff08;prompt&#xff09;&#xff0c;我们可以引导大模型生成回答&#xff0c;从而开启愉快的人工智能对话&#xff0c;比如让模型介绍一下卡皮巴拉。上边简图描述了这个过程&#xff0c;我们拆成两部分 pr…

【YOLOv3】源码(train.py)

概述 主要模块分析 参数解析与初始化 功能&#xff1a;解析命令行参数&#xff0c;设置训练配置项目经理制定详细的施工计划和资源分配日志记录与监控 功能&#xff1a;初始化日志记录器&#xff0c;配置监控系统项目经理使用监控和记录工具&#xff0c;实时跟踪施工进度和质量…

vue封装弹窗元素拖动指令

项目开发过程中我们通常会遇到需要到一些弹窗鼠标可以随意拖动位置去放置&#xff0c;vue里面直接通过封装对应的指令即可&#xff0c;于是封装了一个出来&#xff0c;希望可以用到。 Vue.directive(draggable-dom, draggableDom); 组件节点添加对应指令就可以 v-draggable-…

环,域,体,整区,理想,极大理想,

环&#xff1a; 定义&#xff1a; 加法交换群 乘法半群 分配律 域的定义&#xff1a; 加法交换群 乘法群&#xff08;去掉0元是交换群&#xff09; 分配律 Eg:比如整数集合不是域&#xff0c;因为对于乘法来说&#xff0c;去掉0后没有单位元了&#xff0c;但是是环 Eg…

XIAO Esp32S3制作网络摄像头——音频获取

1、功能介绍 本文主要是基于XIAO Esp32S3(Sense)做的一款网络摄像头,主要包含以下功能 1 音频获取/保存 2 视频获取/视频保存 3 行人检测/火焰检测/行人追踪(告警) 4 指定区域 5 摄像头旋转 。。。 本文主要实现第一步,音频获取,后续会陆续实现后面的功能,敬请期…

WEB服务器的部署和优化

1.什么是www world wide web的缩写 全球信息广播 2.什么是http http协议&#xff1a;Hyper Text Transfer Protocol超文本传输协议 http&#xff1a;从服务器传输超文本&#xff08;html&#xff09;到本地浏览的传输协议 &#xff08;超文本指有文字 颜色 图片 链接&#…

C#-使用StbSharp库读写图片

一.StbSharp StbSharp是基于C/Stb图形处理库封装的C#接口,支持多种格式PNG/JPG等图片的处理. GitHub链接: GitHub - StbSharp/StbTrueTypeSharp: C# port of stb_truetype.hhttps://github.com/StbSharp/StbTrueTypeSharp二.使用StbSharp创建高度图 创建一张500*500的高度图PN…

【AIGC-ChatGPT职业提示词指令】智能职业规划助手:基于SVG可视化的职业发展指南系统

引言 在当今快速变化的职场环境中,职业发展规划变得越来越复杂和充满挑战。无论是想要转行的技术人员,还是希望突破瓶颈的职场人士,都需要一个清晰的指导方向和可执行的行动计划。基于这种需求,我们设计了一个智能职业规划助手系统,它能够通过数据可视化的方式,为用户提…

24.12.30 SpringBoot

SpringBootDay 什么是SpringBoot? Spring的一站式解决方案 Spring项目的开关,Spring全家桶的入口 也是未来学习其他的框架的基础,所有框架的整合,都要基于SpringBoot 优点 简化了Spring项目的创建,运行,调试,部署,配置等等步骤 更专注于业务的开发,不去过多的关注配置 …

智能故障诊断和寿命预测期刊推荐

往期精彩内容&#xff1a; Python-凯斯西储大学&#xff08;CWRU&#xff09;轴承数据解读与分类处理 基于FFT CNN - BiGRU-Attention 时域、频域特征注意力融合的轴承故障识别模型-CSDN博客 基于FFT CNN - Transformer 时域、频域特征融合的轴承故障识别模型-CSDN博客 P…

Eclipse中引入NS3项目

参考资料&#xff1a; 博主&#xff1a;深度不睡觉 NS3的3.36版本将Eclipse作IDE_ns3使用eclipse-CSDN博客 从1.2安装eclipse开始 其中参考教程中省略的几点&#xff1a; 1.下载解压tar包 mkdir /Tools/Eclipse/EclipseTool # 新建目录 tar -zxvf /path/to/eclipse-cpp-20…

DAY178内网渗透之内网对抗:横向移动篇入口差异切换上线IPC管道ATSC任务Impacket套件UI插件

1.内网横向移动 1、横向移动篇-入口点分析-域内域外打点 2、横向移动篇-IPC利用-连接通讯&计划任务, 3、横向移动篇-IPC利用-命令模式&工具套件 1.1 横向移动入口知识点 收集到域内用户和凭据后&#xff0c;为后续利用各种协议密码喷射通讯上线提供条件&#xff0c;…

【Lua之·Lua与C/C++交互·Lua CAPI访问栈操作】

系列文章目录 文章目录 前言一、概述1.1 Lua堆栈 二、栈操作2.1 基本的栈操作2.2 入栈操作函数2.3 出栈操作函数2.4 既入栈又出栈的操作函数2.5 栈检查与类型转换函数2.5 获取表数据 三、实例演示总结 前言 Lua是一种轻量级的、高性能的脚本语言&#xff0c;经常被用于游戏开发…

Python爬虫教程——7个爬虫小案例(附源码)_爬虫实例

本文介绍了7个Python爬虫小案例&#xff0c;包括爬取豆瓣电影Top250、猫眼电影Top100、全国高校名单、中国天气网、当当网图书、糗事百科段子和新浪微博信息&#xff0c;帮助读者理解并实践Python爬虫基础知识。 包含编程资料、学习路线图、源代码、软件安装包等&#xff01;【…

VITUREMEIG | AR眼镜 算力增程

根据IDC发布的《2024年第三季度美国AR/VR市场报告》显示&#xff0c;美国市场AR/VR总出货量增长10.3%。其中&#xff0c;成立于2021年的VITURE增长速度令人惊艳&#xff0c;同比暴涨452.6%&#xff0c;成为历史上增长最快的AR/VR品牌。并在美国AR领域占据了超过50%的市场份额&a…

算法 class 004(选择,冒泡,插入)

选择排序&#xff1a; 刚进入 j 循环的样子 j 跳出循环后&#xff0c;b 指向最小值的坐标 然后交换 i 和 b 位置的 值 随后 i , b i , i j1; 开始新一轮的排序&#xff0c; void SelectAQort(int* arr,int size)//选择排序 {for (int i 0; i < size-1; i){ //i 的位置就是…

【Trick】获取kaggle账号的token和api(用于数据集下载)

0&#xff1a;操作背景 由于未来的科研需要用到Unet&#xff0c;但是运行学长的史山代码无法跑通&#xff0c;自己写了一个Unet并load学长的数据集效果也很差&#xff0c;于是打算从最最基础的开始&#xff0c;上github调用一个Unet并成功在公有数据集上跑一遍实例。 Unet的g…

深入理解MemCache

随着互联网应用的飞速发展&#xff0c;动态Web应用的性能问题逐渐成为开发者关注的焦点。其中&#xff0c;数据库作为系统性能的关键瓶颈&#xff0c;在用户请求量急剧增加的情况下&#xff0c;往往难以快速响应用户需求。为了解决这一问题&#xff0c;缓存技术应运而生。MemCa…

移动 APP 设计规范参考

一、界面设计规范 布局原则&#xff1a; 内容优先&#xff1a;以内容为核心进行布局&#xff0c;突出用户需要的信息&#xff0c;简化页面导航&#xff0c;提升屏幕空间利用率.一致性&#xff1a;保持界面元素风格一致&#xff0c;包括颜色、字体、图标等&#xff0c;使用户在…

redis数据结构设计

一. 数据结构简介 要搞清楚redis数据结构&#xff0c;首先需要知道和redis数据相关的三层结构&#xff1a; 五种数据类型 String&#xff08;字符串&#xff09;、List&#xff08;列表&#xff09;、Hash&#xff08;哈希&#xff09;、Set&#xff08;集合&#xff09;和 Sor…