Exploración de Zonas de Disponibilidad y Tenants en OceanBase

Configuraicón de Entorno de Base de Datos

Tras una implementación inicial de clúster OceanBase Community Edition, se optimizó la configuración. Entorno actual: yhw_cluster

Acceso mediante OBProxy

obclient -h10.10.10.202 -P2883 -uroot@sys -p'ClaveEjemplo#!456' -Doceanbase -A

Concepto de Zonas de Disponibilidad

Zona lógica que agrupa servidores para mantener réplicas completas. Ejemplo: zone1 y zone2, cada una con dos nodos OBServer.

Consulta de Recursos de Almacenamiento

SELECT DIRECCION_IP, ZONA, ID_TENANT, ID_UNIDAD, CPU_MIN, CPU_MAX, 
ROUND(TAM_MEMORIA/1073741824,1) AS MEMORIA_GB,
IOPS_MIN, IOPS_MAX, PESO_IOPS, 
ROUND(TAM_DISCO_LOG/1073741824,1) AS LOG_GB,
ROUND(LOG_USADO/1073741824,1) AS LOG_USO_GB,
ROUND(DATOS_USADOS/1073741824,1) AS DATOS_USO_GB 
FROM GV$UNIDADES_OB;

Arquitectura Multitenant

OceanBase utiliza un diseño de clúster único con múltiples tenants para aislamiento de recursos. Cada tenant opera como una instancia indepandiente con seguridad de datos integrada.

Tipos de Tenants

  • Sistema: Gestiona el clúster y ciclos de vida de tenants
  • Usuario: Proporciona funcionalidad completa de base de datos (modos MySQL/Oracle)
  • Meta: Almacena datos privados del tenant de usuario (creación automática)

Gestión de Recursos

Se administran mediante tres componentes:

  1. Configuración de Unidad (Unit Config)
  2. Grupo de Recursos (Resource Pool)
  3. Unidad de Recurso (Unit)

Creación de Tenant

1. Definir Unidad de Recurso

CREATE RESOURCE UNIT unidad_ejemplo
MEMORY_SIZE '4G',
MAX_CPU 2,
LOG_DISK_SIZE '8G';

2. Crear Grupo de Recursos

CREATE RESOURCE POOL grupo_recursos
UNIT = unidad_ejemplo,
UNIT_NUM = 2,
ZONE_LIST = ('zone1', 'zone2');

3. Implementar Tenant

CREATE TENANT tenant_demo
PRIMARY_ZONE = 'zone1',
RESOURCE_POOL_LIST = ('grupo_recursos');

Implementación Práctica

Tenant test_a (CPU:1, RAM:2GB)

CREATE RESOURCE UNIT config_a MAX_CPU 1, MEMORY_SIZE '2G';
CREATE RESOURCE POOL pool_a UNIT 'config_a', UNIT_NUM 1, ZONE_LIST ('zone1','zone2');
CREATE TENANT test_a PRIMARY_ZONE='zone1', RESOURCE_POOL_LIST=('pool_a');

Tenant test_b (CPU:2, RAM:4GB)

CREATE RESOURCE UNIT config_b MAX_CPU 2, MEMORY_SIZE '4G';
CREATE RESOURCE POOL pool_b UNIT 'config_b', UNIT_NUM 2, ZONE_LIST ('zone1','zone2');
CREATE TENANT test_b PRIMARY_ZONE='zone2', RESOURCE_POOL_LIST=('pool_b');

Monitoreo de Tenants

SELECT ZONA, DIRECCION_IP, ID_UNIDAD, NOMBRE_GRUPO, NOMBRE_TENANT, 
MIN_CPU, MAX_CPU, ROUND(MEMORIA/1073741824,1) AS MEM_GB
FROM VISTA_UNIDADES;

Conexión a Tenants

Via OBProxy:

obclient -h10.10.10.202 -P2883 -uroot@test_a -p'ClaveDemo#!789'
obclient -h10.10.10.202 -P2883 -uroot@test_b -p'ClaveDemo#!789'

Etiquetas: OceanBase OBCP OBProxy ResourceUnit ResourcePool

Publicado el 7-14 20:42