首页 > 数据库 >Redis迁移工具redis-migrate-tool的使用

Redis迁移工具redis-migrate-tool的使用

时间:2023-11-08 16:14:34浏览次数:37  
标签:migrate Redis tool redis source rdb total

背景 : 公司由于以前没有同意规划 , 导致出现好几个redis实例 , 现在需要整合到一起 , 查到还有redis-migrate-tool工具 , 所以把使用情况写一下 , 以备后用参考

 

一、下载编译

# 从git库直接拉取
git clone https://github.com/vipshop/redis-migrate-tool.git

# CentOS安装必要的包(其他Linux版本请自己查询安装方法)
yum -y install automake libtool autoconf bzip2 # 编译并安装 cd redis-migrate-tool autoreconf -fvi ./configure make #能出现帮助 , 说明编辑安装成功 src/redis-migrate-tool -h

 

二、写配置文件

配置文件样例 : 

[source]
type: redis cluster
servers:
- 172.25.2.118:6380
- 172.25.2.118:6381
redis_auth: {redis密码}
 
[target]
type: single
servers:
- 172.25.2.118:6379
redis_auth: {redis密码}
 
[common]
listen: 0.0.0.0:8888
threads: 8
step: 1
mbuf_size: 512
source_safe: true

 

source和target详解 (待迁移 和 迁入数据源) : 

;Redis RDB备份模式
[source]
type: rdb file
servers:
 - /data/redis/dump1.rdb
 - /data/redis/dump2.rdb
 
 ;Redis AOF备份模式
[source]
type: aof file
servers:
 - /data/redis/dump1.aof
 - /data/redis/dump2.aof
 
;Redis 单机实例
[source]
type: single
servers:
 - 172.25.2.118:6379
; redis密码
redis_auth: 111

;Redis Cluster集群模式
[target]
type: redis cluster
servers:
 - 127.0.0.1:6379
 - 127.0.0.1:6380
; redis密码
redis_auth: 111
 
;Redis Twemproxy集群模式
 [target]
type: twemproxy
;hash模式包括 : one_at_a_time md5 crc16 crc32 crc32a fnv1_64 fnv1a_64 fnv1_32 fnv1a_32 hsieh murmur jenkins
hash: fnv1a_64
; {} or $$
hash_tag: "{}"
;distribution包括 : ketama , modula ,random
distribution: ketama
servers:
- 127.0.0.1:6380:1 server1
- 127.0.0.1:6381:1 server2

 

common详解

common
   listen: 监听的地址和端口(name:port或ip:port)。默认是127.0.0.1:8888
   max_clients:该监听端口客户端最大数量。默认是100
   threads: redis-migrate-tool能够使用的最大的线程数量。默认是cpu核数。
   step: 解析请求的级别。配的越大,迁移越快,消耗内存越多。默认是1
   mbuf_size: Mbuf的大小。默认是512
   noreply: boolean。决定是否要检测目标redis的回复。默认是false。
   source_safe: boolean。是否保护源redis的内存安全。如果设置为true,那么该工具保证一台机器上同一时刻只有一个redis在生成rdb文件。除此之外,设置‘source_safe:true’时,所使用的线程可能会比你设置的要少。默认是true
   dir: 工作目录,用于存储文件(例如rdb文件)。默认是当前目录。
   filter: 过滤key,如果不匹配表达式,则不迁移。表达式Glob-style(通配符)。默认是空。

  filter支持通配符表达式:

    h?llo 匹配 hello, hallo 和 hxllo
    h*llo 匹配 hllo 和 heeeello
    h[ae]llo 匹配 hello 和 hallo, 不匹配 hillo
    h[^e]llo 匹配 hallo, hbllo, … 不匹配 hello
    h[a-b]llo 匹配 hallo 和 hbllo

 

三、开始迁移

注意 : 建议配置文件直接使用根目录下的 rmt.conf , 并且执行也是在根目录下执行 , 比如 :

# 开始运行
./src/redis-migrate-tool -c rmt.conf -o log -d

自写其他配置文件 , 使用-c加载 , 有时候会出现无法加载的情况 , 不知道是不是bug 

 

四、查看迁移情况

软件的原理是自己创建一个redis从库, 然后作为从库进行主从迁移 ,

所以根据此原理 , 可用redis-cli进入临时库 , 进行数据查询

# 使用redis-cli进入临时库进行查看
redis-cli -h 127.0.0.1 -p 8888
127.0.0.1:8888> info

 

info命令响应介绍:
Server:

Clients:

version: redis-migrate-tool版本号
os:操作系统名称
multiplexing_api: 多路复用API
gcc_version: gcc版本
process_id: redis-migrate-tool的进程id
tcp_port: redis-migrate-tool监听的tcp端口
uptime_in_seconds: redis-migrate-tool运行的时长。单位秒。
uptime_in_days: redis-migrate-tool运行的时长。单位天。
config_file: redis-migrate-tool配置文件的名称
connected_clients: 当前连接的客户端数量
max_clients_limit: 允许同时连接的最大客户端数量
total_connections_received: 迄今为止接收的连接数量的总数


Group:

source_nodes_count: 源redis的节点数量
target_nodes_count: 目标redis的节点数量


Stats:

