OceanBase开发者手册
文章目录
【注意】最后更新于 February 23, 2022,文中内容可能已过时,请谨慎使用。
多看、多问、多总结
日期 | 内容 | 版本 |
---|---|---|
2022-2-23 | day1: | v1 勉强可以用。 |
blog地址:https://wangcy6.github.io/post/oceanbase/day1_issue_oceanbase/
day1: 阅读:OceanBase开发者手册
使用VSCode 远程链接功能阅读OceanBase代码
我们经常遇到两个问题:
- 本地电脑存在瓶颈,单机性能有限,毕竟资金紧缺?
- 一般电脑安装的都是 windows 或者 mac 图形支撑好的系统,而开发的项目又必须是 Linux 上编译运行?
如果本机直接用 vscode ,势必会遇到上面的问题。比如 Linux/OceanBase 代码量巨大,本机性能是 hold 不住,编辑器建立内存的索引非常庞大,既要吃内存又要吃 CPU 。对于编译,那就更麻烦了,涉及到手动的同步。
我们经常怎么解决它?
- 纵向优化电脑,给自己电脑加个内存条,换个 cpu ,这个思路是可以的,但是它永远存在性能瓶颈。这还真不是钱的问题;
- 对于平台依赖,以前的实践是 windows 下编辑,然后用 scp 或者其他同步工具,把代码同步到另外一台 Linux 下去编译,很麻烦;
怎么才能彻底解决它?
1.1 开发环境说明(极简版)
-
因为公司没有合适机器 4C12G ,上次偷偷使用一次导致服务器cpu利用过高被邮件告警,必须采取个人mac作为开发。
-
官方提供docker 4C10G,普通笔记本也无法使用,这里采用4C4G方式进行开发编译。
|
|
小贴士:可以直接使用官方提供docker进行开发。
1.2 macOS 下使用 Docker 搭建 centos 开发环境
|
|
遗留问题 缺点:每次重启 service sshd restart 因此 需要重新构造一个镜像。这里还没有实现。
遗留问题:将服务器目录与容器目录进行共享 这个可以设置。
1.3《OceanBase开发者手册》之二 如何设置IDE开发环境(done)
- vscode –已经下载完毕
- clang-format是clang(一个面向C系语言的轻量级编译器)中一个工具,主要负责代码的格式化和排版工作 –已经设置完毕。
- /Users/wangchuanyi/code/src/oceanbase/.clang-format 已经存在不需要处理
1.4 vscode设置
- vscode 远程连接主机主要是依赖于微软提供的插件 Remote-SSH。
1.5 《OceanBase开发者手册》之三 如何成为OceanBase Contributor
如何去参与一个开源库的开发 提交doc 修改为例子
- 一个issue 一个分支
|
|
1.6 《OceanBase开发者手册》之五 如何debug OceanBase
- 1.6.1 准备工作 【开始 50】
一、小思考
Q: How can I use a component of a specific version?
最低配置是多少?
vscode 运行一个程序为什么需要launch文件?
二、过程
|
|
-
配置:
小贴士:
文档默认64G配置,不能直接拿来用,要改成自己的
/root/observer/bin/observer -r 127.0.0.1:2882:2881 -o __min_full_resource_pool_memory=268435456,memory_limit=8G,system_memory=4G,stack_size=512K,cpu_count=16,cache_wash_threshold=1G,workers_per_cpu_quota=10,schema_history_expire_time=1d,net_thread_count=4,sys_bkgd_migration_retry_num=3,minor_freeze_times=10,enable_separate_sys_clog=0,enable_merge_by_turn=False,datafile_disk_percentage=20,enable_syslog_wf=False,enable_syslog_recycle=True,max_syslog_file_count=4 -z zone1 -p 2881 -P 2882 -c 1 -d /root/observer/store -i lo -l INFO
|
|
-
clion 本地调试【遗留问题】
据说它的源码索引效率优于sourceInsight几倍。这里没有使用
https://www.jetbrains.com/zh-cn/clion/
- 直接用gdb 本地调试 [ 在linx 环境下运行 done]
- 登录remote 机器, 并进入${OB_SRC_DIR} 源码目录
- 参考之前文章 介绍 《如何编译OceanBase源码》
- 修改 用户目录下的.gdbinit, 添加下面一行, 其中${OB_SRC_DIR}需要换成OB 源码根目录
|
|
- vi ${OB_SRC_DIR}/.gdbinit
|
|
备注: 这个里面有args的参数来自于第一步的准备工作中获取的启动参数, 每台机器有每台机器的配置, 笔者的参数如下, 其中:
|
|
- 推荐使用tui tui是gdb自带的图形界面,比较直观,这里简单说一下切换方法和常用命令
|
|
- 在源码目录下, 敲入gdb 即可启动gdb debug
|
|
阅读:配置gdb init文件 10分钟 ✅
- 当gdb启动时,会读取HOME目录和当前目录下的的配置文件,执行里面的命令。这个文件通常为“.gdbinit”。
阅读:gdb中查看stl容器内容 10分钟 ✅
单元测试 完成。
|
|
三 、 结论
-
docker弹性伸缩 : 开发环境 2C2G ,配置至少12G(4G其他用,8G observer用)
int64_t ObRunningModeConfig::MINI_MEM_LOWER = 8L « 30;
-
更好的调试工具 clion 和gdb(界面) 这个做课下作业 没有尝试。后于遇到问题在尝试。
day2: 阅读 Roadmap
gdb 调试 observer
|
|
sql 入口为例子