「OceanBase 4.1 体验」OceanBase:解读领先的分布式数据库系统,功能与体验全解析

在这里插入图片描述

前言

本文旨在介绍 OceanBase 4.1 版本的特点、更新内容和初体验,帮助读者了解和掌握这个开源分布式关系型数据库管理系统。如果你对大规模数据存储和处理的挑战感兴趣,或者正在寻找一种满足互联网领域高并发、高可靠性和高扩展性要求的数据库解决方案,本文将为你提供有价值的信息和指导。

我们将介绍 OceanBase 的基本概念和与传统数据库的对比,详细探讨 OceanBase 4.1 版本的更新内容,以及引导读者进行初体验。通过本文的阅读,你将对 OceanBase 的特点、更新内容和使用方法有更清晰的了解,能够判断其是否适合你的需求,并开始尝试使用它来处理大规模数据存储和处理的挑战。无论你是开发人员、数据工程师还是对数据库技术感兴趣的读者,本文都将为你提供有益的指导和启示。现在,让我们深入探索OceanBase 4.1版本的魅力吧!

一、关于 【OceanBase 4.1】征文活动(可跳过)

就和 Header 的海报一样,这个文章主要是针对 OceanBase 4.1 征文活动进行的一次上手体验文章,在本文中可能会出现 OceanBase 的简称:OB,此缩写仅代表于本文讲解观点使用,并不代表官方缩写观点。如果有错误或者表达阅读问题,请留言指正。

活动官方链接https://blog.csdn.net/OceanBaseGFBK/article/details/130227040

在这里插入图片描述
活动流程与安排

文章投稿: 4 月 18 日——5 月 22 日
评审阶段: 4 月 19 日——5 月 23 日
专家评优: 5 月 24 日——5 月 30 日
结果公布(开始发放稿酬和奖品): 5 月 31 日

如果您有一天看到本文,并且发现活动已经结束,请关注本文后续文章或者直接访问 OB 官方博客:@OceanBase数据库官方博客 了解相关OB产品活动。

二、OceanBase 产品了解

2.1 初识 OceanBase

差不多两年前左右,OceanBase 在 TPC-C 认证打败 Oracle,开始认识 OceanBase,很遗憾当时并没有对这个国产数据库有过进一步了解,直到前段时间从@几何心凉的一篇文章【OceanBase开发者大会震撼来袭】中再次见到 OB 数据库的消息,进而看到官方发的征文活动,才开始尝试接触 OceanBase。

记得当时还和凉哥聊起在北京的大会,可惜自己不在北京,不然真的很想去参加看一看。

在这里插入图片描述

图片来源于凉哥,图片原链接在上文中

2.2 什么是 OceanBase

OceanBase 是一个开源的、国产的分布式关系型数据库管理系统(RDBMS),由我国的互联网巨头阿里巴巴集团研发。它旨在处理大规模数据存储和处理的挑战,可以满足互联网领域高并发、高可靠性和高扩展性的要求。

传统的关系型数据库管理系统(如MySQL、Oracle)通常面临着数据量急剧增长、请求负载大和数据一致性要求高等问题。OceanBase 通过分布式架构和横向扩展的方式解决了这些问题。

被大家熟知的双11,就是使用 OB 来进行数据库支持,双11数据量可以达到百万级规模,当单服务器发生故障时,OB 可以进行自愈,跨城多机房容灾,数据多副本存储,OB 官方有提到推出了“三地五中心”城市级容灾新标准,最高可达金融 6 级标准(RPO=0,RTO<=8 秒),这个级别的容灾确实已经很高,一般银行或者金融企业,个人的经验中,“两地三中心”,5 级标准就已经够用了。

从摩天轮最新国产数据库流行度来看 OB 现在已经位居第一位。

在这里插入图片描述

2.3 OceanBase 相关链接

这里整理了一下相关 OB 的实用链接,需要可以直接复制链接后访问即可

  • 官网:https://open.oceanbase.com/
  • 官方社区:https://ask.oceanbase.com/
  • C 站官方博客:https://blog.csdn.net/OceanBaseGFBK
  • GitHub 地址:https://github.com/oceanbase/oceanbase
  • 官方文档:https://www.oceanbase.com/docs

