基本概念介绍

OceanBase基础概念-LMLPHP

集群、Zone和OB Server

OceanBase基础概念-LMLPHP

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

RootService总控服务

OceanBase基础概念-LMLPHP
OceanBase的“总控服务”

  • OceanBase的核心模块,管理整个集群
  • 集群内置服务,无需额外软硬件部署
  • 自带高可用能力,无单点故障风险

核心功能

  • 系统初始化(BootStrap) ;系统元数据管理
  • 资源分配及调度:分区及副本管理、动态负载均衡、扩容/缩容等]
  • 全局DDL;集群数据合并

多租户机制,资源隔离,数据隔离

OceanBase基础概念-LMLPHP
租户简介

  • 租户类似传统数据库的实例,它由系统租户根据需要(比如说为了某个业务的需要)创建出来。在创建租户的时候,除了指定租户名字以外,最重要的是指定它占用的资源情况
  • 将数据库集群按指定规格(CPU、内存、存储、TPS、QPS)划分成多个资源池,分配给不同的租户,租户之间资源隔离
  • 一般一个应用占用一个租户

租户特性

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

资源池

OceanBase基础概念-LMLPHP

Unit

  • 每个UNIT描述位于一个Server上的一组计算和存储资源,每个Unit只能属于一个租户
  • 每个Unit可以视为一个轻量级虚拟机,包括若干CPU资源,内存资源,磁盘资源等
    租户资源池
  • 一个租户拥有若干个资源池。这些资源池的集合描述该租户所能使用的所有资源
  • 一个租户在同一个Server上最多有一个UNIT。实际上,从概念上讲,副本是存储在UNIT之中,UNIT是副本的容器

注意:OceanBase可以为不同类型的应用分配不同类型和不同数量的Unit,满足业务不同的需求。资源并不是静态的,可以随着业务的发展不断调整(调高或者调低)

创建租户

  1. 创建“资源单元规格”(仅仅是规格定义,不实际分配资源)

    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
    	;	
    
  2. 创建资源池(会实际创建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. 创建租户,将资源池赋给一个新的租户

    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
    • ob_compatibility_mode:需要指定租户类型为MySQL还是Oracle

检查集群状态

  • 查看集群中的整体资源分配情况:all_virtual_server_stat;
    OceanBase基础概念-LMLPHP
  • 查看系统中定义的resource unit规格:select * from __all_unit_config;
    OceanBase基础概念-LMLPHP
  • 看系统中已经分配的resource unit:select *from_all_unit;
    OceanBase基础概念-LMLPHP

查看系统日志

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 = <count>
    日志级别
  • syslog_level = [DEBUG,TRACE,INFO,WARN,USER_ERR,ERROR]

  1. 如果一个OceanBase集群有3个Zone,每个Zone有5台OB Serer。那么一个分区最多有(3)份全能型副本
  2. 如果一个集群有3个Zone,每个Zone有5台 OB Server。一个租户对应的资源池的Unit Num=3,最终该租户有(9)个资源单元
01-20 12:24