基本概念介绍
集群、Zone和OB Server
- 一个集群由多个Zone组成,给集群内的一批机器打上同一个tag,则属于同一个Zone
- 不同的Zone可以对应不同城市、一个城市的不同机房、或者一个机房的不同机架
- Zone个数>=3,建议是奇数
- 每个zone均有且只有一份完整的副本;单Zone的故障不影响业务
- 每台OBServer相对独立,有独立计算和存储引擎
RootService总控服务
OceanBase的“总控服务”
- OceanBase的核心模块,管理整个集群
- 集群内置服务,无需额外软硬件部署
- 自带高可用能力,无单点故障风险
核心功能
- 系统初始化(BootStrap) ;系统元数据管理
- 资源分配及调度:分区及副本管理、动态负载均衡、扩容/缩容等]
- 全局DDL;集群数据合并
多租户机制,资源隔离,数据隔离
租户简介
- 租户类似传统数据库的实例,它由系统租户根据需要(比如说为了某个业务的需要)创建出来。在创建租户的时候,除了指定租户名字以外,最重要的是指定它占用的资源情况
- 将数据库集群按指定规格(CPU、内存、存储、TPS、QPS)划分成多个资源池,分配给不同的租户,租户之间资源隔离
- 一般一个应用占用一个租户
租户特性
- 可以创建自己的用户(不同的用户名和密码)
- 可以创建数据库(database)、表(table)等所有客体对象
- 有自己独立的information_schema等系统数据库
- 有自己独立的系统变量
- 数据库实例所具备的其他特性
资源池
Unit
- 每个UNIT描述位于一个Server上的一组计算和存储资源,每个Unit只能属于一个租户
- 每个Unit可以视为一个轻量级虚拟机,包括若干CPU资源,内存资源,磁盘资源等
租户资源池 - 一个租户拥有若干个资源池。这些资源池的集合描述该租户所能使用的所有资源
- 一个租户在同一个Server上最多有一个UNIT。实际上,从概念上讲,副本是存储在UNIT之中,UNIT是副本的容器
注意:OceanBase可以为不同类型的应用分配不同类型和不同数量的Unit,满足业务不同的需求。资源并不是静态的,可以随着业务的发展不断调整(调高或者调低)
创建租户
-
创建“资源单元规格”(仅仅是规格定义,不实际分配资源)
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 ;
-
创建资源池(会实际创建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,资源池会创建失败
-
创建租户,将资源池赋给一个新的租户
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;
- 查看系统中定义的resource unit规格:
select * from __all_unit_config;
- 看系统中已经分配的
resource unit:select *from_all_unit;
查看系统日志
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]
- 如果一个OceanBase集群有3个Zone,每个Zone有5台OB Serer。那么一个分区最多有(3)份全能型副本
- 如果一个集群有3个Zone,每个Zone有5台 OB Server。一个租户对应的资源池的Unit Num=3,最终该租户有(9)个资源单元