唯品會 redis-migrate-tool redis 遷移工具翻譯
阿新 • • 發佈:2018-11-06
vipshop/redis-migrate-tool,是唯品會開發的一個工具,用於在 redis 之間遷移資料。 /* 最大的坑: Mac 上不能遷移,redis_check、redis_testinsert 命令沒反應。redis 需要 auth 密碼的話,也通不過(費了我不是一點點的時間...) 配置本地多個 redis 測試 切換本地多個低版本 redis 進行測試 ... 都沒用 ... 這裡再記錄一個命令: brew switch redis 3.2.3/4.0.11 // brew 切換 redis 不同版本 */ 依賴: automake libtool autoconf bzip2 安裝: git clone
[email protected]:vipshop/redis-migrate-tool.git cd redis-migrate-tool autoreconf -fvi ./configure make 檢視是否安裝成功,幫助命令: src/redis-migrate-tool -h 執行: src/redis-migrate-tool -c rmt.conf -o log -d 警告: 在執行工具前,確保 'source' redis 伺服器,有足夠的記憶體,允許至少一個 redis 生成 rdb 檔案。 如果 'source' redis 伺服器,有足夠大的記憶體,允許所有 redis 同時生成 rdb 檔案,可以設定 rmt.conf 中 'source_safe: false' 不被支援的 redis 命令: 不支援以下命令,傳播到 'target' redis 伺服器,因為這些命令中的鍵,可能跨越不同的 'target' redis 伺服器節點: RENAME,RENAMENX,RPOPLPUSH,BRPOPLPUSH,FLUSHALL,FLUSHDB,BITOP,MOVE,GEORADIUS,GEORADIUSBYMEMBER,EVAL,EVALSHA,SCRIPT,PFMERGE 配置: 配置檔案由3部分組成: source target common source 和 target 可用配置項 type - redis 型別,可選值如下: single twemproxy redis cluster rdb file aof file servers - 組內的 redis 伺服器列表。如果 type 是 'twemproxy',則與 twemproxy 配置檔案相同。如果 type 是 rdb 檔案,這裡填寫 rdb 檔名。 redis_auth - 連線 redis 伺服器時進行身份驗證 timeout - redis 伺服器 讀/寫 的超時時間(以毫秒為單位),預設為 120000。(注意:目前只有 'source' 配置部分可用) hash - hash 函式型別。(注意:只可用於 type 為 'twemproxy'),可選值有: one_at_a_time md5 crc16 crc32(crc32的實現與 libmemcached 相容) crc32a(根據規範糾正crc32實現) fnv1_64 fnv1a_64 fnv1_32 fnv1a_32 hsieh murmur jenkins hash_tag - 雙字串,指定用於 hash 的祕鑰部分。例如:{} 或 $$。只要標籤中的鍵相同, hash_tag 就可以將不同的鍵對映到同一伺服器。(注意:只可用於 type 為 'twemproxy') distribution - 祕鑰分發模式。(注意:只可用於 type 為 'twemproxy') ketama modula random common 可用配置項 listen - 監聽地址和埠(name:port 或 ip:port)。預設是:127.0.0.1:8888(redis-migrate-tool,而非 redis-cli) max_clients - 監聽埠可連線的最大客戶端個數。預設是:100 threads - redis-migrate-tool 可使用的最大執行緒數。預設是:CPU核心數 step - 解析請求的步驟。數字越大,遷移越快,但是使用的記憶體也越多。預設是:1 mbuf_size - 請求的 Mbuf 大小。預設是:512 noreply - 布林型別,是否檢查 'target' redis 組回覆。預設是:false source_safe - 布林型別,用於保護 'source' redis 組伺服器的記憶體安全。設定為 true,會保證每次、在組內的同一臺伺服器上,只有一個 redis 來生成 rdb 檔案。此外,'source_safe: true' 可能會使用比你設定的執行緒數,更少的執行緒。預設是:true dir - 工作目錄,用來儲存檔案(例如:rdb 檔案)。預設是:當前目錄 filter - 過濾不匹配的 'key'。支援 'Glob' 風格。預設是:NULL ? * [ae] [^e] [a-b] \ - 轉義特殊字元 狀態: 可以使用 redis-cli 來連線 redis-migrate-tool。監聽地址和埠,可以在 'common' 配置塊中設定 連線 'redis-migrate-tool':(注意:該命令同 redis-cli 的命令一樣,只是埠不同,得非常注意!!) redis-cli -h 127.0.0.1 -p 8888 info - 顯示 Server、Clients、Memory、Group、Stats 狀態 shutdown [seconds|asap] 作用: 停止從 'source' redis 的複製 嘗試將 redis-migrate-tool 的快取資料,傳送給 'target' redis redis-migrate-tool 停止並退出 引數: seconds - redis-migrate-tool 在退出前,可用於給 'target' redis 傳送快取資料的最大秒數。預設是:10s asap - 忽略快取資料,立即退出 檢查資料: 遷移完成後,可以使用 'redis_check' 命令,來檢查 'source' 組 和 'target' 組的資料是否一致。預設只檢查 1000 個key src/redis-migrate-tool -c rmt.conf -o log -C redis_check 如果想檢查更多的 key,使用 src/redis-migrate-tool -c rmt.conf -o log -C "redis_check 200000" 插入一些 key,用於測試: 使用 'redis_testinsert' 命令。預設只插入 1000 個key src/redis-migrate-tool -c rmt.conf -o log -C "redis_testinsert" 如果想插入更多的 key,使用 src/redis-migrate-tool -c rmt.conf -o log -C "redis_testinsert 30000" 如果只想插入'string' 型別的 key,使用: src/redis-migrate-tool -c rmt.conf -o log -C "redis_testinsert tring" 如果想插入某些指定型別的 key,使用: src/redis-migrate-tool -c rmt.conf -o log -C "redis_testinsert string|set|list 10000"