当前位置: 首页 > news >正文

MiniOB环境部署开发(使用Docker)

整体思路:

1.使用docker提供linux编译环境

2.使用vscode进行代码调试和开发以及上传到仓库

整体流程:

1.安装一系列所必要的软件(主要包括docker、VSCode以及git)

2.新建github仓库,将仓库内代码CLONE到本地

3.搭建Docker开发环境

4.配置VSCode

5.编译以及连接

6.miniob训练营提交

MiniOB源码:https://github.com/oceanbase/miniob

MiniOB文档:MiniOB 介绍 - MiniOB

数据库大赛官网:OceanBase 社区

培训课程合集:OceanBase 社区

训练营:OceanBase 社区

一、下载符合电脑配置的docker和VSCode(包含相应插件)以及git

docker网址:https://www.docker.com/get-started/

git网址:Git - Downloads

VSCode网址:https://code.visualstudio.com/Download

VSCode所包含的插件(在拓展中安装):

二、新建github仓库以及将仓库内代码CLONE到本地

前提条件:已注册 Gitee 账号,Gitee 官网地址:https://gitee.com。

创建私有仓库:

登录 Gitee 平台,选择 新建仓库。

输入仓库信息,单击 创建。设置为私有仓库后其他人无法查看到你的代码。

赋权官方测试账号

对于私有仓库,默认情况下其他人看不到,同样 OceanBase 测试后台也无法拉取到代码,这时想要提交测试,需要先给 OceanBase 的官方测试账号增加一个权限。

官方测试账号为:oceanbase-ce-game-test

选择管理>仓库成员管理>观察者。

选择直接添加,搜索官方测试账号。

添加完成后,单击提交。

上述完成了一系列新建仓库的操作,接下来建立本地项目与远程仓储的同步。

第一步新建文件夹,我此时新建的文件夹为MINIOB。

第二步打开所创建的文件夹。CLONE仓库到新建文件夹下(此时建立连接成功)

将会出现下图:

接下来打开miniobtest文件夹:

获取miniob源码,解压后粘贴到miniobtest文件夹下:

三、搭建Docker开发环境

打开终端并在终端中运行如下代码:

docker run -d --name obtest --privileged -v  $PWD/miniobtest:/root/miniob oceanbase/miniob

其中obtest是自定义的命名。

要注意:$PWD一定要修改成自己文件的路径!

比如我的文件夹在D:/MINIOB中,所以我输入的时候是:

docker run -d --name obtest --privileged -v  D:/CLONE/miniobtest:/root/miniob oceanbase/miniob

点击docker的“Containers”,出现如下图所示表示创建成功

docker exec -it OB1 bash

接着输入:

ls

接着输入:

cd miniob

接着输入:

ls

接着输入:

mkdir ./build

接着输入:

ls

具体如图所示:

四、配置VSCode

第一步打开VSCode,点击如下组件

第二步右键点击:

 

第三步点击附加Visual Studio Code:

如果右边栏直接这样的话,说明ok了:

编辑

如果点击附加Visual Studio Code是空的,则首先需要点击文件——打开文件夹。

弹出的窗口应该会默认是/root/,点击确定即可。

然后我们需要在容器中安装拓展:

五、编译与链接

第一步新建一个.vscode文件夹:

第二步在.vscode文件夹中新建tasks.json文件(一定不要把文件名输入错了!)

在tasks.json中输入记得ctrl+s保存一下

{"options": {"cwd": "${workspaceFolder}/miniob/build"},"tasks": [{"label": "cmake","command": "cmake","args": ["-DDEBUG=ON",".."]},{"label": "make","command": "make"},{"label": "CMake Build","dependsOn": ["cmake","make"]},{"label": "Get pid of observer","type": "shell","command":"ps aux | grep observer"},{"label": "Run observer","type": "shell","command":"/root/miniob/build/bin/observer -s/root/miniob-test.sock -f /root/miniob/etc/observer.ini"},{"label": "Run obclient","type": "shell","command":"/root/miniob/build/bin/obclient -s/root/miniob-test.sock"}],"version": "2.0.0"}

接下来我们进行编译操作。

使用ctrl+shift+p调出窗口,搜索“任务”,找到运行任务:

点击cmake进行编译;

选择“继续而不扫描任务输出”:

如果终端中显示这样说明成功。

这一步需要等待一段时间。

终端输出如下说明成功:

接着跟上面差不多,“任务:运行任务”——“make”——“继续而不扫描任务输出“,终端输出如下说明成功:

这一步需要等待较长的时间。

终端输出如下说明成功:

最后,“任务:运行任务”——“cmake build”——“继续而不扫描任务输出“:

