OceanBase产品家族及基础概念、集群、Zone和OB Server、RootService总控服务(RS)、多租户机制,资源隔离,数据隔离、创建租户、每个

1,410 阅读5分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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 租户特性

• 租户类似传统数据库的实例,它由系统租户根据需要(比如说为了某个业务的需要)创建出来。在创建租户的时候,除了指定租户名字以外,最重要的是指定它占用的资源情况。租户具有如下特性:

  1. 可以创建自己的用户(不同的用户名和密码)
  2. 可以创建数据库(database)、表(table)等所有客体对象
  3. 有自己独立的information_schema等系统数据库
  4. 有自己独立的系统变量
  5. 数据库实例所具备的其他特性

3.5 每个租户拥有若干资源池(Resource Pool)

在这里插入图片描述 OceanBase可以为不同类型的应用分配不同类型和不同数量的Unit,满足业务不同的需求。资源并不是静态的,可以随着业务的发展不断调整(调高或者调低)

3.5.1 Unit

  1. 每个UNIT描述了位于一个Server上的一组计算和存储资源,每个Unit只能属于一个租户
  2. 每个Unit可以视为一个轻量级虚拟机,包括若干CPU资源,内存资源,磁盘资源等

3.5.2 租户资源池

  1. 一个租户拥有若干个资源池。这些资源池的集合描述了这个租户所能使用的所有资源
  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) • 租户的资源不是恒定不变的,是可以动态调整的(如调大资源规格,或者调整资源单元的数量)