2.4 OceanBase 与传统数据库对比有何特别之处

这里根据老师讲解的视频,总结出来的对比表供大家参考,虽然对比详细,有些对比确实相比传统数据库优点非常明显,但是对应用场景以及使用成本的介绍,请自行调查对比,此处因为博主没有做完整的调研和对比,不做表态,此处只做参考。

以OceanBdse为代表的分布式数据库 传统集中式数据库
产品架构 原生的“分布式”数据库,采用业界最严格的 Paxos 分布式一致性协议。基于普通 PC 硬件的设计,不需要高端硬件。 经典的“单点集中式”架构,采用“全共享(Share-Everything)"架构。构建于高端的硬件基础之上,比如 IBM 高端服务器和 EMC 高端存储设备等。
数据可靠性和服务高可用性 以普通PC硬件为基础,利用Paxos分布式一致性协议保证数据可靠性。主节点故障的情况下,Paxos可以保证数据无损(即RPO=0),并且自动选举并恢复服务,服务恢震时间(RTO)在30秒以内。 利用高端硬件设备保证数据可靠性。采用"主从复制",主节点故障的情况下,会有数据损失(RPO>0);不能自动恢震服务,服务恢St时间(RTO)通常以小时为单位计算。
扩展性 数据节点和计算节点均可以在 MPP 架构下实现水平扩展。数据节点和计算节点均没有数量限制,在网络带宽足够的前提下,可以扩充至任意数目。 数据存储只能在单点内实现纵向扩展,最终必然触达单点架构下的容量上限。计算节点通常无法扩展。少数模式下(如 RAC, pureScale)可做计算节点扩展,但多个计算节点之间仍需访问单点共享存储,并且可扩展的计算节点数量有限。
应用场景 支付宝核心、网商银行核心、阿里巴巴的众多业务,以及多家外部商业银行。逐渐迈向传统业务。 集中在企业客户(金融、电信、政企等)的核心系统。无法应付互联网业务场景,应用案例很少。
使用成本 相对较低。基于 PC 硬件的设计降低了硬件费用,软件授权费用和服务费用也有优势。 比较昂贵。需要支付高端基础硬件的费用、高昂的软件授权费用以及产品服务费用。

此处博主归纳总结了对比优缺点,如下图,此对比仅代表博主观点,转载请注明出处。

在这里插入图片描述

2.5 OceanBase 相关概念以及术语

2.5.1 OceanBase 基本概念

从DBA管理员角度与开发人员的角度来理解各个基本概念

在这里插入图片描述
管理员通常是 DBA,会创建一个大的集群从而创建一个大的资源池,这个大的资源池中有多个 Zone,每个 Zone 对应一个数据节点,也就是一个 OB Server,资源池创建完毕后,会授权给租户(或者向管理员申请),租户内会有自己的数据库、表以及分区,每个分组内会有多个副本,这个副本会和 Zone 来对应。

2.5.2 OceanBase 集群、Zone 和 OB Server

这里根据官方课程,对 OceanBase 集群、Zone 和 OB Server 进行一些理解记录

整理个人的理解是:集群是 OceanBase 的整体,由多个 Zone 组成,每个 Zone 包含一组 OB Server 节点,负责处理和存储数据。

几个关键点:

  • 一个集群由多个Zone 组成,给集群内的一批机器打上同一个 tag,则属于同一个 Zone。
  • 不同的 Zone 可以对应不同的城市、一个城市的不同机房、或者一个机房内的不同机架。
  • Zone 个数建议是 >=3,建议奇数。
  • 每个 Zone 均有且只有一份完整的副本;单个 Zone 发生故障不会影响业务。
  • 每台 OB Server 相对独立,有独立计算和存储引擎。

在这里插入图片描述

通过这个位置的讲解,我们可以发现,OceanBase 如果将 Zone 部署在不同位置,可以达到不同级别的容灾,
比如:服务器(Server)级无损容灾、机房(Zone)级无损容灾亦或地区(Region)级无损容灾。

2.5.3 OceanBase 相关术语总结

集群(Cluster):集群是由多个 OceanBase 数据库实例组成的逻辑单元。它是一个分布式数据库系统,由多个物理节点协同工作,共同处理和存储数据。一个 OceanBase 集群可以包含多个 Zone。

