相关文档,希望互相学习,
共同进步
1.背景
在 OceanBase 数据库中,每一个租户即一个实例。租户与租户之间数据、权限、资源隔离,每个租户拥有自己独立的访问端口及 CPU、内存访问资源。
OceanBase 数据库可灵活的调整租户资源分配情况(CPU、内存),且整个过程对上层业务透明。通过多租户机制,OceanBase 集群帮助用户高效的利用资源,在保证可用性和性能的前提下,优化成本,并且做到按照需求弹性扩容。
资源规格 Unit Config:OceanBase 数据库中,资源单元 Unit 是一个租户使用 CPU、内存的最小逻辑单元 ,也是集群扩展和负载均衡的一个基本单位,在集群节点上下线,扩容、缩容时会动态调整资源单元在节点上的分布进而达到资源的使用均衡 。而 Unit Config 则规定了一个 Unit 需要使用的计算存储资源 (包含内存、CPU 和 IO 等)的规格 ,是一个配置信息。
组件:
OceanBase Deployer),OceanBase 安装部署工具,简称为 obd
OceanBase Database Proxy,OceanBase 数据库代理,是 OceanBase 数据库专用的代理服务器,简称为 ODP(又称为 OBProxy)
2. 步骤
2.1安装
tar -zxf oceanbase-standalone-all-in-one-4.3.5_bp3_hotfix1_20251009.el7.x86_64.tar.gz
vim ~/.oceanbase-all-in-one/bin/env.sh
source ~/.oceanbase-all-in-one/bin/env.sh
free -g
sudo echo 3 > /proc/sys/vm/drop_caches
cd oceanbase-standalone-all-in-one
cd bin/
./install_obd.sh
查看集群信息、查看集群详细状态、查看集群的租户信息:
obd cluster list
obd cluster display oceanbasenhtc
obd cluster tenant show oceanbasenhtc
截图:
1)集群名称 oceanbasenhtc
obd cluster list

2)集群的详细信息、状态
obd cluster display oceanbasenhtc

可以通过ob-dashboard 进入集群界面管理,可以看运行情况、用户管理等。

3)查看集群的租户
obd cluster tenant show oceanbasenhtc

看到有两个租户,compatibility_mode 兼容模式,一个是MYSQL,一个是ORACLE
2.2 使用obd 创建租户
1)创建实验 odb默认创建
# 创建租户
obd cluster tenant create ob422 -n test2--max-cpu=2--memory-size=2G--0g-disk-size=6G--max-iops=10000\--unit-num=1--charset=utf8 -s 'ob tcp invited nodes="%"'
# 查看租户
obd cluster tenant show ob422 -t test2
创建租户 fengtenant,采用默认模式
obd cluster tenant create oceanbasenhtc -n fengtenant
4

看到 obclient -h192.168.3.14 -P'2881' -p'' -uroot@fengtenant -Doceanbase -A
2)查看创建的租户信息
obd cluster tenant show oceanbasenhtc

此时发现多了一个租户 fengtenant,ok 默认mysql兼容模式,默认的资源池,默认的空密码
可在ob-dashboard 中修改租户密码

修改后用新密码即可连接:

2.3 使用界面 创建租户
1)进入界面 设置兼容oracle模式租户
登录到 ob-dashboard 进入集群界面管理,进行租户创建,如下图



输入 租户模式、租户名称fengoracle、管理员初始密码,字符集、负载类型,
负载类型主要影响 SQL 类大查询判断时间(参数:large_query_threshold),对 OLTP 类型负载的 RT 可能存在较大影响,请谨慎选择。
OLAP 用于实时数据仓库分析场景
KV 用于键值工作负载和类似 hbase 的宽列工作负载,这些工作负载通常具有非常高的吞吐量并且对延迟敏感
HTAP 适用于混合 OLAP 和 OLTP 工作负载。通常用于从活动运营数据、欺诈检测和个性化建议中获取即时见解
EXPRESS_OLTP 适用于贸易、支付核心系统、互联网高吞吐量应用程序等工作负载。没有外键等限制,没有存储过程,没有长交易,没有大交易,没有复杂的连接,没有复杂的子查询.
complex_oltp 适用于银行、保险系统等工作负载。它们通常具有复杂的联接、复杂的相关子查询、用 PL 编写的批处理作业,以及长事务和大事务。有时对短时间运行的查询使用并行执行.
2)创建完租户,创建用户

如果删除用户,点删除即可. 用户名区分大小写

登录查询
obclient -h192.168.3.14 -P2881 -ufeng@nhtc_oracle -p'xxx'

