踩坑指南:入门OpenTenBase之部署篇
引言
OpenTenBase 企业级分布式HTAP开源数据库,具备高扩展性、商业数据库语法兼容、分布式HTAP引擎、多级容灾和多维度资源隔离等能力,成功应用在金融、医疗、航天等行业的核心业务系统。

这是我第一次参与开源项目,所以感到有些摸不着头脑。我看了一下源代码,发现它是用C语言开发的,这让我更加头疼。不过,不管是哪个开源项目,都会存在各种问题(issue)。选择一些简单或中级的开发任务来练习还是一个不错的主意。毕竟,这是一个锻炼自己的机会。在现实工作中,没有任何公司会容忍一个缺乏基础的开发人员去练习,因为那可能导致生产事故。因此,开源项目是一个快速提升自己能力的途径。
如果你也对此感兴趣,可以参考这个链接:https://competition.atomgit.com/?utm_source=atomgit
要开始参与项目,首先要从部署和启动开始。如果没有本地的开发环境,是不可能真正加入其中的。
开始踩坑
官方源码地址:git clone https://github.com/OpenTenBase/OpenTenBase
在这篇文章中,我以Centos 8为例展示了如何进行部署。如果你需要了解基本的安装操作步骤,可以参考这个链接:https://docs.opentenbase.org/guide/01-quickstart
我就不再一一演示这些基本步骤了,而是想分享一些官方文档中没有提及的各种奇葩问题的解决方法。
uuid-devel匹配不到
上来第一步就发现了问题,当执行环境依赖安装时yum -y install gcc make readline-devel zlib-devel openssl-devel uuid-devel bison flex git
在Centos 8系统上,可能会遇到一个错误提示:找不到 uuid-devel 软件包。这是因为在Centos 8的默认软件仓库中找不到 uuid-devel 软件包,尽管 uuid-devel 实际上是一个必需的依赖项。此外,安装类似uuid依赖包也无法解决问题,否则在执行configure命令时可能会出现错误提示:configure: error: library 'ossp-uuid' or 'uuid' is required for OSSP UUID
幸运的是,CentOS的“PowerTools”软件库中包含了 uuid-devel 软件包,但默认情况下未启用。要启用该软件库,可以使用以下命令dnf config-manager --set-enabled powertools,如果没有dnf命令,则执行一下:yum install dnf-plugins-core
configure: error: readline library not found
在执行configure命令时报错:configure: error: readline library not found
如果遇到这个问题,可以尝试执行以下命令来安装必要的依赖包:yum -y install gcc make readline-devel即可
确保所有的依赖环境都已安装完毕后,再执行make -sj命令。在执行这一步之前,请确保剩余可用内存大于等于4G,以避免内存溢出问题。尽管官方文档建议最低内存为4G,但我建议你将内存扩大至8G,以确保后续执行init all命令时不会遇到各种奇怪的问题。切记,不要将内存设置得过低,否则可能会导致后续命令的异常行为。
环境及ssh
执行vim ~/.bashrc编辑系统环境变量后记得source ~/.bashrc,要不然无法找到命令pgxc_ctl
在集群部署过程中,只有一台服务器需要进行编译操作,其他服务器只需进行环境变量配置、用户及目录设置以及SSH连接的配置。这样设计的原因是因为在执行deploy all命令时,已经编译好的安装包会被发送到其他机器上。
为了实现集群节点机器之间的SSH无密码登录,首先需要在各个节点机器上配置好SSH密钥认证。这样一来,在部署和初始化过程中,可以通过SSH连接到每个节点的机器而无需输入密码。在这个过程中,需要确保已经打通了第二台及其IP的SSH连接,并且也打通了自己机器的SSH连接。
ssh-copy-id -i ~/.ssh/id_rsa.pub destination-user@destination-server
启动和节点排查
在进行集群部署时,接下来的步骤是使用pgxc_ctl进行部署。如果对pgxc_ctl的命令不熟悉,可以通过使用help命令来查看帮助文档。在我的机器上,当我运行monitor all命令时,只能显示一个信息然后程序强制退出,这表明肯定有节点启动失败了。因此,建议单独使用monitor命令来查看各个节点的状态,以便更清楚地了解每个节点的运行情况。

如果某一个一直无法正常启动,比如显示gtm_ctl: another server might be running; trying to start server anyway,那么可能会是你没有正常关闭,通常需要你手动去删除对应的pid文件,
本次以gtm为例,如果不知道的pid文件位置在哪里,那么可以使用find / -name '*gtm*.pid',找到后删除对应的文件即可。然后再次启动start all。
如果还是无法启动,那么则可以去看下对应日志,还以gtm为例。cd /data/opentenbase/data/gtm/slave/gtm_log进入对应日志目录,然后查看日志。我这里显示的最后是

建议考虑进行扩容操作。显然这里资源不足。如果你的内存已经达到了8GB,那么可以考虑进一步扩展CPU资源至2核心。我目前的系统只有1核心的CPU,显然已经不够用了,扩容后系统性能应该会恢复正常。

