OBCP第一章 OB 分布式架构高级技术笔记
·
OBCP第一章 OB 分布式架构高级技术笔记
一、资源分配与管理
1.1 资源单元(Resource Unit)
- 定义:资源分配的最小单元,不可跨节点(OBServer)。
- **创建/修改/删除**:
- `CREATE/ALTER RESOURCE UNIT unitname .... ;`
- `DROP RESOURCE UNIT unitname;`
- **查看配置**:
- `SELECT * FROM __all_unit_config;`
1.2 资源池(Resource Pool)
- 定义:由多个资源单元组成,用于分配给租户。
- **创建/修改/删除**:
- `CREATE/ALTER RESOURCE POOL poolname ...`
- `DROP RESOURCE POOL poolname;`
- **查看配置**:
- `SELECT * FROM __all_resource_pool;`
二、租户管理
2.1 新增租户
- 命令:
- `CREATE TENANT [IF NOT EXISTS] tenantname ...`
- 参数:
COMMENT 指定注释。CHARACTER SET 指定租户的字符集。COLLATE 指定字符序。ZONE_LISTPRIMARY_ZONERESOURCE_POOL_LISTLOGONLY_REPLICA_NUM 指定日志副本数。LOCALITY 描述副本在 Zone 间的分布情况。例如:F@z1,F@z2,F@z3,R@z4 表示 z1、z2、z3 为全功能副本,z4 为只读副本。
2.2 修改租户
- 命令:
- `ALTER TENANT {tenant_name | ALL} ...`
- 参数:与新增租户类似,可修改租户的各种属性。
2.3 删除租户
- 命令:
DROP TENANT tenant_name [FORCE/PURGE];
- 选项:
不加任何选项:打开回收站功能时,进入回收站FORCE:立即删除。PURGE:不进入回收站直接删除。
2.4 查看租户
- 命令:
- `SELECT * FROM __all_tenant;`
三、资源分配情况与负载均衡
3.1 查看集群资源
- 命令:
- `SELECT ... FROM __all_virtual_server_stat;`
3.2 创建租户时的资源分配
- 流程:定义资源规格 -> 创建资源池 -> 分配资源池给租户。
3.3 租户扩容
- 方法一:升级资源单元规格。
ALTER RESOURCE POOL pool_mysql UNIT='S3';
- 方法二:增加资源单元数量。
ALTER RESOURCE POOL pool_mysql UNIT_NUM=2;
四、Zone与Server管理
4.1 Zone管理
- 新增:
ALTER SYSTEM ADD ZONE 'zone';
- 删除:
ALTER SYSTEM DELETE ZONE 'zone';
- 上线/下线
ALTER SYSTEM START/STOP ZONE 'zonename';
4.2 Server管理
- 添加:
ALTER SYSTEM ADD SERVER 'ip:port' ...;
- 删除:
ALTER SYSTEM DELETE SERVER 'ip:port' ...;
- 取消删除:
ALTER SYSTEM CANCEL DELETE SERVER 'ip:port' ...;
- 启动/停止:
ALTER SYSTEM START/STOP SERVER 'ip:port' ...;
五、集群扩容与缩容
5.1 集群扩容流程
1. 目标端创建新Unit。
2. 分区复制。
3. 角色切换。
4. 下线多余分区及Unit。
5.2 负载均衡参数
- enable_rebalance:是否开启自动负载均衡。
- migrate_concurrency:控制数据迁移的并发度。
- data_copy_concurrency:设置并发执行的数据迁移复制任务的最大并发数。
- server_data_copy_out_concurrency:设置单个节点迁出数据的最大并发数。
- server_data_copy_in_concurrency:设置单个节点迁入数据的最大并发数。
5.3 查看业务租户内部所有leader副本的位置
select t5.tenant_name,t4.database_name,t3.tablegroup_name,t1.table_id,
t1.table_name,t2.partition_id,t2.role,t2.zone,
concat(t2.svr_ip,':',t2.svr_port) observer,
round(t2.data_size / 1024 / 1024) data_size_mb,
t2. row_count
from __all_virtual_table t1 ----表的基础信息,可查看虚拟表
join gv$partition t2 ----集群中所有的partition meta信息
on (t1.tenant_id = t2.tenant_id and t1.table_id = t2.table_id)
left join __all_tablegroup t3 ----表组信息
on (t1.tenant_id = t3.tenant_id and t1.tablegroup_id = t3.tablegroup_id)
join __all_database t4 ----库信息
on (t1.tenant_Id = t4.tenant_id and t1.database_id = t4.database_id)
join __all_tenant t5 ----租户信息
on (t1.tenant_id = t5.tenant_id)
where t5.tenant_id = 1020
and t2.role = 1 ----role=1为leader; role=2为follower
order by t5.tenant_name,t4.database_name,
t3.tablegroup_name,t2.partition_id;
六、Primary Zone设置与负载均衡策略

6.1 Primary Zone配置
- 配置示例:
(z1;z2;z3):主副本只在Zone1存在,适合时延敏感的在线处理业务。(z1,z2,z3):主副本均匀分布,适合批处理场景。(z1,z2;z3):主副本均匀分布到Zone1和Zone2,Zone3为从副本,适合城市容灾方案。
6.2 优先级继承
- 数据库:继承租户的Primary Zone设置。
- 表:继承数据库的Primary Zone设置。
- 灵活性:数据库和表可以指定各自的Primary Zone,不必和上一级对象保持一致。
七、小结
- 资源分配流程:定义资源规格 -> 创建资源池 -> 分配资源池给租户。
- Partition自动负载均衡:分区在不同维度上自动调整,达到均衡。
- Primary Zone设置:影响租户、数据库、表等对象主副本的分布策略。
- 表组(Tablegroup):干预分区分布,避免跨节点请求对性能的影响。
- Unit负载均衡:集群扩容或缩容后,Unit自动调整,数据重新均衡,过程在线完成,简化运维难度。
更多推荐
所有评论(0)