OpenTenBase 开发环境搭建及Debug设置

news/2024/7/9 20:41:06 标签: opentenbase, c, 数据库, postgresql
cle class="baidu_pl">
cle_content" class="article_content clearfix">
content_views" class="markdown_views prism-atom-one-dark"> cap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">

最近有个 OpenTenBase开源核心贡献挑战赛 领导建议大家都去试试࿰c;我也去凑了下热闹࿰c;发现能力有限一时半会是搞不明白了࿰c;最多也就是能搞搞文档翻译࿰c;或者写点操作手册啥的。
不过不管怎么样࿰c;先把开发环境搭上࿰c;得空也能玩一下。

啥是OpenTenBase

想了解的可以直接上官方源码地址去看看。
一句话就是࿰c;腾讯基于Postgres-XL(基于PostgreSQL)开发的分布式数据库系统。

开整

没有独立的Linux机器可用࿰c;经常要玩玩游戏࿰c;也不可能把小本本换成Linux࿰c;所以计划使用虚拟机开发。

  • 宿主系统 :WIN11 家庭版
  • 虚拟机:VirtualBox 7.0
  • 虚拟操作系统:CentOS-7-x86_64-Minimal-2009
    • 内存大于4G
  • IDE: Eclipse IDE for C/C++ Developers 2023-12
  • 终端工具:MobaXterm v23.2

CentOS上安装基础包

<code class="prism language-bash">yum groupinstall class="token string">"X Window System"
yum class="token parameter variable">-y class="token function">install gcc class="token function">make readline-devel zlib-devel openssl-devel uuid-devel bison flex
yum class="token parameter variable">-y class="token function">install gdb class="token function">git java-1.8.0-openjdk.x86_64
code>

关于X环境࿰c;执行xclock能弹出一个小闹钟就可以了。
c="https://img-blog.csdnimg.cn/direct/9c94742c7c5b493a8ed7ff05d9f2721e.png" alt="在这里插入图片描述" />

新建开发账号

这里我用的是class="tags" href="/tags/OPENTENBASE.html" title=opentenbase>opentenbase

<code class="prism language-bash">class="token comment">#开发账号
class="token function">useradd class="tags" href="/tags/OPENTENBASE.html" title=opentenbase>opentenbase

class="token comment">#开发目录
class="token function">mkdir class="token parameter variable">-p /data/class="tags" href="/tags/OPENTENBASE.html" title=opentenbase>opentenbase

class="token function">chown class="token parameter variable">-R class="tags" href="/tags/OPENTENBASE.html" title=opentenbase>opentenbase.class="tags" href="/tags/OPENTENBASE.html" title=opentenbase>opentenbase /data/class="tags" href="/tags/OPENTENBASE.html" title=opentenbase>opentenbase
code>

下载源码

建议把官方代码以fork到自己的仓库里然后下载自己仓库的代码࿰c;这样以后修改了可以直接向自己的库里提交。

<code class="prism language-bash">class="token builtin class-name">cd /data/class="tags" href="/tags/OPENTENBASE.html" title=opentenbase>opentenbase
class="token function">git clone https://github.com/OpenTenBase/OpenTenBase.git
code>

clipse_48">下载Eclipse

<code class="prism language-bash">class="token function">wget https://mirrors.nju.edu.cn/eclipse//technology/epp/downloads/release/2023-12/R/eclipse-cpp-2023-12-R-linux-gtk-x86_64.tar.gz

class="token function">tar xzvf eclipse-cpp-2023-12-R-linux-gtk-x86_64.tar.gz
code>

导入工程

<code class="prism language-bash">class="token comment"># 配置环境变量,可以把环境变量添加取.bash_profile中
class="token builtin class-name">export class="token assign-left variable">SOURCECODE_PATHclass="token operator">=/data/class="tags" href="/tags/OPENTENBASE.html" title=opentenbase>opentenbase/OpenTenBase
class="token builtin class-name">export class="token assign-left variable">INSTALL_PATHclass="token operator">=/data/class="tags" href="/tags/OPENTENBASE.html" title=opentenbase>opentenbase/install

class="token comment"># 生成Makefile
class="token builtin class-name">cd class="token variable">$SOURCECODE_PATH
./configure class="token parameter variable">--prefixclass="token operator">=class="token variable">${INSTALL_PATH}/class="tags" href="/tags/OPENTENBASE.html" title=opentenbase>opentenbase_bin_v2.0 --enable-user-switch --with-openssl --with-ossp-uuid class="token assign-left variable">CFLAGSclass="token operator">=-g --enable-depend --enable-cassert --enable-debug

class="token comment">#编译生成
class="token function">make clean
class="token function">make class="token parameter variable">-sj
class="token function">make class="token function">install
class="token function">chmod +x contrib/pgxc_ctl/make_signature
class="token builtin class-name">cd contrib
class="token function">make class="token parameter variable">-sj
class="token function">make class="token function">install

class="token comment"># 运行eclipse
class="token builtin class-name">cd /data/class="tags" href="/tags/OPENTENBASE.html" title=opentenbase>opentenbase/eclipse
./eclipse
code>

设置workspace
c="https://img-blog.csdnimg.cn/direct/9330ed4f931b42ae8a317bbc9395afd2.png" alt="在这里插入图片描述" />

