前言
单集群redis cluster 转 cachecloud 几个月来,遇到一些情况与问题的总结.
版本问题
mysql 升级到5.7
默认 cachecloud 底层 db mysql 版本为:MySQL 5.5,升级 mysql 到5.7后出现不兼容sql.例如:
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
解决方案1
修改 mysql 参数,使其兼容老版本.
解决方案2
修改对应 mysql, 我们选择的就是这个方案.只要修改
- AppStatsDao.xml
- AppClientCostTimeTotalStatDao.xml
- AppClientExceptionStatDao.xml
三个 xml 中不兼容函数即可.
redis 版本问题
默认cachecloud-init.sh 初始化机器中 redis 版本为 redis-3.0.7.tar.gz.当我升级 redis 到一个较高版本redis-3.2.11.tar.gz时候.出现 bug. 无法连接到实例.
Protected-mode 是为了禁止公网访问redis cache,加强redis安全的。
它启用的条件,有两个:
1) 没有bind IP
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 监控数据的无限增加问题.
对 redis监控数据落地到mysql 表 standard_statistics. 默认系统配置是不开启清理数据.
4个月来,光测试环境就单表32g,670w 数据.
解决: 先联系 db, 人工对表数据清理,后续,开启定时清理.
机器监控的问题
cachecloud 默认对机器有专门的运维与监控,对机器的 job 没有开启.
解决: find ServerJob, 打开注释代码即可. redis 机器同时加入cachecloud-open-web 中的 nmon(这里看相关文档.)
兼容 spring-data-redis 遇到的问题
制作 spring-boot-starter-data-cachecloud中,刚开始是依赖spring-data-redis.1.8.4.RELEASE.后续升级到1.8.7发现, spring-data-redis api 变动.
JedisClusterNodeResourceProvider 构造方法变动
.
后续制作针对1.8.7以上版本的
redis水平扩容的问题
cachecloud 对水平扩容有些问题.进行了改造.
来源:oschina
链接:https://my.oschina.net/u/2309077/blog/1935011