2.4 使用命令 创建租户
创建租户分为以下三步:
1、创建资源单元规格: 可选步骤,如果有合适的规格可以跳过此步骤,直接复用
2、创建资源池: 可以每个 zone 一个资源池,使用独立的资源单元规格(OCP 采用这种方式)
也可以所有 Zone 使用同一个资源单元规格,都在一个资源池下
3、创建租户:创建租户时需关联到第2步中创建的资源池
说明: 默认创建完租户后该租户对应的 Root用户密码为空,生产环境建议及时调整密码,登录到对应的用户租户下
alter user root identified by 'xxx';或者set password for root =password('xxxx');
create resource unit u1 min_cpu=4,max_cpu=4,memory_size='4g',log_disk_size='12g',max_iops=10000;create resource pool p1 unit='u1',zone ist=('zone1','zone2','zone3'),unit num=2;
create tenant test1 resource pool list=('p1'),primary zone='zonel,zone2,zone3charset=utf8mb4,collate=utf8mb4 binset ob tcp invited nodes='%':
或
create resource unit u2 min_cpu=4,max_cpu=4,memory size='4g',log_disk size='12g',max iops=10000;
create resource pool p2 1 unit='u1',zone list=('zone1'),unit num=2,create resource pool p2 2 unit='u1',zone list=('zone2"),unit num=2;create resource pool p2 3 unit='u1',zone list=('zone3'),unit num=2;
create tenant test2 resource _pool list=('p2 1','p2 2','p2 3'),primary_zone='zone1,zone2,zone3'charset=utf8mb4,collate=utf8mb4 binset ob tcp invited nodes='%';
CREATE TENANT tenant_name IDENTIFIED BY 'password' WITH ZONEMAP = "zone1=100, zone2=100" -- 指定不同区域的资源分配比例 AND MEMORY_QUOTA = '2G' -- 设置内存配额为2GB AND CPU_QUOTA = '2000'; -- 设置CPU配额为2000
1)创建两个 Unit Config
创建两个 Unit Config,
unit1和unit2并指定 CPU、内存、使用的最大及最小阈值。CREATE RESOURCE UNIT nhtc_oracle_02
MEMORY_SIZE [=] '5G',
MAX_CPU [=] 2,
MIN_CPU \[=\] cpu_num,
MIN_IOPS \[=\] iops_num,
IOPS_WEIGHT \[=\]iopsweight,
MAX_NET_BANDWIDTH \[=\] bandwidth_num,
NET_BANDWIDTH_WEIGHT \[=\] bandwidth_weight_num,
LOG_DISK_SIZE \[=\] 'size_value'\]; #创建 unit1 资源单元的 CPU、内存使用大小为 3 C、6 G。 #创建 unit2 资源单元的 CPU、内存使用大小为 4 C、8 G CREATE RESOURCE UNIT UNIT1 MAX_CPU =3,MIN_CPU =3 ,MEMORY_SIZE ='6G'; CREATE RESOURCE UNIT UNIT2 MAX_CPU =4,MIN_CPU =4 ,MEMORY_SIZE ='8G';
2)创建资源池 和 关联 Unit Config
Unit Config 是一组租户的配置规格信息,而 Resource Pool 则是租户的资源实体,所以在这一步我们需要创建一个 Resource Pool,并且与 Unit Config 关联起来。
创建两个不同的资源池 pool1、pool2,为其分别指定到 unit1、unit2 上,实现资源单元、资源池的对应。UNIT_NUM 表示在一个副本中指定多少个 unit 单元(同一个租户中,一个节点上最多只能有一个 unit),ZONE_LIST 则指定租户在当前集群中在哪几个副本进行部署。
创建 Resource Pool 需要保证有足够的资源剩余,如果资源不足,您可以先尝试删除已有的 test 租户,或者将已有租户的 Unit Config 调整到更小。
CREATE RESOURCE POOL pool1 UNIT='UNIT1',UNIT_NUM=1,ZONE_LIST=('zone1');
CREATE RESOURCE POOL pool2 UNIT='UNIT2',UNIT_NUM=1,ZONE_LIST=('zone1');
如果集群有 3 个节点,ZONE_LIST 的值应该为 ('zone1','zone2','zone3')
3)根据 Resource Pool 创建租户
定义一个名为 tenant1 的单副本租户,并规定字符集为 utf8mb4,使用 pool1 的资源池,
ob_tcp_invited_nodes 是租户白名单定义,初始可以设置为 '%',表示任意 IP 地址均可以访问,后期可改。
定义一个名为
tenant2的一个 单副本的租户,并规定字符集为utf8mb4,使用pool2的资源池。
CREATE TENANT IF NOT EXISTS tenant1 CHARSET='utf8mb4', ZONE_LIST=('zone1'), PRIMARY_ZONE='zone1', RESOURCE_POOL_LIST=('pool1') SET ob_tcp_invited_nodes='%'; CREATE TENANT IF NOT EXISTS tenant2 CHARSET='utf8mb4', ZONE_LIST=('zone1'), PRIMARY_ZONE='zone1', RESOURCE_POOL_LIST=('pool2') SET ob_tcp_invited_nodes='%'; #查询租户是否创建成功 SELECT * FROM DBA_OB_TENANTS;
单节点的集群环境,只能创建单副本的租户。如果集群有 3 个节点,ZONE_LIST 值应该为('zone1','zone2','zone3'),PRIMARY_ZONE 则填写 'zone1;zone2;zone3',表示租户的 Leader 优先分布在 zone1,其次为 zone2。
4)修改租户配置、调整资源规格
修改租户所占用的 CPU、内存大小,仅需要调整租户所对应的 Unit Config ,不需要对资源池或者租户进行调整。租户配置的调整是在线立即生效的。OceanBase 数据库通过内核的虚拟化技术,在变更配置后租户的 CPU 和内存资源可以立即生效,无需数据迁移或者切换,对业务无感知。
obclient -h192.168.3.14 -P2881 -usys@nhtc_oracle -p'xx'
#租户资源单元-查询视图(仅企业版,社区版不支持)
SELECT * FROM oceanbase.DBA_OB_UNIT_CONFIGS;
#调整 unit1 资源单元 CPU、内存的使用大小为 5 c,10 G(之前 3 C,6 G)
ALTER resource unit unit1 max_cpu =5,min_cpu =5 ,memory_size ='10G';
3 知识点补充
3.1 租户连接
1、租户连接示例
obclient/mysql -h节点IP -P端口 -u用户名@租户名#集群名 -p密码 -D数据库名 -A-c


