![OceanBase数据库源码解析](https://wfqqreader-1252317822.image.myqcloud.com/cover/263/47684263/b_47684263.jpg)
1.4.3 部署OceanBase
部署OceanBase最方便的方式是使用OceanBase Deployer工具。OBD[1]是OceanBase系列开源软件的通用部署工具,它提供了对于包括OceanBase在内的多种软件的部署、管理功能。
(1)安装OBD
OBD可以使用yum包管理器安装或者自行编译安装。
1)用yum安装OBD。
使用yum包管理器安装OBD时,首先要添加OceanBase的官方yum仓库[2]:
![](https://epubservercos.yuewen.com/8937AF/27086800202784606/epubprivate/OEBPS/Images/19_01.jpg?sign=1738914658-aqXivBaARsAsw1leli3MWYz5Ii2Jilzi-0-d68eab647cad6bb573dbc5f62b58c6b3)
配置好官方yum仓库之后,直接利用yum安装ob-deploy包即可得到OBD。
在使用OBD进行软件部署、管理之前,需要先执行下面的命令引用OBD的一些设置:
![](https://epubservercos.yuewen.com/8937AF/27086800202784606/epubprivate/OEBPS/Images/19_02.jpg?sign=1738914658-tpPUXrPUHDcUITgwbzsAf0orexvrc1l9-0-10ae53ecc98f20657af59b3025d865cd)
2)从源码编译OBD。
在用源码编译OBD之前,需要确保安装有以下软件包:
·gcc
·wget
·python-devel
·openssl-devel
·xz-devel
·mysql-devel
如果系统中安装的是Python 2.7,则使用以下命令安装:
![](https://epubservercos.yuewen.com/8937AF/27086800202784606/epubprivate/OEBPS/Images/19_03.jpg?sign=1738914658-DzN9JHPQbJKXYV21i37Q4E7zPL3KUTDa-0-2781d159f0fa6871c74e6bdedac7e933)
如果希望使用Python 3.8,则首先在Python 2.7环境下执行以下命令:
![](https://epubservercos.yuewen.com/8937AF/27086800202784606/epubprivate/OEBPS/Images/19_04.jpg?sign=1738914658-DnBiJJhcpaPvWZpl1mI4nNZvteniBvlO-0-7791e31afeb00f8d0a5929de4d31d25e)
然后在Python3.8环境执行以下命令:
![](https://epubservercos.yuewen.com/8937AF/27086800202784606/epubprivate/OEBPS/Images/19_05.jpg?sign=1738914658-GtV0ogFUq6gGEuzswI2lRQKPeBPCDeAP-0-49974ff88e7b3ea00ee0e9195b0beaff)
安装完成后,在使用OBD之前仍然需要执行obd.sh脚本来引入OBD的设置。
(2)用OBD部署和管理OceanBase
用OBD进行OceanBase部署的命令如下:
![](https://epubservercos.yuewen.com/8937AF/27086800202784606/epubprivate/OEBPS/Images/20_01.jpg?sign=1738914658-871pcZ4mVqc7e24CHPzd3oeL0kpyR34Q-0-bffa97698fcd37e509e72088523e5ba5)
这个命令会以deploy_name为名称部署一个OceanBase集群,集群将采用deploy_config_path指定的文件中的配置信息。一个简单的集群配置文件如代码1.1所示。
代码1.1 集群配置文件
![](https://epubservercos.yuewen.com/8937AF/27086800202784606/epubprivate/OEBPS/Images/20_02.jpg?sign=1738914658-js3JIaj4xr0ZVSKy6Go0ng7jY2ijLX5H-0-daaffad574185614c5d557c746c13872)
OBD默认会从OceanBase的官方yum仓库下载安装要部署的软件,然后根据配置文件的要求对其进行各类初始化。
部署完成后使用OBD的cluster start选项启动OceanBase集群:
![](https://epubservercos.yuewen.com/8937AF/27086800202784606/epubprivate/OEBPS/Images/20_03.jpg?sign=1738914658-ckYB6VkHkTYyyK95nEYwihdU0ug85s5v-0-3d24ead7fce2cc26520ccf03bac4cd5a)
除了deploy选项,obd命令可以通过组合以下选项完成对OceanBase等软件的各类管理动作:
1)cluster:对于OceanBase集群的操作。
①deploy:部署一个集群。
②destroy:销毁一个已部署的集群。
③display:显示一个集群的信息。
④edit-config:编辑一个集群的配置。
⑤list:列出所有已部署的集群。
⑥redeploy:重新部署一个已经启动的集群。
⑦reload:让已经启动的集群重新装载配置。
⑧restart/start/stop:重启/启动/停止一个集群。
⑨upgrade:升级一个集群。
2)mirror:对OBD所能部署的软件仓库的操作,OBD进行部署时会从软件仓库下载并安装所需软件。
①clone:从一个仓库或者rpm文件克隆一个本地镜像。
②create:利用本地二进制文件创建一个本地镜像。
③list:列出所有本地镜像。
④update:更新远程镜像信息。
3)test:对已部署的软件镜像测试。
mysqltest:对一个部署运行mysqltest。
4)update:更新OBD本身。
(3)用OBD部署自行编译的OceanBase
OBD默认会从OceanBase的官方yum仓库下载安装要部署的软件,如果需要从自行编译的OceanBase部署集群,则需要先用OBD从编译生成的OceanBase建立一个本地镜像。
有两种办法创建OBD的本地仓库:
1)利用编译好的二进制文件创建镜像仓库。
首先在RELEASE或DEBUG构建模式的目标目录中执行make install,这会将编译好的二进制文件安装在默认目录/usr/local中。
执行以下命令从/usr/local中抽取二进制文件创建本地镜像仓库:
![](https://epubservercos.yuewen.com/8937AF/27086800202784606/epubprivate/OEBPS/Images/21_01.jpg?sign=1738914658-PKKiX8pz3npPB9g6PbybkYiYe7ydLv92-0-cd66caf7f19a01e906b19a2050907d73)
其中ver、repo_tag分别代表可以自定义的版本和标签,但repo_name中的仓库名字需要符合OBD所支持的软件之一,否则会报告“找不到合适插件”[3]的错误。对于OceanBase来说,repo_name用“oceanbase-ce”最为合适。
以这种方式创建的本地镜像仓库,无法使用obd mirror list local命令查看其详细信息,但在没有配置远程仓库的情况下会从本地镜像仓库提取软件进行部署。
如果想要确认本地镜像仓库是否创建成功,可以检查当前用户主目录下.obd/repository子目录中是否有名为repo_tag的目录。
2)利用生成的rpm文件克隆镜像仓库。
在使用RPM模式构建OceanBase之后,执行以下命令根据生成的rpm文件克隆一个本地镜像仓库:
![](https://epubservercos.yuewen.com/8937AF/27086800202784606/epubprivate/OEBPS/Images/22_01.jpg?sign=1738914658-AeNK7ZQLqlHuT56neEo7P70fGNT0tQet-0-fc66e1f3eb743a17b909eaaecd3c354a)
其中rpm_file_path是rpm文件的路径。
之后可以使用obd mirror list local命令来查看克隆得到的本地镜像仓库,命令的效果如图1.2所示。
![](https://epubservercos.yuewen.com/8937AF/27086800202784606/epubprivate/OEBPS/Images/22_02.jpg?sign=1738914658-XKXeyQ3uZSX5UkN8fkxIIhsmgDEHN7OH-0-21778b66dbc1ee848f22b9a1d6ea2afe)
图1.2 本地镜像仓库列表
由于OBD默认是优先从远程仓库下载安装软件,因此在创建了本地仓库之后,还需要在OBD管理的仓库中删除远程仓库的信息,这样OBD才会退而求其次地采用本地仓库进行部署。远程仓库的信息保存在当前用户根目录下的.obd/mirror/remote/OceanBase.repo文件中,可以将该文件直接删除。
此后就可以使用OBD的mirror deploy选项来部署新的OceanBase集群了。