1 实例数控制在20个
目前集群的事实表没有适应大部聚合查询的分布键 所以在group by是slice分布交替数据重分布数据广播时开销很大 实例数最好控制在30个以内 至少在芒果TV的应用场景中在32个实例的时候 group查询会卡得不行 80个实例集群相当于完全用不了(一个机器装2个primary )
2 单机单实例
单机多实例运行时 OOM错误不好控制 并发数也会受到限制
3 单次扩容实例数量不要超过集群本来的实例数量
如果扩容的实例数量>=集群本来的实例数量 可以分多次扩容 ,如果单次扩容的实例数量>=集群本来的实例数量 在扩展的时候会卡住并且没有错误提示,只能手动干掉扩容程序 再次回滚,即使primayr起来了 手动full模式修复了mirror ,集群状态是对的 但集群仍然不可用 必须回滚
4 刷新相关参数
在扩容前先刷新 sysctl.conf 中的内核参数 limits.conf 限制参数 磁盘调度 预读块设置等参数 并保证生效
5 gpcheckperf
在扩容前先 gpcheckperf 检测集群网络通信 IO情况
6 确认扩容后的查询效率
扩容后先检查一下group by,join 的查询效率,如果效率不理想可以用 master模式 删除config表中新机器的记录来回滚本次扩容
7 确认自动平衡集群历史数据
自动平衡集群历史数据是很花费时间的操作 如果不需要自动平衡数据可 gpexpand -c ,避免下次扩容看到一些提示(对于新手可能会很茫然)