• OB如何创建租户


    一、        先导知识:

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

    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做得更好,个人觉得更适合在公有云上大展手脚。

     

    代表一个租户

  • 相关阅读:
    Linux消息队列编程
    Leetcode 1332. 删除回文子序列(看完题解才恍然大悟!!!!!!!)
    c++ 继承关系中的虚函数表
    C++(17):filesystem
    Leetcode 1331. 数组序号转换
    new和malloc的区别
    简述三次握手和四次挥手
    Leetcode 1296. 划分数组为连续数字的集合(提供一种思路)
    Leetcode 1275. 找出井字棋的获胜者
    JZ060把二叉树打印成多行
  • 原文地址:https://www.cnblogs.com/nolanchan/p/8296932.html
Copyright © 2020-2023  润新知