2.19 智能计算reload
我们对reload @@config_all 做了重构,增加了对dbGroup/dbInstance的变化计算,使得reload行为对整个系统的影响变到最小。
变更名称的dbGroup/dbInstance,等效于删除旧的dbGroup/dbInstance,新增新的dbGroup/dbInstance
2.19.1 默认reload @@config_all
连接池行为描述:
2.19.1.1 不变的dbGroup
此种情况下,dbGroup连接不发生变化,如果关联的schmea发生变更,在需要使用时候进行连接新建或者偷取并同步上下文的方式进行更新。
2.19.1.2 新增的dbGroup
建立新的连接池供使用
2.19.1.3 删除的dbGroup
遍历当前连接池,如果没有事务正在使用连接,则回收,否则放回后端待回收连接池 (在show @@backend中可以看到放入回收池的时间),等事务结束时候连接被关闭
待回收的连接可以通过 2.0.1.32 recycling_resource 查询到
2.19.1.4 新增的dbInstance
不影响正在使用的连接,新增之后建立新的连接池供使用
2.19.1.5 变更的dbInstance
以往空闲的连接会直接关闭,正在使用中的连接会延迟关闭(可以通过 2.0.1.32 recycling_resource 查询到),也会根据变更后的配置建立新的连接池供使用
2.19.1.6 删除的dbInstance
以往空闲的连接会直接关闭,正在使用中的连接会延迟关闭(可以通过 2.0.1.32 recycling_resource 查询到)
2.19.2 reload @@config_all -f
强制回收所有正在使用的链接
连接池行为描述:
2.19.2.1 不变的dbGroup/dbInstance
此种情况下,dbGroup/dbInstance连接不发生变化,正在使用的连接会被回收
2.19.2.2 新增的dbGroup/dbInstance
建立新的连接池供使用
2.19.2.3 删除的dbGroup/dbInstance
遍历如果当前连接池,如果没有事务正在使用连接,则回收,否则关闭对应的前端连接以及相关的后端连接
2.19.3 reload @@config_all -r
不计算dbGroup/dbInstance的变化,相当于原本所有的连接池会被删除,然后新建所有的连接池
遍历旧连接池,如果没有事务正在使用连接,则回收,否则放回后端待回收连接池 (在show @@backend中可以看到放入回收池的时间),等事务结束时候连接被关闭
待回收的连接可以通过 2.0.1.32 recycling_resource 查询到
2.19.4 reload @@config_all -s
跳过dbGroup连接检查(与节点建立连接,连接成功,检测通过)