一、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
网友评论