OceanBase数据库如何完成集群的扩容?最好可以分享下实践方案。

OceanBase数据库如何完成集群的扩容?最好可以分享下实践方案。

仅供参考。

  1. 准备工作阶段
    sql
    – 1.1 添加新物理服务器
    ALTER SYSTEM ADD SERVER ‘192.168.1.10:2882’ ZONE ‘zone4’;
    ALTER SYSTEM ADD SERVER ‘192.168.1.11:2882’ ZONE ‘zone4’;

– 1.2 创建新Zone(逻辑数据中心)
ALTER SYSTEM ADD ZONE ‘zone4’
REGION ‘hangzhou’
IDC ‘idc3’
ZONE_TYPE ‘readwrite’;
2. 数据迁移阶段
sql
– 2.1 启动Unit迁移(数据单元)
ALTER SYSTEM MIGRATE UNIT <unit_id>
DESTINATION ‘192.168.1.10:2882’;

– 2.2 自动触发分区重平衡
– OceanBase自动执行以下步骤:
– a) 全局负载管理器分析当前数据分布
– b) 生成分区迁移计划(Partition迁移任务)
– c) 按照副本类型(全能型/只读型)分批迁移

  1. 服务切换阶段
    sql
    – 3.1 修改Locality(数据副本分布策略)
    ALTER TENANT test_tenant
    SET LOCALITY = ‘F@zone1, F@zone2, F@zone3, F@zone4’;

– 3.2 渐进式切流(业务无感)
– RootService逐步调整路由表,将新请求导向新节点
– 存量连接继续访问原节点直至超时或断开

过程监控与异常处理
关键监控项:
sql
– 1. 迁移进度监控
SELECT * FROM __all_virtual_partition_migration_status;

– 2. 副本同步延迟
SELECT * FROM __all_virtual_clog_stat
WHERE replica_role = ‘LEADER’;

– 3. 资源使用情况
SELECT zone, svr_ip,
cpu_capacity, cpu_assigned,
disk_used/disk_total*100 as disk_usage
FROM __all_virtual_server_stat;

– 4. 业务影响监控(RT和QPS)
SELECT tenant_id, svr_ip,
avg_query_response_time,
qps
FROM oceanbase.gv$ob_sql_audit
WHERE sample_time > NOW() - INTERVAL 5 MINUTE;
异常处理场景:
网络分区(脑裂):

自动触发Paxos选举新Leader

隔离少数派分区,保证多数派可用

提供ALTER SYSTEM ISOLATE ZONE手动干预

节点故障:

sql
– 自动处理流程:
– 1. 其他副本检测到心跳超时(默认3秒)
– 2. 发起Leader重选(选举超时=2秒)
– 3. 新Leader继续服务,RS调度新副本
– 4. 故障节点恢复后自动追数据
数据迁移失败:

sql
– 自动重试机制:
– 1. 记录失败原因到内部表
– 2. 根据错误码决定重试策略:
– - 网络超时:立即重试(最多3次)
– - 磁盘满:暂停并告警
– - 数据校验失败:停止并标记副本损坏

– 手动干预命令:
ALTER SYSTEM CANCEL MIGRATION <task_id>;
ALTER SYSTEM RETRY MIGRATION <task_id>;
实践建议
扩容时机选择:

磁盘使用率>70%时提前扩容

业务低峰期执行(22:00-06:00)

避免与备份、合并任务重叠

配置优化:

sql
– 调整迁移速度
SET GLOBAL enable_rebalance = TRUE;
SET GLOBAL server_balance_load_factor = 1.2;

– 设置维护窗口
ALTER SYSTEM SET major_freeze_duty_time = ‘02:00’;
ALTER SYSTEM SET enable_auto_leader_switch = FALSE; – 扩容期间临时关闭
回滚方案:

sql
– 1. 暂停迁移任务
ALTER SYSTEM SUSPEND BALANCE TASK;

– 2. 恢复原Locality配置
ALTER TENANT test_tenant SET LOCALITY = ‘F@zone1, F@zone2, F@zone3’;

– 3. 强制回退(紧急情况)
ALTER SYSTEM FORCE SWITCH ROOTSERVICE LEADER;

2 个赞

感谢!

如果在故意刷积分 会给你们禁言

6,好详细