redis-shake4迁移数据(蛮好用)

redis-shake下载地址:https://github.com/tair-opensource/RedisShake/releases

测试环境redis需要从公有云迁移到私有云,就用redis-share测试一下。

下载后解压(就两个文件,执行文件和配置文件):

 

[root@gcv-x-test-sharedb-oracle redis]# cat shake.toml
##我只需要复制db0得数据,然后目标库存到db42
function = """
shake.log(DB)
if DB == 1
then
    return
end

local db1 = 0
local db2 = 42

if DB == db1 then
  DB = db2
elseif DB == db2 then
  DB = db1
end
shake.call(DB, ARGV)

"""

##需要PSync 协议,但是一般云厂商都是禁用了SYNC和PSYNC命令
#[sync_reader]
#cluster = false            # set to true if source is a redis cluster
#address = "10.27.137.74:6379" # when cluster is true, set address to one of the cluster node
#username = ""              # keep empty if not using ACL
#password = "xxxxxx"              # keep empty if no authentication is required
#tls = false
#sync_rdb = true # set to false if you don't want to sync rdb
#sync_aof = true # set to false if you don't want to sync aof

##我只能用这个模式scan
[scan_reader]
cluster = false            # set to true if source is a redis cluster
address = "10.27.137.74:6379" # when cluster is true, set address to one of the cluster node
username = ""              # keep empty if not using ACL
password = "xxxxx"              # keep empty if no authentication is required
ksn = false                # set to true to enabled Redis keyspace notifications (KSN) subscription
tls = false

# [rdb_reader]
# filepath = "/tmp/dump.rdb"

[redis_writer]
cluster = false            # set to true if target is a redis cluster
address = "10.251.93.8:6379" # when cluster is true, set address to one of the cluster node
username = ""              # keep empty if not using ACL
password = "5xxx"              # keep empty if no authentication is required
tls = false


[advanced]
dir = "data"
ncpu = 2        # runtime.GOMAXPROCS, 0 means use runtime.NumCPU() cpu cores
pprof_port = 0  # pprof port, 0 means disable
status_port = 0 # status port, 0 means disable

# log
log_file = "shake.log"
log_level = "info"     # debug, info or warn
log_interval = 5       # in seconds

# redis-shake gets key and value from rdb file, and uses RESTORE command to
# create the key in target redis. Redis RESTORE will return a "Target key name
# is busy" error when key already exists. You can use this configuration item
# to change the default behavior of restore:
# panic:   redis-shake will stop when meet "Target key name is busy" error.
# rewrite: redis-shake will replace the key with new value.
# ignore:  redis-shake will skip restore the key when meet "Target key name is busy" error.
rdb_restore_command_behavior = "panic" # panic, rewrite or skip

# redis-shake uses pipeline to improve sending performance.
# This item limits the maximum number of commands in a pipeline.
pipeline_count_limit = 1024

# Client query buffers accumulate new commands. They are limited to a fixed
# amount by default. This amount is normally 1gb.
target_redis_client_max_querybuf_len = 1024_000_000

# In the Redis protocol, bulk requests, that are, elements representing single
# strings, are normally limited to 512 mb.
target_redis_proto_max_bulk_len = 512_000_000

# If the source is Elasticache or MemoryDB, you can set this item.
aws_psync = "" # example: aws_psync = "10.0.0.1:6379@nmfu2sl5osync,10.0.0.1:6379@xhma21xfkssync"

[module]
# The data format for BF.LOADCHUNK is not compatible in different versions. v2.6.3 <=> 20603
target_mbbloom_version = 20603

 

 

然后执行即可:

 日志:

 

工具蛮好用的,简单易懂实用。

参数和原理可看官网说明,写的蛮清楚得。https://tair-opensource.github.io/RedisShake/zh/guide/introduction.html

 

posted @ 2024-08-30 10:43  阿西吧li  阅读(161)  评论(1编辑  收藏  举报