一、前言

   蚂蚁集团自主研发的分布式数据库 OceanBase 3.0 发布,同时,OceanBase 宣布正式开源,并成立 OceanBase 开源社区,社区官网同步上线,300 万行核心代码向社区开放。因为最近也是在学习ob的阶段,所以打算写一个oceanbase的系列,权当是笔记了。内容在官网基本都能找到,想系统的学习ob的,请移步官网

oceanbase导入mysql脚本 oceanbase数据库使用_database

OceanBase数据库产品家族主要产品:

a) OceanBase数据库内核:通过Paxos协议保证了高可用性,可以兼容MySQL和Oracle,同时兼容HTAP,即它既可以用于OLTP业务,也可以用于OLAP业务。

b) OceanBase给运维者提供OCP工具平台,图形化的界面,帮助管理员更好的完成日常的集群管理、租户管理、监控警告、性能诊断等任务。

c)  OceanBase给开发者提供ODC工具平台,图形化的界面,帮助开发者更好的完成数据库连接管理、数据库对象管理、存储过程开发测试、导入导出等任务。

d)  OceanBase提供了OMS数据库迁移平台,既可以从数据库订阅数据,也可以从异构的数据库中(如DB2、Oracle、MySQL)进行数据迁移,回滚等。

 

二、名词解释

oceanbase导入mysql脚本 oceanbase数据库使用_数据库_02

 1. 集群、ZoneOB Server

(1)一个集群有多个Zone组成,每一份数据在各个Zone上都仅有一个副本。

物理上讲:不同的Zone可以对应不同的城市;

逻辑上讲:Zone就是给集群内的一批机器打上同一个tag,具有同样Tag的服务器则属于同一Zone;

(2)由于OceanBase采用Paxos协议,多数派要达到一致,Zone的个数一般大于3台;

当1个Zone故障后,其余两个Zone内的副本仍可构成多数派,不影响业务。Zone个数>=3,最好为奇数,决定了OBserver的个数。

(3)OB Server相对独立,自身具备计算引擎和存储引擎。

oceanbase导入mysql脚本 oceanbase数据库使用_数据库_03

 

4.资源池(Resource Pool)

    一个租户拥有若干个资源池,这些资源池的集合描述了这个租户所能使用的所有资源。一个资源池由具有相同资源规格(Unit Config)的若干个 UNIT(资源单元)组成。一个资源池只能属于一个租户。每个 UNIT 描述了位于一个 Server 上的一组计算和存储资源,可以视为一个轻量级虚拟机,包括若干 CPU 资源,内存资源,磁盘资源等。

一个租户在同一个 Server 上最多有一个 UNIT。实际上,从概念上讲,副本是存储在 UNIT 之中,UNIT 是副本的容器。

5.OBProxy

应用访问数据库使用兼容 MySQL/Oracle 的客户端来访问 OceanBase, OceanBase 以服务的形式提供给应用访问。OBProxy 就是满足此种需求,方便应用使用兼容 MySQL/Oracle 的客户端访问 OceanBase,它接收客户端的应用请求,并转发给 OBServer,然后 OBServer 将数据返回给 OBProxy, OBProxy 将数据转发给应用客户端。

6.RS(RootServer)

(1)OceanBase的核心模块,管理整个集群。

(2)集群内置服务,无需额外软硬件部署。

(3)自带高可用能力,无单点故障风险

(4)部署:在Zone中选择一台OBserver作为RootServer,以此降低成本。

(5)核心功能:

       a)  系统初始化(BootStrap);系统元数据管理。

       b)资源分配及调度:分区及副本管理、动态负载均衡、扩容\缩容。

7.Multi-Paxos

一种执行多 Paxos 实例的优化协议,OceanBase 用 Multi-Paxos 协议实现 Commit Log 的多机持久化。

8.分布式执行(Distributed Execution)

执行计划在多台数据库服务器上执行,每台服务器完成其中的一部分工作。

9.ODC

OceanBase 开发者中心(OceanBase Developer Center,ODC)是为 OceanBase 数据库量身打造的企业级数据库开发平台。ODC 支持连接 OceanBase 中 MySQL 和 Oracle 模式下的数据库,同时为数据库开发者提供了数据库日常开发操作、WebSQL、SQL 诊断、会话管理和数据导入导出等功能。

10.OCP

OceanBase 云平台(OceanBase Cloud Platform,OCP)伴随 OceanBase 数据库而生,是一款以 OceanBase 为核心的企业级数据库管理平台。不仅提供对 OceanBase 集群和租户等组件的全生命周期管理服务,同时也对 OceanBase 相关的资源(主机、网络和软件包等)提供管理服务,让您能够更加高效地管理 OceanBase 集群,降低企业的 IT 运维成本。

11.OMS

OceanBase 迁移服务(OceanBase Migration Service,OMS)是 OceanBase 提供的一种支持同构或异构 RDBMS 与 OceanBase 之间进行数据交互的服务,它提供了数据的在线迁移和实时增量同步的数据复制能力。

三、OBServer架构

     每个OBServer进程包含两个基本模块,一是SQL引擎,负责SQL解析、执行计划生成、SQL运算等;二是存储引擎,负责存取数据、合并冻结等。这两项功能实际上Oracle和MySQL都有,只是很少这么提。在OceanBase集群里,还需要一个总控服务rootservice,负责集群级别的一些任务调度。总控服务只需要存在某个节点上,所以是可选的。

oceanbase导入mysql脚本 oceanbase数据库使用_数据库_04

Tips:

1.OBServer进程启动时,默认会将所在节点(即机器)的绝大部分资源据为己有。比如说内存,会占有80%左右,数据目录的空间,会占有90%左右,CPU,会保留2个给OS,其他全部声明为OB的。当然我们都知道,除了OS自身,谁也不能独占CPU。OBServer进程本质上也只是OS里的一个进程。所以对CPU的占有是声明式的。当然这里的比例都是参数指定的,保存在参数文件里,可以在启动命令行里修改参数。

2.OBServer数据目录会有一个数据文件,默认大小是数据目录的90%。这个文件承载了这个节点所有的OB数据。所以OB里没有表空间文件、或者每个表一个文件这种提法。不过OB有事务日志文件,叫Commit Log,简称clog。还有Index log, Storage Log等。OBServer还有运行日志文件,方便排查问题。目前日志信息量非常大,主要是面向内核开发的。