OceanBase数据库源码解析
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4.2 构建/打包OceanBase数据库

OceanBase使用CMake作为构建工具,可以直接使用CMake命令自行创建目录进行构建,但是用源码根目录下提供的build.sh脚本进行构建会更简单一点。build.sh脚本会根据要构建的类型创建目标目录,然后为CMake命令创建一个CMAKE_BUILD_TYPE缓存项表示构建类型(Release/Debug/RelWithDebInfo),最后进入创建的目录中用CMake完成构建。

(1)RELEASE构建

如果只希望从外部观察OceanBase的功能和效果,构建时可以采用RELEASE模式,这样构建出的OceanBase可执行程序中不包含调试所需的记号,体积相对也小一些。RELEASE构建采用以下步骤:

1)在源码目录下执行build.sh脚本:

2)进入生成的RELEASE构建目录:

3)开始构建:

其中的N表示并行任务的数量,可根据机器性能调整,建议将N设置为min(核心数×2,内存GB数/2)。

4)查看构建产物:

OceanBase编译之后仅有一个单一的可执行程序observer。

(2)DEBUG构建

如果希望通过调试工具观察和跟踪OceanBase的内部运行过程,则需要用DEBUG构建模式生成带有调试信息的可执行程序。

DEBUG构建和RELEASE构建的步骤基本一致,只需要把传递给build.sh脚本的release选项改成debug即可。

(3)创建RPM包

不管是RELEASE还是DEBUG构建,得到的都是单一的OBServer可执行程序。真正要让构建出的OceanBase运行起来,最便捷的方式是用OceanBase Deployer工具(简称为OBD)将构建成果部署到目标机器上,或者将OBServer文件替换到已部署好的OceanBase集群中去。而OBD的部署工作依赖于rpm包形式的OceanBase,可以利用RPM构建方式来构建OceanBase并且将构建成果打包成rpm包。

RPM构建也和RELEASE构建的步骤基本一致,只需要把传递给build.sh脚本的release选项改成rpm即可。在RPM构建中,build.sh会将CMAKE_BUILD_TYPE缓存项设置为RelWithDebInfo,表示构建带有调试信息的发行版。同时build.sh还会将OB_BUILD_RPM缓存项设置为ON,这样CMake会根据CMakeLists.txt中的规则打包编译好的OBServer可执行程序。

RPM构建方式得到的rpm文件位于build.sh脚本创建的build_rpm子目录中。