Zone:Zone 是 OceanBase 集群中的逻辑划分单元。每个 Zone 都是一个独立的数据存储和计算区域。它可以包含一个或多个 OB Server(OceanBase 服务器节点),用于处理和存储特定的数据。一个集群可以划分为多个 Zone,每个 Zone 可以具有不同的配置和特性。

OB Server:OB Server 是 OceanBase 的服务器节点,也是数据存储和计算的基本单元。每个 OB Server 运行在独立的物理或虚拟机器上,负责处理和存储数据。一个 Zone 可以由多个 OB Server 组成,这些节点之间协同工作以实现数据的分布式存储、查询处理和容错性。

OAT:OceanBase Admin Toolkit,自动化部署工具,会检查物理环境等功能。
OCP:OceanBase Cloud Platform,是一款以OceanBase 为核心的企业级数据库管理平台。 OCP V3.3.0 版本新增了日志白屏查询的功能和参数模板功能。

RS:RootService,是 OceanBase 的总控服务一般会选取一个集群Zone中间的一个 OB Server 作为 RS。

ODP:OceanBase Database Proxy,又称 OBProxy 是 OceanBase 专用的代理服务。ODP 自身就有高可用设计。
Lease 机制:Lease 机制,翻译过来即是租约机制,是一种在分布式系统常用的协议,是维护分布式系统数据一致性的一种常用工具。

2.6 OceanBase 4.1 有哪些更新

在这里插入图片描述
从官方给的更新内容来看,基本从易用与性能兼容两个大分类里对 OB 进行了比较大的升级,个人总结起来的一个脑图如下:

在这里插入图片描述

三、OceanBase 初体验

在这里我们使用的是 OB 的社区版本进行做示例,如果是工作的真实环境,需要使用对应的企业版本。

OceanBase 社区版同样支持 白屏(可视化)部署,也支持黑屏命令行(OBD方式)进行部署,为了节约篇幅,下面使用命令行方式在 Redhat 上进行部署 OceanBase 4.1。

3.1 Linux 上部署安装 OceanBase 4.1

3.1.1 检查所需环境配置

根据现阶段相关资料,部署 OceanBase 需要如下一些必要环境:

  • 2881 和 2882 端口没有被占用
  • 机器可用内存不低于 6 G
  • 机器 CPU 数目不低于 2
  • 机器可用磁盘空间不小于 54 G
  • 机器最大打开文件数不能少于 20000
  1. 分别执行如下命令,检查 CPU 和内存
lscpu
lsmem

在这里插入图片描述

  1. 执行如下命令,检查 端口号
netstat -nplt

在这里插入图片描述

  1. 执行下列命令,检查硬盘空间
df -Th

在这里插入图片描述

  1. 检查最大打开文件数

如果你安装的机器最大打开文件数不足20000个可能会出现如下错误

[ERROR] OBD-1007: (127.0.0.1) open files must not be less than 20000 (Current value: 1024)

解决办法

  1. 1 修改内核参数 file-max
vim /etc/sysctl.conf
# 加入以下内容,重启生效
fs.file-max = 102400
net.nf_conntrack_max = 1024000
net.netfilter.nf_conntrack_max = 1024000
  1. 2 修改 ulimit 的 open file,系统默认的 ulimit 对文件打开数量的限制是 1024
vim /etc/security/limits.conf
# 加入以下配置,重启即可生效
* hard nofile 102400
* soft nofile 102400

3.1.2 下载社区版的 oceanbase-all-in-one 安装包

如果本机可以可以联接外网的情况(在线安装),可以直接使用下列命令直接下载并安装oceanbase-all-in-one:

bash -c "$(curl -s https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/oceanbase-all-in-one/installer.sh)"

在这里插入图片描述

如果本机不可以联接外网的情况(离线安装),先要从 OceanBase 社区下载中心 下载最新的 oceanbase-all-in-one 安装包,现时间点最新版本为:OceanBase V4.1.0。下载完毕后可以使用WinSCP或者Filezilla等工具将离线包传送到服务器中后,使用以下命令解压:

