一、        先导知识:

资源隔离是保证用户间相互不受影响的重要手段。数据库的资源隔离主要有以下方式:

l  服务器隔离

l  数据库隔离:sqlserver、oceanbase、oracle 12c、informix、TDSQL

l  Schema隔离:oracle(before 12c)、mysql、DB2

OceanBase的资源隔离

在OceanBase集群中,每当有业务需要使用数据库时,在该集群上为其创建一个租户。通过租户实现资源隔离,采用“单实例多租户”的管理模式。每个用户在OceanBase上都有对应的租户信息,一个租户相当于MYSQL上的一个实例,根据用户的需求,用户对应的租户绑定指定规格的资源,包括CPU核数、内存、存储空间等。

OceanBase上有系统租户和用户租户都有root权限账号

l  系统租户存放OceanBase数据库管理的各种内部元数据信息

l  用户租户下存放用户的各种数据和数据库元信息

二、        如何创建租户

创建租户流程步骤:

  1. 创建单元

CREATE RESOURCE UNIT unitname

MAX_CPU [=] cpunum,

MAX_MEMORY [=] memsize,

MAX_IOPS [=] iopsnum,

MAX_DISK_SIZE [=] disksize,

MAX_SESSION_NUM [=] sessionnum,

[MIN_CPU [=] cpunum,]

[MIN_MEMORY [=] memsize,]

[MIN_IOPS [=] iopsnum] ;

创建资源单元配置时, MAX_CPU、MAX_MEMORY、MAX_IOPS、MAX_DISK_SIZE、MAX_SESSION_NUM必须指定。MIN_CPU、 MIN_MEMORY、MIN_IOPS可选,默认值和MAX_CPU、MAX_MEMORY、 MAX_IOPS 保持一致。

参数

取值范围

单位

备注

MAX_MEMORY

[1073741824, +∞)

字节

最小值为1G,写成带单位的形式,如‘1G’,‘100M’等

MAX_IOPS

[128,+∞)

MAX_DISK_SIZE

[536870912,+∞]

字节

最小值为512M,写成带单位的形式,如‘1G’,‘100M’等

MAX_SESSION_NUM

[64,+∞)

  1. 创建资源池

CREATE RESOURCE POOL poolname

UNIT [=] unitname,

UNIT_NUM [=] unitnum,

ZONE_LIST [=] ('zone' [, 'zone' …]);

资源池中包含 N 个资源单元,同时必须指定所属的 ZONE LIST(集群)。若需要包含N个资源单元,需多次使用create添加相应的资源池。在用户手册中,资源池是存在修改的命令的方式,但经过真实测试,在1.X的版本中无法对资源池进行修改。若需要修改,那是一个比较繁琐的流程。

  1. 创建租户

CREATE TENANT [IF NOT EXISTS] tenantname

[tenant_characteristic_list]

tenant_characteristic_list:

tenant_characteristic [, tenant_characteristic...]

tenant_characteristic:

COMMENT 'string'

|{CHARACTER SET | CHARSET} [=] charsetname

|COLLATE [=] collationname

|REPLICA_NUM [=] num

|ZONE_LIST [=] (zone [, zone…])

|PRIMARY_ZONE [=] zonelist

|DEFAULT TABLEGROUP [=] {NULL | tablegroup}

|RESOURCE_POOL_LIST [=](poolname [, poolname…])

|LOCALITY [=] locality;

如果要创建的租户名已存在,并且没有指定 IF NOT EXISTS,则会出现错误租户名的合法性和变量名一致,最长 64 个字节,只能有大小写英文字母,数字和下划线,而且必须以字母或下划线开头,并且不能是 OceanBase 的关键字。只有用 root 用户连接到系统租户才能执行 CREATE TENANT 去创建租户。

三、        小结:

OceanBase是阿里在Paas数据库云上的解决方案。它的优点在于可以根据租户的资源使用情况,进行调配(可看下图),但生产系统上严禁出现超卖的情况。若发生超卖的情况,在某一个副本故障时其他两个副本有可能无法接管业务。系统租户用户无法查询到其他租户的信息,这方面的安全性比oracle12c做得更好,个人觉得更适合在公有云上大展手脚。

代表一个租户