c="https://img-blog.csdnimg.cn/direct/0731b5ec2ac3475e9b0615553513cc1f.png" alt="在这里插入图片描述" />
c="https://img-blog.csdnimg.cn/direct/f85a96cc91c549df9d544d4ab1216f69.png" alt="在这里插入图片描述" />
c="https://img-blog.csdnimg.cn/direct/e8d905813720494f80ca14076472f4d5.png" alt="在这里插入图片描述" />

调试

调试前要先用之前生成的程序部署一套数据库环境࿰c;只在本机部署即可࿰c;不同节点用端口区分即可。部署文档请参考官方github࿰c;以后有时间出一个详细文档。

确认调试进程号

登录数据库通过pg_stat_activity表查pid࿰c;或通过 select pg_backend_pid(); 查询
c="https://img-blog.csdnimg.cn/direct/347afbf5accf4752a2142ebcaaad11e9.png" alt="在这里插入图片描述" />
c="https://img-blog.csdnimg.cn/direct/d5df0c921b3f4b3f927a98885ffd618d.png" alt="在这里插入图片描述" />

绑定调试进程

c="https://img-blog.csdnimg.cn/direct/f4a5a99b230e4072b203cb7503298909.png" alt="在这里插入图片描述" />
c="https://img-blog.csdnimg.cn/direct/e07956800f7b4417aaa9ac8e017758a2.png" alt="在这里插入图片描述" />
c="https://img-blog.csdnimg.cn/direct/cf91e515d74c4d6ba62aa5f3e5f19b94.png" alt="在这里插入图片描述" />

设置断点

c="https://img-blog.csdnimg.cn/direct/4f24fab5edcf4325a68f51700811fa71.png" alt="在这里插入图片描述" />

执行查询命令࿰c;然后查看断点

c="https://img-blog.csdnimg.cn/direct/3d3362e988ab418e9f0bcfac29030dae.png" alt="在这里插入图片描述" />

c="https://img-blog.csdnimg.cn/direct/05708b8a3ebf480ba1aa91b048f7ec0a.png" alt="在这里插入图片描述" />


http://www.niftyadmin.cn/n/5417150.html

相关文章

nginx作为tcp的负载均衡

背景&#xff1a; 之前总以为nginx只能当静态资源web容器和web的负载均衡&#xff0c;现在才知道原来也可以当tcp的负载均衡。现在我们项目测试服就是一个nginx对应了2个测试服的负载均衡。配置如下: [rootlocalhost conf]# cat nginx.conf#user nobody; worker_processes …

MACBOOK PRO M2 MAX 安装Stable Diffusion及文生图实例

以前偶尔会使用Midjourney生成一些图片&#xff0c;现在使用的头像就是当时花钱在Midjourney上生成的。前段时间从某鱼上拍了一台性价比还不错的macbook&#xff0c;想着不如自己部署Stable Diffusion&#xff08;以下简称SD&#xff09;尝试一下。 网上有很多教程&#xff0c…

Kotlin 中的数据类

1 data class 在一个规范的系统架构中&#xff0c;数据类通常占据着非常重要的角色。 在 Java 中&#xff0c;定义一个数据类&#xff0c;通常需要为其中的每一个属性定义 get/set 方法。如果要支持对象值的比较&#xff0c;甚至还要重写 hashCode、equals 等方法&#xff0c…

什么是自动化测试?什么情况下使用?

什么是自动化测试? 自动化测试是指把以人为驱动的测试行为转化为机器执行的过程。实际上自动化测试往往通过一些测试工具或框架&#xff0c;编写自动化测试脚本&#xff0c;来模拟手工测试过程。比如说&#xff0c;在项目迭代过程中&#xff0c;持续的回归测试是一项非常枯燥…

rust学习(手动写一个线程池)

哈哈&#xff0c;主要是为了练习一下rust的语法&#xff0c;不喜勿喷。 一.Executor申明 struct AExecutor<T> {results:Arc<Mutex<HashMap<u32,T>>>, //1functions:Arc<Mutex<Vec<ATask<T>>>> //2 } 1.results&#xff1a…

【vue2基础教程】vue指令

文章目录 前言一、内容渲染指令1.1 v-text1.2 v-html1.3 v-show1.4 v-if1.5 v-else 与 v-else-if 二、事件绑定指令三、属性绑定指令总结 前言 Vue.js 是一款流行的 JavaScript 框架&#xff0c;广泛应用于构建交互性强、响应速度快的现代 Web 应用程序。Vue 指令是 Vue.js 中…

scrapy分布式爬虫的部署,调度,与管理(scrapy + scrapy-redis + scrapyd + gerapy)

使用到的框架及软件包介绍 Github Gerapy 提供主机管理,爬虫项目管理,爬虫任务管理的web管理后台。Github Scrapy-redis 提供中心化的任务队列,任务指纹队列,供分布式爬虫共享爬取任务队列。Github Scrapyd 提供通过api方式单机部署爬虫的功能,爬虫状态查询等。Github Scr…

突破编程_C++_设计模式(桥接模式)

1 桥接模式的基本概念 桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#xff0c;它的基本概念是将抽象部分与它的实现部分分离&#xff0c;使它们都可以独立地变化。在桥接模式中&#xff0c;抽象部分和实现部分被放在两个不同的类层次中&#xff0c;…