# 解压安装包
[admin@bluetata ~]$ tar -xzvf oceanbase-all-in-one-4.1.0.0-100120230423105040.el7.x86_64.tar.gz
# 进入到bin文件夹
[admin@bluetata ~]$ cd oceanbase-all-in-one/bin/
# 将各个组件的 RPM 包加载到本地源,便于后续通过 obd 安装
[admin@bluetata bin]$ ./install.sh
# 添加环境变量
[admin@bluetata bin]$ source ~/.oceanbase-all-in-one/bin/env.sh

安装完后出现提示信息:

在这里插入图片描述

3.1.3 设置环境变量

[root@bluetata]# source ~/.oceanbase-all-in-one/bin/env.sh

3.1.4 使用 obd 快速部署相关组件

这里使用的是直接部署 demo 环境,在使用如下方式部署的时候,会进行安装5个组件,如下图,如果完全安装成功后,会在最后提示组件的相关信息

在这里插入图片描述

进行快速部署有两种方式:

方式一(个人不推荐),直接使用下列命令进行快速部署

obd demo

注意:obd demo 命令默认在当前家目录下以最小规格部署并启动 OceanBase 数据库及相关组件(包括 ODP、OBAgent、Grafana 和 Prometheus),固定部署名为 demo。
采取直接使用obd demo 命令有一个不好的地方就是,如果你的当前家目录下没有足够大的空间,那么大概率会造成部署失败的情况,在上述环境检查步骤中,博主的机器在/data/下有足够的存储空间,所以本文会采用使用参数的方式进行快速部署 demo。
OceanBase如何更改安装目录呢?如果你在安装中也有这个疑问的时候建议你采取下面这种方式(社区版的 OceanBase 如何更改安装部署的路径):

方式二(推荐),使用如下命令指定快速部署的路径后进行安装

obd demo -c oceanbase-ce,obproxy-ce,obagent,prometheus,grafana --home_path=/data/demo

在这个命令中,除了安装部署了必要的相关组件,还添加了一个参数home_path指定了其部署的位置。

关于obd demo [-c/--components] 更多的参数命令可以参看一下官方的文档:点击这里

在这里插入图片描述

安装成功后的信息如下:

Check before start obproxy ok
Check before start obagent ok
Check before start prometheus ok
Check before start grafana ok
Start observer ok
observer program health check ok
Connect to observer ok
Initialize oceanbase-ce ok
Start obproxy ok
obproxy program health check ok
Connect to obproxy ok
Initialize obproxy-ce ok
Start obagent ok
obagent program health check ok
Connect to Obagent ok
Start promethues ok
prometheus program health check ok
Connect to Prometheus ok
Initialize prometheus ok
Start grafana ok
grafana program health check ok
Connect to grafana ok
Initialize grafana ok
Wait for observer init ok
+---------------------------------------------+
|                   observer                  |
+-----------+---------+------+-------+--------+
| ip        | version | port | zone  | status |
+-----------+---------+------+-------+--------+
| 127.0.0.1 | 4.1.0.0 | 2881 | zone1 | ACTIVE |
+-----------+---------+------+-------+--------+
obclient -h127.0.0.1 -P2881 -uroot -Doceanbase -A

+---------------------------------------------+
|                   obproxy                   |
+-----------+------+-----------------+--------+
| ip        | port | prometheus_port | status |
+-----------+------+-----------------+--------+
| 127.0.0.1 | 2883 | 2884            | active |
+-----------+------+-----------------+--------+
obclient -h127.0.0.1 -P2883 -uroot -Doceanbase -A
+-------------------------------------------------------------+
|                           obagent                           |
+----------+--------------------+--------------------+--------+
| ip       | mgragent_http_port | monagent_http_port | status |
+----------+--------------------+--------------------+--------+
| 10.5.1.4 | 8089               | 8088               | active |
+----------+--------------------+--------------------+--------+
+-------------------------------------------------+
|                    prometheus                   |
+----------------------+------+----------+--------+
| url                  | user | password | status |
+----------------------+------+----------+--------+
| http://10.5.1.4:9090 |      |          | active |
+----------------------+------+----------+--------+
+---------------------------------------------------------------+
|                            grafana                            |
+----------------------------------+-------+-----------+--------+
| url                              | user  | password  | status |
+----------------------------------+-------+-----------+--------+
| http://10.5.1.4:3000/d/oceanbase | admin | oceanbase | active |
+----------------------------------+-------+-----------+--------+
demo running
Trace ID: ab627330-f4f6-11ed-94ed-000d3a816efe
If you want to view detailed obd logs, please run: obd display-trace ab627330-f4f6-11ed-94ed-000d3a816efe