3.2 不同模式的命令不同
如同样的查看表清单,mysql模式 "SHOW TABLES FROM db1;" 即可,但是oracle模式下" select table_name from user_tables",否则提示不存在。


3.3 ob与oracle 也有些许不同
如插入数据,ob可以 INSERT INTO t1 VALUES(3,5),(2,4); 但是oracle不允许


3.4 oceanbase 优势
1)热点行更新能力
热点账户短时间内余额大量更新,或者热门商品限时抢购--> 直接体现。
热点更新的本质: 短时间内对数据库中的同一行数据的某些字段值进行高并发的修改(余额,库存等)。瓶颈:关系型数据库为了保持事务一致性,对数据行的更新都需要经过 "加锁->更新->写日志提交->释放锁" 的过程 ,串行 的。所以,提高热点行更新能力的关键在于 如何尽可能缩短持有锁的时间。OceanBase 提出了一种基于分布式架构的实现方式,提升类似业务场景中单行并发更新的能力。
2)并行导入和数据压缩
-
数据迁移:当需将大量数据从一个系统迁移到另一个系统时,并行导入可加快速度,数据压缩则可减少 传输带宽和存储资源。
-
备份和恢复:在进行数据备份时,数据压缩可减少备份文件的大小,节省存储空间。在恢复数据时,采用并行导入可以加快数据恢复的速度。
-
列存表:在列存表中进行查询时,通常只需要访问查询所涉及的列,而不是整行数据。因此,压缩后的列仍可在压缩状态下进行扫描和处理,这可以减少I/O操作,加快查询速度,提高整体的查询性能。对于列存表,批量导入数据后,做一次数据压缩,可以使读性能更优。需要注意的是,列存表的合并速度较慢
3)修改租户配置、调整资源规格
OceanBase 数据库在创建租户前,需要先确定租户的 Unit Config。修改租户所占用的 CPU、内存大小,仅需要调整租户所对应的 Unit Config,不需要对资源池或者租户进行调整。租户配置的调整是在线立即生效的。OceanBase 数据库通过内核的虚拟化技术,在变更配置后租户的 CPU 和内存资源可以立即生效,无需数据迁移或者切换,对业务无感知。
等等....
实验验证:ok 
OceanBase-相关文章
【OceanBase专栏】OBE-01031: insufficient privileges
项目管理--相关知识 
项目管理-项目绩效域1/2_八大绩效域和十大管理有什么联系-CSDN博客
项目管理-计算题公式【复习】_项目管理进度计算题公式:乐观-CSDN博客
项目管理-相关知识(组织通用治理、组织通用管理、法律法规与标准规范)-CSDN博客
Oracle其他文档,希望互相学习,
共同进步
Oracle-找回误删的表数据(LogMiner 挖掘日志)_oracle日志挖掘恢复数据-CSDN博客
oracle 跟踪文件--审计日志_oracle审计日志-CSDN博客
ORA-12899报错,遇到数据表某字段长度奇怪现象:"Oracle字符型,长度50"但length查却没有50_varchar(50) oracle 超出截断-CSDN博客