all_rdb_received: 是否所有源节点的rdb都已接收完毕。
all_rdb_parsed: 是否所有的源节点rdb文件都已经解析完毕。
all_aof_loaded: 是否所有的源节点aof文件都已经加载完毕。
rdb_received_count: 已经接收源redis节点rdb文件的个数。
rdb_parsed_count: 已经完成解析rdb的个数。
aof_loaded_count: 已经加载完aof的个数。
total_msgs_recv: 从源redis接收到的消息总数。
total_msgs_sent: 发送给目标redis,并已经收到相应的的消息总数。
total_net_input_bytes: 从源redis接收到的数据总大小
total_net_output_bytes: 发送给目标redis的数据总大小
total_net_input_bytes_human: 和total_net_input_bytes相同,转化成可读的格式
total_net_output_bytes_human: 和total_net_output_bytes相同,转化为可读的格式
total_mbufs_inqueue: 来自源redis的mbufs的缓存数据(不包括rdb数据)
total_msgs_outqueue: 待发送给目标redis和已经发送等待响应的消息总数

 

五、迁移异常处理及验证

停止迁移 :  直接把临时库停止即可

$redis-cli -h 127.0.0.1 -p 8888
127.0.0.1:8888> shutdown
OK

shutdown参数 : [second | asap]     

  • seconds: 在redis-migrate-tool退出之前,它把缓冲区的数据发送给目标redis最多用的时长(秒)。默认是10s
  • asap: 不关心缓冲区的数据,直接退出。

该命令会干下面几件事: 

  • 停止从源redis复制数据
  • 试图发送redis-migrate-tool缓冲区中的数据给目标集群
  • 停止redis-migrate-tool并退出

 

验证 : 

# 验证传输情况
src/redis-migrate-tool -c rmt.conf -o log -C redis_check

 

标签:migrate,Redis,tool,redis,source,rdb,total
From: https://www.cnblogs.com/kreo/p/17817282.html

相关文章

  • redis主从+哨兵搭建配置参考
    主节点配置:#绑定的主机地址(ip换成自己机器的地址)bind0.0.0.0#redis进程的端口号port6379#是否开启保护模式,默认开启。要是配置里没有指定bind和密码,开启该参数后,redis只会本地进行访问,拒绝外部访问。要是开启了密码和bind,可以开启;否则最好关闭设置为no。protected-mod......
  • redis安装教程
    转自:https://blog.csdn.net/qq_31960623/article/details/127744435https://blog.csdn.net/wang13679201813/article/details/1318292051、下载及解压https://www.runoob.com/redis/redis-install.html2、启动redis以管理员身份,打开一个cmd窗口, 切换目录到redis安装目......
  • WPF 使用 CommunityToolkit.Mvvm
    参考文档: IntroductiontotheMVVMToolkit-CommunityToolkitsfor.NET|MicrosoftLearn它是一个现代化,快速和模块化的MVVM库,对应用程序的结构或编译规范没有严格的限制。NuGet安装包搜索:CommunityToolkit.Mvvm导入usingCommunityToolkit.Mvvm;使用ObservableObjectpubli......
  • linux 安装redis
    1、redis下载Redis官网:https://redis.io/历史版本下载:http://download.redis.io/releases2、环境依赖:gcc安装:yuminstallgcc-c++版本查看:gcc-v3、解压redis解压:tar-zxvfredis-5.0.7.tar.gz4、编译与安装redis进入目录:cdredis-5.0.7开始编译:make安装到指定目......
  • ArcMap中Cut Polygons Tool工具将一个面图层切割为多个部分
      本文介绍在ArcGIS下属ArcMap软件中,通过“CutPolygonsTool”工具,对一个面要素矢量图层加以手动分割,从而将其划分为指定形状的多个部分的方法。  对于一个面要素矢量文件,有时我们需要对其加以划分,通过手动勾勒新的线条的方式,将其中原本的一个面分割为多个指定的小区域;本文就......
  • Redis为什么快呢?能说一下I/O多路复用吗?
    Redis为什么快呢?Redis的速度⾮常的快,单机的Redis就可以⽀撑每秒十几万的并发,相对于MySQL来说,性能是MySQL的⼏⼗倍。速度快的原因主要有⼏点:1.完全基于内存操作2.使⽤单线程,避免了线程切换和竞态产生的消耗3.基于⾮阻塞的IO多路复⽤机制4.C语⾔实现,优化过的数据结构,基于⼏种......
  • chrome devtool调试中的this指向问题?
    在Chrome开发者工具调试中,`this`的指向可能会有一些问题,特别是在使用箭头函数时。箭头函数的特性之一是它们不会绑定自己的`this`值,而是继承父级作用域的`this`值。这意味着在箭头函数中,`this`实际上是取决于其定义时的上下文,而不是调用箭头函数时的上下文。然而,在Chrom......
  • DocTemplateTool - 可根据模板生成word或pdf文件的工具
    你是否经常遇到这样的场景:产品运营有着大量的报告需求,或者给客户领导展现每周的运营报告?这些文档类的任务可以交给运营同事,他们负责文档排版和样式,你作为开发人员你只需要提供数据源,和一个映射表,告诉制作文档的人哪些字段可供使用。这样一来分工明确,减少了很多不必要的沟通成本。......
  • python连接redis集群写入数据
    环境;Python:3.6.5 需要安装redis-py-cluster模块 #!/usr/bin/envpython#coding=utf-8fromredisclusterimportRedisClusterstartup_nodes=[{"host":"192.168.1.109","port":7001},{"host":"192.168.1.10......
  • redis连接满的问题处理
    redis连接满的问题处理1、ver环境系统登录失败ver环境登录失败,报错:cannotgetresource2、查看日志查看日志发现报错信息:maxnumberofclientsreached尝试登录redis发现无法登录redis,报错信息同上。3、问题排查及处理首先重启redis,使用以下命令查看redis的连接数:infoc......