OB如何创建租户的更多相关文章

  1. openstack私有云布署实践【15 创建租户网络+实例】

    这里以办公网测试环境为例,   (一)创建租户demo的网络   使用admin用户 source admin-openrc.sh 创建public公网 neutron net-create 1040 ...

  2. 版本12.2.0.1.0数据库,复制种子数据库快速创建租户数据库PDB

    实验测试:快速创建一个数据库PDB2: 实验环境:12.2.0.1.0版本数据库,dbca图形化安装,现有环境,CDB容器数据库ORCL,PDB可插拔数据库ABC   ---查询CDB名称,状态 SQ ...

  3. openstack 租户、用户管理

    创建domain [root@cc01 ~]# openstack domain create --description "Default Domain" default +-- ...

  4. OpenStack Train版-12.创建虚拟网络并启动实例(控制节点)

    使用VMware虚拟机创建网络可能会有不可预测到的故障,可以通过dashboard界面,管理员创建admin用户的网络环境 1.第一种: 建立公共提供商网络在admin管理员用户下创建 source ...

  5. 如何用Serverless让SaaS获得更灵活的租户隔离和更优的资源开销

    关于SaaS和Serverless,相信关注我的很多读者都已经不陌生,所以这篇不会聊它们的技术细节,而将重点放在SaaS软件架构中引入Serverless之后,能给我们的SaaS软件带来多大的收益. ...

  6. efcore使用ShardingCore实现分表分库下的多租户

    efcore使用ShardingCore实现分表分库下的多租户 介绍 本期主角:ShardingCore 一款ef-core下高性能.轻量级针对分表分库读写分离的解决方案,具有零依赖.零学习成本.零业 ...

  7. efcore在Saas系统下多租户零脚本分表分库读写分离解决方案

    efcore在Saas系统下多租户零脚本分表分库读写分离解决方案 ## 介绍 本文ShardinfCore版本x.6.0.20+ 本期主角: - [`ShardingCore`](https://gi ...

  8. OceanBase数据库实践入门——手动搭建OceanBase集群

    前言 目前有关OceanBase功能.案例.故事的文章已经很多,对OceanBase感兴趣的朋友都想安装一个数据库试试.本文就是分享初学者如何手动搭建一个OceanBase集群.这也是学习理解Ocea ...

  9. Hitachi Content Platform学习

    相关资料:https://community.hds.com/groups/developer-network-for-hitachi-content-platform/content?filterI ...

随机推荐

  1. Tips In C

    C语言中的使用操作 宏定义时使用do while防止语句的分离, 但是不使用与需要有返回值的语句, 这个时候可以参考第二条 宏定义时使用({}), ()加上{}的方式, 在代码中填写逻辑算法, 最后的 ...

  2. C#Winform中ToolTip的简单用法,

    ToolTip它能够为我们的软件提供非常漂亮的提示信息,提高软件的可用性,给用户比较好的体验. 使用,在窗体加载时加载以下代码: var toolTip1 = new ToolTip(); toolT ...

  3. java NIO、BIO、AIO全面剖析

    在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解.具体如下: 序号 问题 1 什么是同步? 2 什么是异步? 3 什么是阻塞? 4 什么是非阻塞? 5 什么是同步阻塞? 6 什么是同步 ...

  4. Vue之组件间传值

    标签: Vue Vue之父子组件传值 父向子传递通过props 子向父传递通过$emit 演示地址 代码示例如下: <!DOCTYPE html> <html lang=" ...

  5. python面试题——网络编程和并发

    1.简述 OSI 七层协议. 物理层(电信号.比特流) 基于电器特性发送高低电压(电信号) RJ45.IEEE802.3 数据链路层(数据帧) 定义了电信号的分组方式,分组方式后来形成了统一的标准,即 ...

  6. input type="file"获取文件名方法

    文件上传比较丑,样式调整时会有一个获取文件名,或者包含文件路径的文件名的方法 html代码 <div class="file-box"> <form id=&qu ...

  7. em和rem的区别

    rem和em单位一样,都是一个相对单位,不同的是em是相对于元素的父元素的font-size进行计算,rem是相对于根元素html的font-size进行计算,这样一来rem就绕开了复杂的层级关系,实 ...

  8. JS的定时到底有多不准

    博客逐步迁移到,独立博客,原文地址,http://www.woniubi.cn/js_hide_tab_setinterval/ 我们一直都在说,JS的定时非常的不准确,但是很少有人去验证他,今天我就 ...

  9. Trouble Shooting的一些感想(实时补充)

    最近一直做两个产品功能的Merge工作,代码Merge过来之后,发现了很多问题.经过Trouble Shooting,最终发现归根结底都是我们Merge的问题,例如有的Code没有Merge过来,Me ...

  10. Azure本月最新活动,速度Mark!

    桃花夭夭,渌水盈盈,就这样四月的脚步迫不及待地来了.为了帮助您能在第一时间了解 Azure 最新的活动,我们推出每月活动合集,你准备好了吗,一起来看吧! 立即访问http://market.azure ...