开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第8天,点击查看活动详情
第二章:OceanBase产品家族及基础概念
3. 基础概念
3.1 OceanBase基本概念介绍
从系统管理视角和应用开发视角,需要理解OceanBase的集群、Zone、OB Server、资源池、租户、分区等概念。
3.2 集群、Zone和OB Server
• 一个集群由多个Zone组成,给集群内的一批机器打上同一个tag,则属于同一个Zone • 不同的Zone可以对应不同城市、一个城市的不同机房、或者一个机房的不同机架 • Zone个数>=3,建议是奇数 • 每个zone均有且只有一份完整的副本;单Zone的故障不影响业务 • 每台OB Server相对独立,有独立计算和存储引擎
3.3 RootService总控服务(RS)
3.3.1 OceanBase的“总控服务”
• OceanBase的核心模块,管理整个集群 • 集群内置服务,无需额外软硬件部署 • 自带高可用能力,无单点故障风险
3.3.2 核心功能
• 系统初始化(BootStrap) ;系统元数据管理 • 资源分配及调度:分区及副本管理、动态负载均衡、扩容/缩容等 • 全局DDL;集群数据合并
3.4 多租户机制,资源隔离,数据隔离
3.4.1 租户简介
• 将数据库集群按指定规格(CPU、内存、存储、TPS、QPS)划分成多个资源池,分配给不同的租户,租户之间资源隔离 • 一般一个应用占用一个租户
3.4.2 租户特性
• 租户类似传统数据库的实例,它由系统租户根据需要(比如说为了某个业务的需要)创建出来。在创建租户的时候,除了指定租户名字以外,最重要的是指定它占用的资源情况。租户具有如下特性:
- 可以创建自己的用户(不同的用户名和密码)
- 可以创建数据库(database)、表(table)等所有客体对象
- 有自己独立的information_schema等系统数据库
- 有自己独立的系统变量
- 数据库实例所具备的其他特性
3.5 每个租户拥有若干资源池(Resource Pool)
OceanBase可以为不同类型的应用分配不同类型和不同数量的Unit,满足业务不同的需求。资源并不是静态的,可以随着业务的发展不断调整(调高或者调低)
3.5.1 Unit
- 每个UNIT描述了位于一个Server上的一组计算和存储资源,每个Unit只能属于一个租户
- 每个Unit可以视为一个轻量级虚拟机,包括若干CPU资源,内存资源,磁盘资源等
3.5.2 租户资源池
- 一个租户拥有若干个资源池。这些资源池的集合描述了这个租户所能使用的所有资源
- 一个租户在同一个Server上最多有一个UNIT。实际上,从概念上讲,副本是存储在UNIT之中,UNIT是副本的容器
3.6 创建租户
3.6.1 创建租户的基本过程(也可以使用OCP操作)
OCP也可以更方便的创建租户,为了更详细的讲解创建过程,以命令行方式讲解: • 步骤一、创建“资源单元规格”,create resource unit命令,指定资源单元的规格; • 步骤二、创建“资源池”,create resource pool命令,根据资源单元规格的定义创建资源单元,并赋给一个新的资源池; • 步骤三、创建租户,create tenant命令,将资源池赋给一个新的租户;
www.oceanbase.com/docs/oceanb…
3.6.2 创建资源单元(仅仅是规格定义,不实际分配资源)
CREATE RESOURCE UNIT unit1
max_cpu = 4,
max_memory = 10737418240, -- 10GB
min_memory = 10737418240, -- 10GB
max_iops = 1000,
min_iops = 128,
max_session_num = 300,
max_disk_size = 21474836480 -- 20GB
;
3.6.3 创建资源池(会实际创建unit,按规格定义分配资源)
CREATE RESOURCE POOL pool1
UNIT = 'unit1',
UNIT_NUM = 1,
ZONE_LIST = ('zone1', 'zone2', 'zone3')
;
• 每个resource pool在每个OB Server上只能有一个resource unit;如果unit_num大于1,每个zone内都必须有和unit_num对应数目的机器 • zone List一般与zone个数保持一致 • 如果在某个zone内找不到有足够剩余资源的机器来创建resource unit,资源池会创建失败
3.6.4 创建租户(将资源池分配给对应的租户)
CREATE TENANT mysql_tenant
RESOURCE_POOL_LIST = ('pool1'),
primary_zone = 'zone1,zone2,zone3'
set ob_tcp_invited_nodes = '%', ob_compatibility_mode = 'mysql',
recyclebin = off, ob_timestamp_service = 'GTS’
;
• Primary Zone:指定主副本分配到Zone内的优先级,逗号两侧优先级相同,分号左侧优先级高于右侧。比如zone1,zone2;zone3(后面章节再重点介绍) • 需要指定租户类型为MySQL还是Oracle
3.7 检查集群状态
• 查看集群中的整体资源分配情况:__all_virtual_server_stat;
• 查看系统中定义的resource unit规格:select * from __all_unit_config;
• 查看系统中已经分配的resource unit: select * from __all_unit;
3.8 查看系统日志
OceanBase日志文件
OB Server 日志(/home/admin/oceanbase/log目录) observer.log:observer运行时的日志文件 rootservice.log:observer上RootServer的日志文件 election.log:observer上选举模块的日志文件 控制OB Server日志文件个数 为了避免硬盘被日志填满,可以开启日志循环 enable_syslog_recycle = True; max_syslog_file_count = 日志级别 syslog_level = [DEBUG,TRACE,INFO,WARN,USER_ERR,ERROR]
3.9 小结
本章节重点介绍了OceanBase产品家族及一些基础概念(集群、Zone、OB Server、资源池、租户等) • OceanBase产品家族主要由数据库内核、OCP云管理平台、ODC开发者中心以及OMS迁移服务工具组成 • OceanBase集群由多个Zone组成,每个Zone有多台PC服务器组成。分区有多个副本,每个Zone存储一份且只存储一份副本 • 租户类似传统数据库的实例,每个租户有独立的资源,可以创建自己的用户、数据库(database)、表(table)等所有客体对象 • 创建租户时需要指定该租户的资源规格(服务器分配多大的资源单元给租户使用)、资源单元的数量(Zone内有几台服务器给该租户分配资源单元)、以及兼容模式(MySQL还是Oracle) • 租户的资源不是恒定不变的,是可以动态调整的(如调大资源规格,或者调整资源单元的数量)