OceanBase是蚂蚁金服自研的分布式关系数据库,2019年国庆期间以6088万tpmC值的成绩,超越Oracle荣登TPC-C基准测试性能榜首。最近因为一些原因赶了趟时髦,体验了一把OceanBase,这年头不搞个什么云,大数据,人工智能,…都不好意思说自己是搞IT的,不会点python,都不敢说自己会编程…
OceanBase(下文简称OB)的安装部署还是很简单的,主要的难点是OB对硬件要求是很高的(特别是内存方面, 如果没有闲置的机器, 这个是真的难),如果你只有一台8G,16G的机器,想把集群跑起来,那劝你还是放弃吧,OB不是那种低端的数据库… 安装部署另一个难点是缺少文档, 官 上的文档太少了, 过于简单(相对于Oracle/MySQL接近于简陋), 虽然步骤简单, 但如果 错, 很难找到解决方法.
部署模式使用的是三副本部署, 这也是最小规模的OceanBase集群, 因为没有足够的硬件设备, 我是部署在KVM虚拟机上的, 每个zone一个虚拟机, 操作系统需要的是RHEL/CentOS 7+, RHEL/CentOS 6.X版本是跑不起来的。
1. 准备安装环境
基本上根据官方文档<<OceanBase试用版安装指南>>做就行了, 这里有两个要点:
(1). 运行OB Server的虚拟机的内存不能太小, 推荐64G以上, 如果像我一样只是想尝个鲜, 建议每个虚拟机的内存也不要不低于30G, 要不在bootstrap的时候极可能过不了。如果没这么大的内存也不用太担心, 虚拟机的内存时可以”超分”的,在宿主机看来, 虚拟机只是个进程,KVM分配的内存(对应VSZ), 而不是实际使用的物理内存(RSS)可以, 所以宿主机最好配置一个大的交换区, 虽然可能性能不好,但至少可以让你跑起来, 像我的环境, 一台淘汰的System x3650 M3, 12核, 24线程, 64G的物理内存。3个虚拟机,每个虚拟机设置12CPU, 50G内存。
(2). 必须配置NTP, 且必须确保NTP工作正常(每个节点时间是同步的).
1.1. 创建KVM虚拟机
可以先做好一个虚拟机, 后面通过拷贝导入(–import)就可以快速搭建好剩下的两台虚拟机, 这里每个虚拟机配置了两块 卡:
一个对应桥接 卡, 用于对外通讯(192.168.203.);
一个对应一个虚拟 络(isolated network),用于OB Server之间的内部通讯(192.168.55.)。
创建虚拟机参考:
创建3个虚拟机,配置主机名和IP地址:
1.2. 安装依赖软件包
根据oceanbase安装需要的软件包,建议配置 络配个yum仓库, 如果仅安装oceanbase和obproxy, 不需要安装JDK 8+(mariadb应该也是不用的,但会用到客户端,如果不安装obclient)。
1.3. 创建oceanbase用户
1.4. 配置pam_limits
注意: Linux用户登录时默认是不加载pam_limits.so, limits配置文件是不会加载的。
根据oceanbase文档要求创建资源限制配置
登录admin用户检查是否生效(如果还没生效, 很可能是因为你是复制粘贴 页的, 里面的字符集有问题, 可以通过journalctl检查下是否有 错)。
学习环境可以不开core文件限制, 生成基本也没用, 还占空间,除非淘宝的工程师。因为observer编译没带调试信息(应该是和程序分开了), gdb看到调用堆栈都是没什么有用信息。
1.5. 配置内核参数
1.6. 修改内核异步I/O限制
1.7 关闭防火墙和SELinux
(1). 关闭防火墙
(2). 关闭SELinux
1.8. NTP时钟同步
(1). 服务器端配置
使用KVM宿主机作为时钟源(192.168.55.1)
(2). 客户端配置
为每个虚拟机配置:
注意:配置完成启动后可能需要5-10分钟后才能成功连接和同步。在执行bootstrap之前一定要先确保时钟已经同步(synchronised)。
至此, 已经完成环境准备。
2. 安装/配置OB
2.1. 安装启动
下载的试用版提供的OB安装包是rpm格式,安装非常简单,上传,直接安装即可。
OB运行需要一些目录结构, 按照官方文档来就好,OB第一次启动需要提供参数。后续集群的自举和初始化会可能反复多次(反正我失败了好几次),最好把这些操作做成脚本,提高效率。
为保持文章简洁, 所有用到的脚本附在最后,供参考。
2.2. 初始化执行
每个OB服务器执行init_ob.sh.
等待片刻, 等待每个节点都启动完成,才可以执行下一步。
2.3. 集群自举和初始化
这个步骤类似于Oracle RAC安装过程执行root.sh和之后的dbca建库,OB这步骤为bootstrap, 这步过了, 集群即可用了。
bootstrap只需要在一个OB服务器上执行, 只能执行一次, 如果bootstrap失败,根据 错调整,重复2.1 – 2.2 步骤,直到成功。
我这里做成了脚本bootstrap.sh, 执行前需要确认NTP是同步的, 每个节点都已正常启动。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!