我们每个月都会和大家展开一次社区进展的汇报沟通会,希望通过更多的互动交流让OceanBase 开源社区更加透明,实现信息共享,也希望能营造更加轻松的氛围,让大家可以在此畅所欲言、答疑解惑。如果您对我们的社区有任何建议,欢迎在 GitHub 上提 Issues 或 PR ,也欢迎大家称为 Contributor,参与社区的共建。

OceanBase 社区版产品规划及研发进展
OceanBase 社区版发布节奏为每2年一个大版本 release,每3个月一次 feature 版本,每个月一个 bug fix 版本( bp 版本)。
- 大版本发布即为架构发生升级, 版本升级类似 MySQL 5.7 升级到 MySQL 8.0, 需要做数据迁移才能完成升级。
- feature 版本即为发布了众多 feature 或大 feature , 本地手动冷升级(本地重启)或者通过 OCP 热升级(不停服务)。
- bp 版本即为纯 bug fix 版本, 版本升级直接替换 binary 即可, 可以使用 ODP 升级或使用 OCP 热升级。
在本月,并没有版本发布,但我们正在进行OceanBase 社区版4.0的最后准备,包括内核与配套工具的研发,相关文档的补齐与完善。在新版本中,安装部署体验将得到进一步优化,包括支持白屏监控、一键部署脚本、离线安装包等。
OceanBase 社区9月内容概览
在本月上新的社区内容中,重点推荐你阅读以下几篇好文:
- 实践案例
- 某银行客户Db2下移分布式数据库OceanBase案例
- 沉舟侧畔千帆过|云OceanBase在高德的实践之路
- 专题干货
- OceanBase存储层代码解读(四):宏块的垃圾回收和坏块检查
- 高性能数据访问中间件 OBProxy(五):一文讲透数据路由
- 行业洞察
- 解读《分布式数据库发展趋势2022》
此外,你也可以关注《从0到1数据库内核实战》《SQL 查询改写》等专题,正在持续更新中。
OceanBase 社区9月精彩活动及10月活动预告
在本月我们共开展了七场活动,其中,有四场《从0到1数据库内核实战教程》,这是专为数据看爱好者推出的免费培训课程,从理论到实践,由浅入深掌握数据库内核开发,为数据库内核人才培养添砖加瓦。有两场Meetup,分别在杭州和广州与OceanBase 的用户及数据看爱好者进行了线下探讨。还有2022 OceanBase 数据库大赛已开启报名,欢迎大家参与赛事,赢取大奖的同时学习并验证自己的数据库开发实力。
下月我们将分别在北京、西安、武汉、深圳、成都开展Meetup活动,期待与大家线下交流。报名可关注社区活动页。

OceanBase 社区用户问题精选
我们从社区「问答」区,搜集了本月用户提出的疑问,并从中精选出如下问题及回答,供大家参考。
问题1:使用集群之一作为中控机(OBD 和 OBProxy),对整体性能有哪些影响?在测试资源不充足情况下,能否减少服务器的使用,同时对系统影响甚微?
解答:OBD 的话,没有影响,OBProxy 和 ObServer部署在一起是可以的,ObProxy 会占用少量资源(内存 800M 以内,CPU和 压力有关,通常是占用1-2个核),通常情况下是可以这么部署测试的
问题2:ODC导出表数据报错,报错如下。
预期外异常,错误详情:Unhandled exception, type=XMLException, message=src-resolve: Cannot resolve the name ‘extension’ to a(n) ‘element declaration’ component
解答:是因为 ODC 客户端安装目录包含了中文字符,卸载后重新安装,不要中文目录,可以正常导出
问题3:自增主键在自己插入主键值后,AUTO_INCRUMENT异常改变。例如一张表有id,name两个字段,id为自增主键,我插入数据(100,‘张三’),自增id的AUTO_INCRUMENT应该自动更改为101,但是实际变成了2000101,我下次插入数据且不设置主键,插入数据为(‘李四’),id值变为了1000101,正常应该是101。
解答:属于正常现象。在分布式数据库内表的主键自增是整体单调递增,并不是严格顺序递增。重启也会导致前边缓存在内存的顺序id丢,重新计数。OceanBase 数据库的自增列是兼容 MySQL 的自增列模块,满足三个原则,即多分区全局唯一;语句内连续递增;生成的自增列值大于用户显式插入的值。
问题4:在 OB4.0 发布会上听某位老师讲 oceanbase3.x 版本的索引是要常驻内存的,所以对服务器内存要求较高。请问如果内存容量不足以存储所有索引时,会出现什么情况,OOM吗?
解答:索引常驻内存是指数据的索引结构,例如微块索引,宏块 meta 等,不是指索引表本身常驻内存。如果内存容量不足以存储所有索引,那 observer 启动时会报错,拉不起来。
问题5:使用 mysql-connector-java 的 8.0.29 版本连接 OceanBase 社区版 3.1.4 会有问题吗
解答:安装 MySQL Connector/J,并配置运行环境。推荐使用 MySQL Connector/J 5.1.47 版本。如果是 MySQL Connector/J 8.x 版本,Class.forName("com.mysql.jdbc.Driver") 中的 com.mysql.jdbc.Driver 需要替换成 com.mysql.cj.jdbc.Driver 。
https://www.oceanbase.com/docs/community-observer-cn-0000000000557645
问题6:请问下 OceanBase 之前没加主键,现在为了规范想指定一个主键,却报错了,这个是要怎么处理?
解答:OceanBase 3.x 不支持主键的相关的变更(后加主键,修改主键),4.x 会支持。只能重新建表,或者 rename 表,重新建表,insert into select,变相操作。
https://www.oceanbase.com/docs/community-observer-cn-10000000000450633
问题7:使用OCP初始化得 metadb 没有被obd cluster 接管 ,在官网上没有找到如何对它进行启停的命令 ,要把它清空掉重新部署应该如何操作?
解答:目前OCP直接部署的meta OB 环境,虽然创建的时候调用的obd,但是没有保留obd的环境,所以如果要重启,只能通过命令行手动启,启停是后台单独命令操作的
查看进程方式:ps -ef|grep observer
【部署】ocp部署 ob 是界面上传ob-ce相关安装包,选定ip,直接去分发部署的不需要单独去ob节点安装。
obd部署的机器,可以走ocp 接管集群方式
【启动进程】直接去ob安装目录下 ./bin/observer
有个obproxy和obproxy的进程启动 可以在/home/admin/obproxy/下用上面那个脚本
执行方式:cd /home/admin/obproxy/
sh start.sh /home/admin/obproxy xx.xx.xx.xx 2883
(xx.xx.xx.xx换成proxy的ip即可)
【杀进程】
杀掉的observer的方式 是直接杀observer的进程,停止只能杀进程,obproxy 也一样,obproxy启动比较麻烦,用那个脚本就可以启动了。
OceanBase 社区9月之星
我们每个月都会从社区贡献者与活跃者中选出社区之星,本月社区之星是以下五位:
- 兰锦鸿,积极参与社区活动,多次在文档提升活动有优异表现,并为文档提升做出卓越贡献。
- 梁栋,在问答区积极参与互动,帮助社区成员解疑答惑。
- 秦少林,积极参与社区活动,多次在文档提升活动有优异表现,并为文档提升做出卓越贡献。
- 滕海南 ,积极给文档、社区建设提供建议。
- 周徐午,在问答区积极参与互动,帮助社区成员答疑解惑。




