redis 扩容相关

redis 学习工作
一:redis扩容机器内存步骤
首先redis内存设置不能超过物理机最大内存的60%
内存配置文件参数为maxmemery改为9493846630
1 确认主从状态正常,从上做bgsave备份dump文件
2 停止从服务,扩容从机内存
3 从机内存扩容完之后修改配置文件内存大小,启动从服务。查看主从复制(查看日志和slave状态为up)
4 主从复制完成以后(查看日志和slave状态为up),主从切换
5 切换完成查看日志确认,删除从机dump文件后停止从机,扩机器内存,改配置文件内存大小
6 启动从机,查看主从同步(查看日志和slave状态为up)

涉及命令:
./redis-cli bgsave && tail -f redis.log
./redis-cli info replication
./redis-cli info
Redis主从切换:只需在一台sentinel即可127.0.0.1:26379>sentinel failover shardname

二:扩容shard
这里简要说明步骤:
1 停业务
2 删除所有shard
./redis-cli -h 192.168.1.1 -p 26379 sentinel remove shardname (192.168.1.1为sentinel地址,三台中的其中一台)

3 获取rdb文件
/opt/zedis/redis-cli -h 10.105.53.173 -p 6379 --rdb /opt/migration/1_5/dump_10.105.53.173.rdb

4 清理每个rdb文件中的脏数据

5 先把所有rdb进行融合成一个rdb,再对新生成rdb进行裁剪成43个新rdb

6 执行裁剪过程时,分别登录到所有 老 shard 主服务器上,备份rdb文件
sudo ssh redisuser@XX.XX.XX.XX “mv /dump.rdb /dump.rdb_0726”

7 停止zedis

/opt/zedis/redis-cli -h XX.XX.XX.XX -p 6379 shutdown

8 传输所有rdb到对应的服务器上 /opt/logs/dump.rdb 并且重启

9 重新添加主从关系
此步骤通过查看主上slave 个数和ip确认正确的,则不需重新添加
添加命令:/opt/zedis/redis-cli -h 从ip -p 6379 slaveof 主ip 6379

10 注册所有shard
./redis-cli -h 192.168.226.36(sentinel ip) -p 26379 sentinel monitor shardname XX.XX.XX.XX(master ip) 6379 2

11 修改SCM配置,重启业务验证业务

三: redis主从复制失败问题
1、问题概述

reids 从机服务器宕机,当机器恢复,启动redis服务,redis从机自动发布全量同步且数据量超过5G以上,同步完一次,redis继续发出全量同步命令,循环进行同步全量,CPU消耗有告警。

2、现象描述

redis从机收到了主机的dump.rdb传输过来的文件,但是读取完毕后,从机继续向主机发起全量同步命令,并报IO error,
另一个错误是主机超时,主机在一定时间内ping从机无法得到回应,导致主机认为从机宕机,当从机恢复继续发出全量同步命令。
同时伴有CPU消耗增高。

3、问题跟踪及分析

这个问题是由redis配置文件中一个参数设置导致,在redis.conf中:
client-output-buffer-limit slave 256mb 64mb 60
这个参数配置,这个参数代表含义:负责发数据给slave的client,如果buffer超过256m或者连续60秒超过64m,就会被立刻强行关闭,就会导致循环同步

4、解决方案

设置client-output-buffer-limit 增加buffer和超时时间,可以在redis运行中设置(2.8.8版本中可以),删除已经生成的dump.rdb文件(根据情况,也可以不删),
再执行:
/opt/redis-2.8.8/src/redis-cli suningconfig set client-output-buffer-limit ‘slave 2147483648 1073741824 1200’

这样再次进行同步,循环同步数据问题解决.本次问题中,同步数据量为8GB,要根据数据量的大小来合理设置参数.
在数据量低于7G情况下,可以不修改参数尝试去同步,但是数据量在超过7G(包括7GB),必须修改上面参数,主机先修改,从机再修改,删除dump文件,重新同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值