外观
OceanBase 副本分布调整
副本分布原则
数据一致性原则
- 每个分区至少有 3 个副本(建议)
- 副本分布在不同的可用区或机房
- 大多数副本确认后的数据才对外可见
负载均衡原则
- 副本均匀分布在所有节点上
- 避免单个节点负载过高
- 考虑节点的硬件配置和性能差异
高可用性原则
- 避免副本集中在少数节点
- 确保每个可用区有足够的副本
- 考虑网络拓扑和故障域
副本分布调整配置
启用自动副本均衡
sql
-- 启用集群级别的自动副本均衡
ALTER SYSTEM SET enable_rebalance = 'true';
-- 配置副本均衡的速度(0-100)
ALTER SYSTEM SET rebalance_speed = 50;
-- 配置副本均衡的间隔时间(秒)
ALTER SYSTEM SET rebalance_interval = 3600;调整副本分布策略
sql
-- 设置租户的 locality 策略
ALTER TENANT tenant_name SET locality = 'F@z1,F@z2,F@z3';
-- 设置租户的 primary zone
ALTER TENANT tenant_name SET primary_zone = 'z1,z2,z3';
-- 调整分区副本数
ALTER TABLE table_name SET PARTITION_NUM = 16;副本分布调整操作
查看副本分布状态
sql
-- 查看集群级副本分布
SELECT * FROM oceanbase.DBA_OB_PARTITION_LOCATIONS;
-- 查看特定表的副本分布
SELECT * FROM oceanbase.CDB_OB_TABLE_LOCATIONS WHERE table_name = 'table_name';
-- 查看节点的副本数量
SELECT server_ip, COUNT(*) AS partition_count FROM oceanbase.DBA_OB_PARTITION_LOCATIONS GROUP BY server_ip;手动触发副本均衡
sql
-- 手动触发集群级副本均衡
ALTER SYSTEM REBALANCE;
-- 手动触发特定租户的副本均衡
ALTER SYSTEM REBALANCE TENANT tenant_name;
-- 强制进行副本均衡
ALTER SYSTEM FORCE REBALANCE;调整特定分区的副本分布
sql
-- 迁移特定分区到指定服务器
ALTER SYSTEM MIGRATE PARTITION partition_name OF table_name TO 'server_ip:port';
-- 调整分区的 locality
ALTER TABLE table_name MODIFY PARTITION partition_name SET LOCALITY = 'F@z1,F@z2,F@z3';禁用自动副本均衡
sql
-- 临时禁用自动副本均衡
ALTER SYSTEM SET enable_rebalance = 'false';
-- 维护完成后重新启用
ALTER SYSTEM SET enable_rebalance = 'true';副本分布调整最佳实践
配置建议
- 合理设置副本数:根据业务需求和可用性要求,配置适当的副本数(建议 3-5 个)
- 优化 locality 策略:根据机房分布和网络拓扑,配置合理的 locality 策略
- 配置适当的 primary zone:根据业务访问模式,配置适当的 primary zone
- 调整均衡速度:根据业务负载情况,调整副本均衡的速度
操作建议
- 避开业务高峰期:在业务低峰期进行副本分布调整,减少对业务的影响
- 逐步调整:对于大型集群,建议逐步调整副本分布,避免一次性调整过多
- 监控调整过程:在副本调整过程中,密切监控集群性能和资源使用情况
- 验证调整结果:调整完成后,验证副本分布是否符合预期
性能优化
- 优化网络配置:确保节点间网络带宽充足,减少副本迁移时间
- 调整存储配置:优化磁盘 I/O 性能,提高副本迁移速度
- 合理配置资源:确保节点有足够的 CPU、内存和磁盘资源处理副本迁移
常见问题(FAQ)
Q1: 副本分布调整会影响业务性能吗?
A1: 副本分布调整会占用一定的网络带宽和磁盘 I/O 资源,可能会对业务性能产生一定影响。建议在业务低峰期进行调整,并合理设置调整速度。
Q2: 如何查看副本分布调整的进度?
A2: 可以通过以下方式查看副本分布调整的进度:
sql
-- 查看副本迁移任务
SELECT * FROM oceanbase.DBA_OB_PARTITION_MIGRATION_STATUS;
-- 查看副本均衡的进度
SELECT * FROM oceanbase.DBA_OB_REBALANCE_STATUS;Q3: 副本分布调整失败时如何处理?
A3: 副本分布调整失败时,可以尝试以下操作:
- 检查节点状态和网络连通性
- 查看 OceanBase 日志,分析失败原因
- 调整副本均衡速度或间隔时间
- 手动触发重试
Q4: 如何优化副本分布以提高性能?
A4: 可以通过以下方式优化副本分布以提高性能:
- 将热点数据的 primary 副本分布在性能较好的节点上
- 根据业务访问模式调整 primary zone
- 确保副本均匀分布,避免热点节点
- 考虑节点的硬件配置和性能差异
Q5: 副本分布调整需要多长时间?
A5: 副本分布调整的时间取决于以下因素:
- 集群规模和数据量
- 网络带宽和磁盘 I/O 性能
- 副本均衡的速度设置
- 业务负载情况
一般情况下,小型集群的副本调整可能需要几分钟到几小时,大型集群可能需要数小时到数天。
