redis-shake 是阿里開源的一個redis 同步工具(redis-migrate-tool比較老了,對一些命令的支持不好,並且官方的版本對應4.X的直接就是不支持)
下載地址: https://github.com/alibaba/RedisShake (直接去下載官方編譯好的tar.gz包即可)
官方文檔: https://yq.aliyun.com/articles/691794
mkdir /root/redis-shake-1.6.3 -pv
tar xf redis-shake.tar.gz -C /root/redis-shake-1.6.3
cd /root/redis-shake-1.6.3
我的修改後的配置文件如下: redis-shake.conf
id = redis-shake
log.file = ./redis-shake.log
log.level = all
pid_path = ./
system_profile = 9310
http_profile = 9320
ncpu = 0
parallel = 32
source.type = standalone # 源redis是個單機版本的
source.address = 10.80.1.9:6389 # 這是我源redis的地址
# source.password_raw = 123456 # 沒有密碼的話, 可以註釋掉這行配置,或者設置 source.password_raw =
source.auth_type = auth
source.tls_enable = false
target.type = standalone # 目標redis 是個sentinel版的,下面 target.address 填sentinel環境下的redis master地址即可
target.address = 10.81.10.9:6390 # 目標redis的master地址
target.password_raw =
target.auth_type = auth
target.db = -1
target.tls_enable = false
rdb.input = local
rdb.output = local_dump
rdb.parallel = 0
rdb.special_cloud =
fake_time =
rewrite = true
filter.db =
filter.key =
filter.slot =
big_key_threshold = 524288000
psync = false
metric = true
metric.print_log = false
heartbeat.url =
heartbeat.interval = 3
heartbeat.external = test external
heartbeat.network_interface =
sender.size = 104857600
sender.count = 5000
sender.delay_channel_size = 65535
keep_alive = 0
scan.key_number = 50
scan.special_cloud =
scan.key_file =
replace_hash_tag = false
extra = false
啓動命令:
./redis-shake -type=sync -conf=redis-shake.conf
數據同步過程到最後上線切換階段, 我們還需要檢驗下數據是否一致。 可以使用配套的工具: redis-full-check
下載地址: https://github.com/alibaba/RedisFullCheck
文檔地址:https://yq.aliyun.com/articles/690463?spm=a2c4e.11153940.blogcont691794.7.50c53f76mTeis6 (文檔從原理到使用介紹得很詳細,這裏就不貼了)
redis-full-check的用法很簡單, 解壓後就一個可執行文件。
mkdir /root/redis-full-check-1.2.3/ -pv
tar xf redis-full-check.tar.gz -C /root/redis-full-check-1.2.3/
cd /root/redis-full-check-1.2.3/
./redis-full-check.linux64 -s 10.80.1.9:6389 -t 10.81.10.9:6390 -p '' -a '' --log=./check.log --result result.log
稍等片刻,就會在目錄下生產幾個文件
這3個result.db.X 文件,就是我們3輪過程中最後產生的文件,可以使用sqlite3程序打開查看裏面的內容。 result.log 是用來記錄不一致結果的。 看 result.log 就可以初步知道哪些key不一致了。