单集群redis cluster 转 cachecloud 几个月来,遇到一些状况与问题的总结.mysql
默认 cachecloud 底层 db mysql 版本为:MySQL 5.5,升级 mysql 到5.7后出现不兼容sql.例如:web
select any_value(app_id) app_id,instance_id,any_value(instance_host) instance_host,any_value(instance_port) instance_port,count(1) as exceptionCount from app_client_exception_minute_stat
redis
修改 mysql 参数,使其兼容老版本.spring
修改对应 mysql, 咱们选择的就是这个方案.只要修改sql
三个 xml 中不兼容函数便可.api
默认cachecloud-init.sh 初始化机器中 redis 版本为 redis-3.0.7.tar.gz.当我升级 redis 到一个较高版本redis-3.2.11.tar.gz时候.出现 bug. 没法链接到实例.安全
Protected-mode 是为了禁止公网访问redis cache,增强redis安全的。app
它启用的条件,有两个:运维
1) 没有bind IPide
2) 没有设置访问密码
可是咱们的 redis 是内网环境访问,不会暴露给外网.
解决方案,initsql 添加
insert into instance_config(config_key,config_value,info,update_time, type, status) values('protected-mode','no','开启安全模式. redis3.2及以上须要参数',now(),6,1); insert into instance_config(config_key,config_value,info,update_time, type, status) values('protected-mode','no','开启安全模式. redis3.2及以上须要参数',now(),5,1);
对 redis监控数据落地到mysql 表 standard_statistics. 默认系统配置是不开启清理数据.
4个月来,光测试环境就单表32g,670w 数据.
解决: 先联系 db, 人工对表数据清理,后续,开启定时清理.
cachecloud 默认对机器有专门的运维与监控,对机器的 job 没有开启.
解决: find ServerJob, 打开注释代码便可. redis 机器同时加入cachecloud-open-web 中的 nmon(这里看相关文档.)
制做 spring-boot-starter-data-cachecloud中,刚开始是依赖spring-data-redis.1.8.4.RELEASE.后续升级到1.8.7发现, spring-data-redis api 变更.
JedisClusterNodeResourceProvider 构造方法变更
. 后续制做针对1.8.7以上版本的
cachecloud 对水平扩容有些问题.进行了改造.