在这里插入图片描述

注意如果你在安装过程中出现任何错误,都需要先行解决,解决后,再次执行加载环境变量,之后再执行快速部署命令。

3.2 验证连接

在这里插入图片描述

OB 支持多种客户端工具,经常被大家提及的或者会听到大家讲的基本会出现两种,一种是黑屏工具,也就是命令行工具,另外一种是图形化界面工具,也就是大家说的白屏工具。部署安装 OB 的时候也可以使用白屏工具,其功能也很强大,还提供监控诊断等服务,由于篇幅问题以及不是本文重点,本文不过多介绍

下面是使用黑屏工具 OBClient 连接我们之前部署的 OceanBase,进行测试:

在这里插入图片描述

四、OceanBase 社区版与企业版区别(06/04/2023 追加更新)

因为有小伙伴在询问这个事情,我结合官方的以及自身经验来总结一下,有需要的同学可以参考学习。

OceanBase企业版、社区版和云服务版本间关系与定位:

  1. OceanBase企业版提供全量的产品与服务能力,包括Oracle高级兼容、高级安全能力、图形化的开发运维工具、企业级技术支持和运维服务能力。(这一条中可以看出,社区版是不兼容Oracle语法兼容的,这个在本文后面官方链接里也能查到)
  2. OceanBase云服务版与企业版产品能力相同,提供全量的产品能力,区别在于产品形态服务保障方式
  3. OceanBase社区版本提供具有技术竞争力的数据库内核、分布式组件和接口驱动,聚焦构建OceanBase内核技术生态。社区版不提供商业化和产品化能力、不提供企业级技术支持和运维服务能力,代码同源共基线社区版产品能力为企业版子集
  4. OceanBase产品的所有功能特性及接口,除了社区版本和企业版有差异的范围特性,社区版本在集群规模、扩展能力、故障恢复、数据规模、对象支持数量等与企业版能力相同,功能、语法、接口、配置等与企业版兼容;随着社区的持续发展,社区版不保证和企业版的数据文件、协议等二进制完全兼容性,若需要从社区版本向企业版升级,推荐使用导入导出或升级工具进行升级处理。

在这里插入图片描述

和其他数据库或者软件产品类似,OB 社区版一样的免费,企业版肯定是收费,但是无奈我在官网并没有找到定价,云服务版本按需付费,或者租用,这个在阿里云中很容易找到。

关于社区版与企业版的细节区分,可以参看下面这两个官方链接:

  • https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001687854
  • https://ask.oceanbase.com/t/topic/31400062/2

文末总结

通过本文的阅读,我们对 OceanBase 4.1 版本有了更全面的了解。我们首先了解了 OceanBase 的基本概念、与传统数据库的区别,并学习了一些相关术语。随后,我们深入探讨了 OceanBase 4.1 版本的更新内容,涵盖了易用性、兼容性、性能优化等方面的改进。最后,我们进行了初体验,学习了如何在 Linux 上部署安装 OceanBase 4.1 并进行连接验证。

综合而言,OceanBase 4.1 版本在提供更易用、更友好的用户体验方面做出了改进,并通过兼容性、性能优化等方面的升级使得OceanBase 更加强大。通过本文的介绍和实践,希望有兴趣的小伙伴可以开始探索和使用 OceanBase,并享受其带来的高性能、高可靠性和灵活扩展的优势。也希望 OceanBase 这个国产数据库能够持续101年。

[ 本文作者 ]   bluetata
[ 原文链接 ]   https://bluetata.blog.csdn.net/article/details/130729364
[ 最后更新 ]   05/18/2023 20:13
[ 版权声明 ]   如果您在非 CSDN 网站内看到这一行,
说明网络爬虫可能在本人还没有完整发布的时候就抓走了我的文章,
可能导致内容不完整,请去上述的原文链接查看原文。

猜你喜欢

转载自blog.csdn.net/dietime1943/article/details/130729364