Redis数据迁移

2023-05-29  本文已影响0人  青水山

一、redis-migrate-tool

唯品会开源的redis数据迁移工具.配置简单,使用方便。
下载地址:(https://github.com/vipshop/redis-migrate-tool)

主要支持以下几种迁移:
rmt_s_c.conf   主从到集群
rmt_s_s.conf   主从到主从
rmt_c_c.conf  集群到集群
rmt_r_s.conf   rdb到主从
rmt_r_c.conf  rdb到集群

./src/redis-migrate-tool -d -c rmt_now.cnf -o 20190305.log     
密码参数 redis_auth
为了避免主机内存不足,同时做bgsave会有问题,可以配置线程数量
-T, --thread=N : set how many threads to run the job(default: 24)

自带抽样检测:
./src/redis-migrate-tool -C redis_check -c rmt_now.cnf -o 20190305.log

二、redis-shake

阿里出品,稳定性比rmt要高,支持5.0版本的数据迁移。
支持redis standalone、cluster、sentinel的数据迁移。
下载地址:(https://github.com/alibaba/RedisShake)

配置文件
parallel = 6   --并行数量配置

这个地方,source.type 是集群模式;source.address和target.address配置要么是全部的主实例或者全部从实例信息
也可以配置为如下,源端配置一个从节点,目的端必须是一个主节点
source.type = cluster
source.address = slave@172.18.61.130:6390
source.password_raw = xxxxx

target.type = cluster
target.address = master@10.4.49.11:6384
target.password_raw = xxxxx
target.version = 4.0.9   --目标侧版本

启动方式:

nohup ./redis-shake.linux -conf=redis-shake-c-c.conf -type=sync &

三、redis-port

redis-port 最初是 codis 项目的附属工具。后来被单独拆分维护。

场景:自建cluster 迁移到uc-分布式redis

uc-分布式redis 版本为3.2

1、原cluster 的slave 节点信息

**cat info.sql**

10.10.144.173:6380
10.10.144.173:6382
10.10.129.169:6381
10.10.129.169:6382
10.10.132.128:6382

**cat redis.sh**

#!/bin/bash
while read line 
do
#nohup /data/bak/redis-port_4.0/redis-sync $line -t 10.19.125.116:6379 --tmpfile-size=10gb &

nohup /data/bak/redis-port_4.0/redis-port sync --psync -f $line -t 10.19.31.216:6379 &
sleep 120
done</data/bak/info.sql

**#帮助**

**[https://github.com/CodisLabs/redis-port](https://github.com/CodisLabs/redis-port)**

[https://docs.ucloud.cn/uredis/guide/clustermigration](https://docs.ucloud.cn/uredis/guide/clustermigration)

./redis-sync --help
Usage:
redis-sync [--ncpu=N] (--master=MASTER|MASTER) --target=TARGET [--db=DB] [--tmpfile-size=SIZE [--tmpfile=FILE]]
redis-sync --version

Options:
-n N, --ncpu=N Set runtime.GOMAXPROCS to N.
-m MASTER, --master=MASTER The master redis instance ([auth@]host:port).
-t TARGET, --target=TARGET The target redis instance ([auth@]host:port).
--db=DB Accept db = DB, default is *.
--tmpfile=FILE Use FILE to as socket buffer.
--tmpfile-size=SIZE Set FILE size. If no --tmpfile is provided, a temporary file under current folder will be created.

Examples:
$ redis-sync -m 127.0.0.1:6379 -t 127.0.0.1:6380
$ redis-sync 127.0.0.1:6379 -t [passwd@127.0.0.1](mailto:passwd@127.0.0.1):6380
$ redis-sync 127.0.0.1:6379 -t [passwd@127.0.0.1](mailto:passwd@127.0.0.1):6380 --db=0
$ redis-sync 127.0.0.1:6379 -t [passwd@127.0.0.1](mailto:passwd@127.0.0.1):6380 --db=0 --tmpfile-size=10gb
$ redis-sync 127.0.0.1:6379 -t [passwd@127.0.0.1](mailto:passwd@127.0.0.1):6380 --db=0 --tmpfile-size=10gb --tmpfile ~/sockfile.tmp

上一篇 下一篇

猜你喜欢

热点阅读