海联网: Redis 异构集群数据在线迁移工具 Redis-Migrate-Tool

来源:来自网络    作者:海联网    人气:    发布时间:2017-02-28    

摘要: Redis-Migrate-Tool(后头都简称RMT),是唯品会开源的redis数据迁移工具,主要用于异构redis集群间的数据在线迁移,即数据迁移进程中源集群仍可以正常接管业务读写恳求,无业务中断处事时间。这篇blog主要内容包罗工具特性简介、使用要领以及寄望的要点。关于实现的道理,可以自行阅读源码理解可能联系我们交换。

今朝该项目已经开源在GitHub上( https://github.com/vipshop/redis-migrate-tool  链接入口可点击原文阅读)。

一、RMT特性 1、异构集群彼此之间的迁移

支持下面几种异构集群之间的数据迁移和同构集群扩容/缩容。

1)单个redis到twemproxy/cluster迁移;

2)twemproxy到twemproxy/cluster迁移;

3)cluster到twmeproxy/cluster迁移。

2、在线迁移

RMT启动后模拟成redis slave,恳求master的全量数据和增量数据。RMT收到数据之后剖析成redis协议花样的oplog(写节制),然后发送给方针集群。有两种恳求方法,source_safe: true,对付统一ip上的redis,逐个的哀谴责量数据(RDB);source_safe: false,并行恳求同步全量数据。source_safe: false时,需要寄望多个源redis地址的统一主机是否有足够的内存 和 RDB 并发落盘时的 IOPS 性能。

3、从AOF 或 RDB规复数据

如果在线集群数据全部丢失,不要方,RMT可以帮你从备份的 AOF 和 RDB 文件规复到方针集群。

4、数据过滤

可以过滤算法上不属于源集群的脏数据,好比有人绕过twemproxy,非正常方法直接向后端redis写入数据。还可以在配置文件[common]中使用filter参数,过滤掉不需要的数据。

二、使用要领

下面手把手教你使用 RMT,包罗安装、配置、监控另有业务在线切换方法。

1、RMT安装

github开源地点: https://github.com/vipshop/redis-migrate-tool

安装:

海联网: Redis 异构集群数据在线迁移工具 Redis-Migrate-Tool

天生的执行文件在src目录下,使用"-h"选项查察使用要领。

2、RMT配置文件

RMT的配置主要由三部门构成,数据源[source],方针集群[target],通用配置部门[common]。

RMT对源集群的范例并不敏感,对每个redis节点伪装成一个slave。因而 twemproxy和cluster集群,可以使用 single 和 cluster 范例。发起配置成对应的 twemproxy 可能 cluster范例。有两方面浸染:1)RMT在数据迁移时,可以按照 twemproxy(hash)可能cluster(slots)数据漫衍法则,过滤掉原本不属于该节点的数据;2)当源集群范例是cluster时,只用配置一个节点,简化配置。

方针集群,由于差别数据漫衍法则需要执行差此外写入逻辑,因而配置很是严谨。非凡是tw集群,迁移到方针集群的server配置需要和twemproxy中保持一致,包罗hash算法、数据漫衍算法、节点的ip和port、权重、节点的名字。

部门配置下面会详细讲授,完整配置请参考github( https://github.com/vipshop/redis-migrate-tool#configuration )。

2.1、redis/twemproxy到twemproxy

海联网: Redis 异构集群数据在线迁移工具 Redis-Migrate-Tool

[source]和[taget] 由集群范例type和redis节点server构成。[source] type可以支持single/twemproxy/cluster/aof file/rdb file 五种范例。[target]中的type支持single/twemproxy/cluster/rdb file 四种范例。

对付twemproxy集群,必须设置 hash、distribution、servers等参数,而且和方针集群的twemproxy一模一样(敲黑板)。前几天,有某站公司的伴侣问,RMT迁移之后,存在数据读取不到,0.0。了解之后,发明是 target部门和twemproxy配置纷歧致导致。这也是写这篇 使用文档初志和动力,怕坑到更多使用这个开源软件的伴侣。

在[common]中,一些参数主要浸染如下,其他参数参考GitHub( https://github.com/vipshop/redis-migrate-tool#common

海联网: Redis 异构集群数据在线迁移工具 Redis-Migrate-Tool

2.2、cluster集群到cluster集瘸庠皎移

海联网: Redis 异构集群数据在线迁移工具 Redis-Migrate-Tool

[source] 和 [target]只需配置集群的一个节点。当然[source]部门cluster也可以配置成如下形式。

海联网: Redis 异构集群数据在线迁移工具 Redis-Migrate-Tool

2.3、cluster到twemproxy的迁移

海联网: Redis 异构集群数据在线迁移工具 Redis-Migrate-Tool

twemproxy 到 cluster的迁移,作为训练题,你们本身测试吧

2.4、从AOF 和 RDB中规复数据

海联网: Redis 异构集群数据在线迁移工具 Redis-Migrate-Tool

3、RMT迁移

使用下面的呼吁就可以开始迁移数据

4、调查迁移状态

使用redis-cli可以连接 rmt.conf 中配置的端口,执行info呼吁,就可以调查迁移的状态。

total_msgs_outqueue可以鉴定是否有oplog在行列中期待处理惩罚,如果total_msgs_outqueue>0,请担任期待。

海联网: Redis 异构集群数据在线迁移工具 Redis-Migrate-Tool

5 RMT查验源集群和方针集群的差异

海联网: Redis 异构集群数据在线迁移工具 Redis-Migrate-Tool

在业务切换到方针处事器之前,可使用 RMT 抽样查抄数据的一致性,默认抽样1000个key。

6 如何完成业务切换?

如果是异构集群的迁移,变动redis驱动/客户端和修改代码,从头发布是肯定的工作。如果是同构集群,做配置发布就可以。如果没有做重开导布,期待源集群没有连接之后,可以封闭RMT历程(kill)。可能重启应用,强制断开长连接。

三、寄望事项

1、重要的事说三遍,RMT迁移数据到twemproxy,需要保持rmt.conf 中 [target]  hash、distribution、servers 三个参数和方针集群的twemproxy配置严格一致。

2、迁移中和业务切换之前,请重复调查“-o rmt.log”日志信息,确认是否有异常。

3、业务切换之前,请充实查抄,非凡是数据的一致性。

4、RMT 发起部署在单独空暇呆板上,同目的集群在统一个网段(跨机房迁移数据,可以进步迁移速度)。千万不要部署在源集群地址的呆板,防备资源不敷,好比内存,带宽,海联网,IOPS。

5、寄望RDB传输是否超时;

6、redis client buf中的slave项,设置足够大的buffer size和超时时间。

“唯技能”一档专为技能人发声的民众号

欢迎投稿!!

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

责任编辑:海联网

频道精选

最火资讯