总结
通过本次经历,我了解了OpenTenBase开源项目的基本情况以及参与该项目的一些经验和技巧。作为一个初次参与开源项目的成员,建议选择简单或中级的开发任务来练习,因此,通过参与开源项目,我们不仅可以提升自己的技术能力,还可以学习到解决问题的方法,为未来的工作和学习打下坚实的基础。
踩坑指南:入门OpenTenBase之部署篇的更多相关文章
- C# -- HttpWebRequest 和 HttpWebResponse 的使用 C#编写扫雷游戏 使用IIS调试ASP.NET网站程序 WCF入门教程 ASP.Net Core开发(踩坑)指南 ASP.Net Core Razor+AdminLTE 小试牛刀 webservice创建、部署和调用 .net接收post请求并把数据转为字典格式
C# -- HttpWebRequest 和 HttpWebResponse 的使用 C# -- HttpWebRequest 和 HttpWebResponse 的使用 结合使用HttpWebReq ...
- [置顶]
xamarin android toolbar(踩坑完全入门详解)
网上关于toolbar的教程有很多,很多新手,在使用toolbar的时候踩坑实在太多了,不好好总结一下,实在浪费.如果你想学习toolbar,你肯定会去去搜索androd toolbar,既然你能看到 ...
- Spring WebSocket踩坑指南
Spring WebSocket踩坑指南 本次公司项目中需要在后台与安卓App间建立一个长连接,这里采用了Spring的WebSocket,协议为Stomp. 关于Stomp协议这里就不多介绍了,网上 ...
- 树莓派4B踩坑指南 - (15)搭建在线python IDE
今天想在树莓派上自己搭一个在线的python IDE,于是找到了一篇教程--Fred913大神的从头开始制作OJ-在线IDE的搭建 自己尝试动手做了一下, 还是发现不少细节需要注意, 记录在此 如果不 ...
- Nuxt.js的踩坑指南(常见问题汇总)
本文会不定期更新在nuxt.js中遇到的问题进行汇总.转发请注明出处,尊重作者,谢谢! 强烈推荐作者文档版踩坑指南,点击跳转踩坑指南 在Nuxt的官方文档中,中文文档和英文文档都存在着不小的差异. 1 ...
- Java 热更新 Groovy 实践及踩坑指南
Groovy 是什么? Apache的Groovy是Java平台上设计的面向对象编程语言.这门动态语言拥有类似Python.Ruby和Smalltalk中的一些特性,可以作为Java平台的脚本语言使用 ...
- 正则表达式 test 踩坑指南
正则表达式 test 踩坑指南 test 只能使用一次,第二次返回的是错误结果! reg = /edg|edge/g; /edg|edge/g reg.test(`edg`) true reg.tes ...
- Taro 开发踩坑指南 (小程序,H5, RN)
Taro 开发踩坑指南 (小程序,H5, RN) css taro 如何展示多行文本省略号 https://www.cnblogs.com/xgqfrms/p/12569057.html UI 设计稿 ...
- 小程序 & taro 踩坑指南
小程序 & taro 踩坑指南 微信开发者工具, 不支持 react bug https://github.com/NervJS/taro/issues/5042 solution just ...
- Android applink 踩坑指南
Android applink 踩坑指南 原理 接入步骤 将链接与activity关联起来 加入meta data 生成身份验证JSON 真机测试 结论 官方文档 原理 与url scheme不同的地 ...
随机推荐
- Avalonia 跨平台框架中如何以正确的姿势使用 OpenGL ES 渲染。
前言 这是一篇很水的文章,没有任何技术含量,在 Github 已经有很多人对 Avalonia 的 OpenGL ES 支持进行了讨论,但是我还是想写一篇文章来记录一下我是如何在 Avalonia 中 ...
- 【Azure Logic App】消费型逻辑应用在消费Service Bus时遇见消息并发速度慢,消息积压
问题描述 消费型逻辑应用(Consumption Logic App)使用触发器模式消费 Azure Service Bus的消息,当Service Bus中存在大量消息等待消费时,Logic App ...
- Lua学习笔记3
Lua学习笔记3 IO读写 Lua中读写使用自带的I/O库处理文件. 分为简单模式和完全模式. 简单模式(simple model)拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操 ...
- 十五: InnoDB的存储结构
InnoDB的存储结构 1.数据库的存储结构:页 索引结构给我们提供了高效的索引方式,不过索引|信息以及数据记录都是保存在文件上的,确切说是存储在页结构中.另一方面,索引是在存储引擎中实现的,MySQ ...
- MySQL联接表总结笔记
SQL最强的的工呢过之一就是能够在护具检索查询的执行中联结表,联结表利用SQL的select能执行的最重要的操作,很好的理解联结及其语法学习SQL的一个重要的组成部分. 在能够有效的使用联结前,必须了 ...
- JavaScript获取href的值
1.当href的值为正常网址时: <!DOCTYPE html> <html> <head> <title></title> <met ...
- 3DCAT实时云渲染助力VR虚拟现实迈向成熟
近年来,虚拟现实(Virtual Reality, VR)技术在市场上的应用越来越广泛,虚拟现实已成为一个热门的科技话题.相关数据显示,2019年至2021年,我国虚拟现实市场规模不断扩大,从2019 ...
- 手把手制作mobileconfig文件,在iphone上创建h5网页桌面图标
1,下载mobileconfig文件制作工具 下载地址:点击关注公众号,回复appicon, 获取工具的下载地址 新建配置描述文件,填写通用信息 填写Web Clip信息 点击菜单栏的导出,注意这里一 ...
- 记录--h5端调用手机摄像头实现扫一扫功能
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.前言 最近有遇到一个需求,在h5浏览器中实现扫码功能,其本质便是打开手机摄像头定时拍照,特此做一个记录.主要技术栈采用的是vue2,使 ...
- 记录--居中为什么要使用 transform?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 引言 居中是我们在前端布局中经常会遇到的问题,其中包括水平居中和垂直居中.居中的方法很多,比如说水平居中可以使用text-align: c ...