在线运维-集群在线扩缩容 【这次高斯不是数学家】
随着业务周期场景特性和数据量变化,需要集群节点具备可扩展性和可收缩性,同时在运维变更中,不影响客户业务,为了减短变更时间窗,只需协调在业务低峰期执行即可。
基础知识掌握:
- 安全环,集群按照环的方式配置,比如4个或5个主机组成一个环,这些主机上的DN主节点,备节点和从备节点都部署在这个环里, 缩容和扩容的最小单元是一个环。
- 重分布,数据根据hash、Roundrobin等方式分布在个节点实例上,如果进行扩缩容,数据需要按照指定方式重分布到扩缩容新的集群节点实例上。
- 在线重分布中不支持的语法,分为2类,一种是重分布中全程不支持例如:CREATE/DROP/ALTER DATABASE,一种是这张表正在重分布,不能对这样表进行的操作例如:不支持修改表分布列ALTER TABLE tbl DISTRIBUTE BY。
- 离线运维,需要长时间锁集群、集群处于只读状态,整体同场景离线运维比在线运维时间周期要短。
- 重分布期间,如果并发度高会消耗大量CPU和IO资源;同时每个正在重分布的表会有几次短时间锁表,如果恰好有业务要访问该表,业务会短时间阻塞,通常阻塞时间是秒级或分钟级,绝大部分情况下不会超过10分钟。
运维分类:
扩容:目前支持离线扩容、在线扩容、操作可以使用,一键式扩容、分步扩容,可根据集群特点选择。
离线扩容:速度快,时间窗端,有锁集群操作。
在线扩容:不影响在线业务执行,对业务性能有较小冲击,因为在线有数据追增操作,执行时间长。
分步扩容:集群规模大,拆解步骤,避免扩容各环节出现失败进行回滚,重新再来耗费时间。
必要操作步骤:
集群巡检,进行集群扩缩容前,进行必要的基础巡检和整改,避免运维操作失败。
例如:数据倾斜、集群只读、缩容节点是否包含CN实例,包括垃圾数据、倾斜表、自定义表空间,结合实际情况,梳理出的清单与业务侧确认垃圾数据清理范围,倾斜表整改方案等。
变更前备份:为了确保可靠性,可以选择发起变更前执行一次全量备份,如果有设置周期性备份,可根据评估是否选择。
扩容操作:
扩容支持一键式扩容和分步扩容,针对不同的场景和应用建议使用不同的方式,公有云小规模节点建议使用一键式扩容进行操作。
缩容操作:
集群符合缩容条件,可以通过点击集群运维缩容进行离线或者在线缩容操作,达到集群缩容的目的。
进度观察项:
查看总体进度:
使用PuTTY或者xshell工具,以Ruby用户登录部署DWS 集群任意一个包含CN的节点。执行如下命令查看数据重分布进度。
gsql -dpostgres -p 8000 -c ‘SELECT * FROM redis_progress ORDER BY name;’
查看每张表完成的重分布情况
执行如下命令查看每个表的数据重分布执行时间:
gsql -d postgres -p 8000 -c ‘SELECT * FROM redis_progress_detail;’
结果如下图,可以清晰地看到每张表进行数据重分布的起止时间和耗时。
postgres=# SELECT * FROM redis_progress_detail;
| table_name | start_time | finish_time | cost
----------±-----------±------------------------±------------------------±–
| test1 | 2016-11-07 09:48:04.66 | 2016-11-07 09:48:05.843 | 0:00:01.182
观察资源使用情况和作业运行情况
观察磁盘IO和网络情况,具体命令:
iostat xm 1
sar -n DEV 1
观察运行中的作业信息,通过如下SQL语句:
Select pid,query_start,query from pgxc_stat_activity where state=‘active’;
查看某个语句执行和等待情况:
Select * from pgxc_thread_wait_status where query_id=xxxxx;
查看已经完成的表信息:
Select * from redis_progress_detail;
查看加锁情况:
Select * from pg_locks;
【这次高斯不是数学家】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/351189
- 点赞
- 收藏
- 关注作者
评论(0)