【实例状态】GaussDB CN DN为只读状态

IMcoolgeek 秀才 2022-11-23 09:24:54

只读原因

当CN和DN的磁盘使用率达到阈值时,集群管理就会自动将相应的CN或DN分片设为只读(业务只能读不能写),执行cm_ctl query -Cv命令查询集群状态如下: cke_197.png

设置为只读后禁止业务继续写入,避免磁盘被撑爆,同时也避免后续无法扩容(扩容需要磁盘有一定的剩余空间)。

只读guc参数

datastorage_threshold_value_check磁盘使用率阈值,超过该阈值,就会被设置为只读,默认85%

enable_transaction_read_only 检测磁盘只读的开关,如果关闭,不再检测磁盘,即使磁盘使用率超过阈值也不会设置只读,磁盘清空后也不会消除只读,默认值为on。

datastorage_threshold_check_interval 检测磁盘使用率的时间间隔,多久检测一次磁盘使用率,默认为10秒。

 

3个参数都在CMserver数据目录下的cm_server.conf配置文件中。

处理措施

当CN或DN被设置为只读时,根据上图中查到的CN或DN目录,检查所在磁盘使用率是否超过阈值。

1、检查对应磁盘被什么文件占用,确认文件用途,是否可以清理或转移到其他磁盘。

2、可以调高磁盘使用率阈值。

可以通过如下命令修改CMserver的guc参数,支持reload修改参数,无需重启CMserver进程。

确认集群是否有扩容计划,若有后续扩容计划,datastorage_threshold_value_check值建议不要超过50,扩容要求,数据磁盘使用率不超过50%。

gs_guc reload -Z cmserver -N all -I all -c "datastorage_threshold_value_check = 85"

gs_guc reload -Z cmserver -N all -I all -c "enable_transaction_read_only = on"

当磁盘使用率超阈值时,集群管理会自动把CN、DN设置为只读,对应的guc参数default_transaction_read_only被设置为on。

当磁盘使用率降到阈值以下或者调高阈值后,集群管理会自动把CN、DN解除只读,对应的guc参数default_transaction_read_only被设置为off。

由于集群管理默认检测磁盘的周期是10s秒,所以磁盘超阈值或者降到阈值以下,或者通过gs_guc调整阈值,CN、DN的只读状态可能最长会延迟600秒才变化,请耐心等待。

如果想马上去掉只读限制,除了清理磁盘或调整阈值外,手动设置对应的CN、DN的guc参数。

DN、CN设置只读和取消只读参数:

gs_guc reload -Z datanode -N nodename -D dataPath -c 'default_transaction_read_only = on' 设置DN只读

gs_guc reload -Z datanode -N nodename -D dataPath -c 'default_transaction_read_only = off' 取消DN只读

 

gs_guc reload -Z coordinator -N nodename -D dataPath -c 'default_transaction_read_only = on' 设置CN只读

gs_guc reload -Z coordinator -N nodename -D dataPath -c 'default_transaction_read_only = off' 取消CN只读

 

...全文
140 回复 打赏 收藏 举报
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
相关推荐
发帖
Gauss松鼠会

3.2w+

社区成员

汇集数据库的爱好者和关注者,大家共同学习、探索、分享数据库前沿知识和技术,像松鼠一样剥开科学的坚果;交流Gauss及其他数据库的使用心得和经验,互助解决问题,共建数据库技术交流圈。
数据库数据仓库 企业社区 北京·海淀区
社区管理员
  • Gauss松鼠会
加入社区
帖子事件
创建了帖子
2022-11-23 09:24
社区公告

欢迎大家同时关注Gauss松鼠会专家酷哥。

https://www.zhihu.com/people/ku-ge-78-98