一、集群相关概念
集群:整个分布式数据库。
Region:表示区域,是地域的逻辑概念,如1个城市,1个集群可以有多个Region,用于跨城市远 距离容灾。
Zone:表示分区,是机房或机架的逻辑概念,1个Region包含1个或多个Zone,分区部署可提高可用。
observer:observer为1个进程/1个节点(通常1台服务器部署1个observer进程),Oceanbase是 一个单进程软件,包含数据库所有管理功能:连接、sql解析、存储、事务、负载均衡。
集群部署逻辑图:
部署相关命令:
---------分区相关----------
--查看分区Zone
SELECT * FROM oceanbase.DBA_OB_ZONES;
--增加分区Zone(分区为1个逻辑概念,增加完分区后并未增加机器到集群中)
ALTER SYSTEM ADD ZONE zone2 IDC 'hz1', REGION 'hangzhou';
--删除分区
ALTER SYSTEM DELETE ZONE zone2;
--启动分区
ALTER SYSTEM START ZONE zone2;
--停止分区
ALTER SYSTEM STOP ZONE zone2;
--隔离分区(故障隔离、分区升级)
ALTER SYSTEM STOP ZONE zone2; --彻底隔离(首选命令,要求剩余节点可以投票)
ALTER SYSTEM FORCE STOP ZONE zone2; --强制隔离
ALTER SYSTEM ISOLATE ZONE zone2; --隔离,不检查,响应最快
---------节点相关----------
--查看节点observer
SELECT * FROM oceanbase.DBA_OB_SERVERS;
--增加节点到分仓zone2(前提是这两台机器已正确安装并启动oceanbase)
ALTER SYSTEM ADD SERVER '192.168.1.10:2882','192.168.1.11:2882' ZONE zone2;
--启动节点
ALTER SYSTEM START SERVER '192.168.1.10:2882';
--停止节点
ALTER SYSTEM STOP SERVER '192.168.1.10:2882';
二、租户相关概念
资源规格:资源的集合,也可叫资源模板,可根据业务场景抽象若干不同规格,例如小规格、中规格、大规格供后续使用。
unit:资源单元,1个unit对应1个资源规格的资源。
资源池:若干个unit,包括多个不同的分区上的unit,资源池是资源分配的基本单位。信息包括:Region、Zone_List、资源规格序号、每个Zone分配unit个数。
租户:资源层面的逻辑概念,可指定其资源规格,包括CPU、内存等。租户同时也对应1个数据库实例,用户、数据库、表等都是在租户上创建的。
租户资源逻辑图:
租户相关命令:
-- 查询资源规格
SELECT * FROM oceanbase.DBA_OB_UNIT_CONFIGS;
-- 创建资源规格
CREATE RESOURCE UNIT my_unit_config
MEMORY_SIZE = '2G',
MAX_CPU = 1, MIN_CPU = 1,
LOG_DISK_SIZE = '6G',
MAX_IOPS = 10000, MIN_IOPS = 10000, IOPS_WEIGHT=1;
-- 查询资源池
SELECT * FROM oceanbase.DBA_OB_RESOURCE_POOLS;
-- 创建资源池
CREATE RESOURCE POOL my_res_pool
UNIT='my_unit_config',
UNIT_NUM=1, -- 每个zone上unit的个数
ZONE_LIST=('zone1'); -- 可配置多个zone
-- 查询租户
SELECT * FROM oceanbase.DBA_OB_TENANTS;
-- 创建租户
CREATE TENANT IF NOT EXISTS tenant1
PRIMARY_ZONE='zone1', -- 分号表示流量优先级从高到低,逗号表示流量优先级相同,如zone1;zone2,zone3。RANDOM表示随机选择1个主
RESOURCE_POOL_LIST=('my_res_pool') -- 如果配置多个资源池,资源池的UNIT_NUM必须相同
SET OB_TCP_INVITED_NODES='%', -- 连接白名单
ob_compatibility_mode='mysql'; -- mysql模式/oracle模式
三、mysql模式
Oceanbase社区版和企业版均支持mysql模式,创建完mysql模式租户后,通过该租户管理员用户登录后可创建该租户的数据库、用户、表等对象。
登录租户tenant1的管理员用户root:
-- 用户root@tenant1,相当于mysql的root用户,密码为空
mysql -P 2881 -h 192.168.7.214 -u root@tenant1 -p
在root@tenant1用户下创建数据库db1、用户u1:
-- 查询已有数据库
show databases; #所有数据库
-- 创建数据库
create database db1;
-- 查询已有用户
select * from mysql.user;
-- 创建用户u1
create user if not exists 'u1'@'%' identified by '1111';
-- 查询用户u1的权限
select * from mysql.db;
-- 给用户u1赋予数据库db1的所有权限
grant all on db1.* to 'u1'@'%';
重新用租户tenant1的用户u1登录:
-- 用户u1@tenant1,密码1111(登录成功后,即可在db1下建表、查询等)
mysql -P 2881 -h 192.168.7.214 -u u1@tenant1 -p
更详细的mysql命令参考:一、MYSQL基础篇_mysql既是linux用户又是数据库用户_lv_zj的博客-CSDN博客
四、oracle模式
Oceanbase只有企业版支持oracle模式,创建完oracle模式租户后,即相当于创建了oracle实例,通过该租户管理员用户登录后可创建该租户的用户/模式、表等对象。