终端输出如下说明成功:

接下来我们来配置Debug环境。

仍是在.vscode文件夹中,新建一个launch.json文件,并将以下内容输入到文件中:

{"version": "0.2.0","configurations": [{"name": "(gdb) Attach","type": "cppdbg","request": "attach","program": "${workspaceFolder}/miniob/build/bin/observer","MIMode": "gdb","setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}]},]}

运行和调试的 Attach 功能可以跟踪一个运行中的进程,从而对其进行调试。数据库系统的调试过程往往是通过运行一个编译好的数据库程序,然后利用 Attach 方法跟踪其进程并在指定代码位置设置断点,从断点处逐步调试编写好的程序。

首先使用ctrl+shift+p调出窗口,搜索“任务”,找到运行任务,找到Run observer,选择继续而不扫描任务输出

然后终端会出现:

接下来需要获得运行中的 observer 的进程号。仍是使用ctrl+shift+p调出窗口,搜索“任务”,找到运行任务:再搜索Get pid of observer,继续而不扫描任务输出,找到并运行;

终端显示应如下图所示:

其中第一行的“77911”就是我们所需要的进程号。

需要注意的是,该进程号在每次启动 observer 进程时都会变化,因此需要每次 Attach 之前都查询确定。

获取到进程号之后,我们就可以在debug窗口中找到这样一个小三角:

然后选择上述的进程号

当出现如下图所示表示成功:

接下来我们进行简单的调试:

我们在command_executor.cpp的第50行加入断点

在不加入断点时执行help操作:

在加入断点时执行help操作:

需要注意的是,每次重新启动时,都需要先Run observer再Run obclient。

每次关机前一定要先关闭容器再关闭docker!如果关不掉,请使用docker kill强行关闭。

六、miniob训练营提交

进入miniob训练营官网,选择自己想做的题目

点击进入

根据题目编写代码,然后上传到仓库:

需要到相应文件夹下执行下列代码

# 进入到 miniob 目录,删除 .git 目录,清除已有的 git 信息

cd miniob

rm -rf .git

# 重新初始化 git 信息,并将代码提交到自己的仓库

git init

git add .

git commit -m 'init'  # 提交所有代码到本地仓库

# 将代码推送到远程仓库

git remote add origin https://gitee.com/xxx/miniob.git # 注意替换命令中的  息为自己的库信息

git branch -M main

git push -u origin main

由于我的是miniobtest文件夹下,如下图:

由于第一次由于仓库是空的需要使用如上复杂的命令行,接下来每次都只需要点击VSCODE内的提交按钮即可

接下来到官网提交代码

首先找到仓库地址

我进行简单提交如图所示:

http://www.xdnf.cn/news/1342621.html

相关文章:

  • Logstash——安全与权限管理
  • Adobe Photoshop 2025 版本介绍与使用指南
  • 最新AI赋能Python-GEE遥感云大数据分析、可视化与Satellite Embedding创新应用
  • 【ElasticSearch】使用docker compose,通过编写yml安装es8.15和kibana可视化界面操作,go连接es
  • 企业级大模型解决方案:架构、落地与代码实现​
  • 视觉语言对比学习的发展史:从CLIP、BLIP、BLIP2、InstructBLIP(含MiniGPT4的详解)
  • [react] js容易混淆的两种导出方式2025-08-22
  • nginx-限速-限制并发连接数-限制请求数
  • 零音乐基础想创作?通过cpolar,ACE-Step远程编曲如此简单
  • 知识见闻 - 苹果无线键盘A1314说明书
  • 【力扣 Hot100】滑动窗口巧解字串问题
  • 新的 SHAMOS MacOS 窃取程序利用单行终端命令攻击用户
  • 开发者中使用——控制台打印数据
  • Linux mmap内存映射
  • tail -f与less的区别
  • 【系统信息相关】datecal命令
  • 使用 TensorBoardX 实现 PyTorch 神经网络可视化:从入门到进阶
  • 【运维进阶】Shell 变量
  • VASPKIT模版INCAR笔记
  • 同题异构解决leetcode第3646题下一个特殊回文数
  • Effective C++ 条款55:熟悉Boost库
  • 2025-08-21 Python进阶2——数据结构
  • imx6ull-驱动开发篇33——platform 平台驱动模型
  • C++ this 指针
  • 分治思想在系统分流削峰中的实践与Golang前沿实现
  • Python读取和设置PNG图片的像素值
  • MFC随笔—不使用对话框资源模板创建对话框
  • Effective C++ 条款54:熟悉标准库
  • 【lucene】lucene常用查询一览
  • python 项目编号 2025821 有关于中英文数据的收集、处理