如何移除或修改Apache Ignite中已注册的缓存配置模板
Apache Ignite 2.x 所有稳定版本目前均不支持运行时直接移除或编辑已注册的缓存配置模板,原因是模板注册后会同步到全集群节点的元数据存储中,且会被基于该模板创建的缓存/表依赖,随意修改会导致集群配置不一致,因此原生未开放运行时修改、删除模板的接口。
可用处理方案
- 无重启适配方案:和你目前使用的临时方案逻辑一致,需要不同配置时直接注册带新名称的模板即可,你可以给模板加版本后缀区分,比如
myCacheTemplate_v1、myCacheTemplate_v2,创建表时指定对应版本的模板名即可,不会影响原有基于旧模板创建的表运行。 - 完全删除/修改旧模板的方案:该操作需要重启整个集群,步骤如下:
- 先删除所有基于旧模板创建的SQL表、缓存资源,确认无任何资源依赖该旧模板
- 停止集群所有节点
- 清理所有节点的工作目录(默认路径为节点运行目录下的
work文件夹,存储集群元数据),如果对Ignite元数据结构熟悉,也可以直接删除元数据中对应旧模板的条目,新手不建议直接操作元数据 - 注册调整后的同名新模板,再重新启动整个集群即可
- 更高灵活度的替代方案:创建SQL表时无需依赖预注册的模板,直接在CREATE TABLE语句的WITH子句中指定所有缓存配置参数,示例如下:
这种方式不需要提前注册任何模板,可随意调整每张表的配置参数,适配性更强。CREATE TABLE my_table ( id INT PRIMARY KEY, name VARCHAR ) WITH BACKUPS=1, CACHE_MODE='REPLICATED', ATOMICITY='TRANSACTIONAL';
内容的提问来源于stack exchange,提问作者kashif sayeed
相关产品推荐
相关产品推荐

