redis數據遷移教程(使用RedisShake實現不停機遷移十分便捷)

1.我的場景

需要把本地的redis數據上傳到阿里云服務器上面,服務器上redis并沒有開aof持久化,但是將rdb文件上傳至服務器后每次重啟redis,rdb文件會被覆蓋導致無法同同步數據,最終決定使用RedisShake

2.RedisShake介紹

什么是 RedisShake?

RedisShake 是一個用于處理和遷移 Redis 數據的工具,它提供以下特性:

  1. Redis 兼容性:RedisShake 兼容從 2.8 到 7.2 的 Redis 版本,并支持各種部署方式,包括單機,主從,哨兵和集群。
  2. 云服務兼容性:RedisShake 與主流云服務提供商提供的流行 Redis-like 數據庫無縫工作,包括但不限于:
    • 阿里云-云數據庫 Redis 版
    • 阿里云-云原生內存數據庫Tair
    • AWS - ElastiCache
    • AWS - MemoryDB
  3. Module 兼容:RedisShake 與?TairString,TairZSet?和?TairHash?模塊兼容。
  4. 多種導出模式:RedisShake 支持 PSync,RDB 和 Scan 導出模式。
  5. 數據處理:RedisShake 通過自定義腳本實現數據過濾和轉換。

更詳細內容請見官方文檔

3.使用教程

3.1首先下載RedisShake

https://github.com/tair-opensource/RedisShake/releases

  • 解壓后,得到 redis-shake 執行程序和 shake.toml 配置文件。windows系統自行將redis-shake加.exe后綴

3.2 編輯shake.toml配置文件

其中reader,用來對接不同的源端

  • 對于從備份中恢復數據的場景,可以使用?rdb_reader
  • 對于數據遷移場景,優先選擇?sync_reader。一些云廠商沒有提供 PSync 協議支持,可以選擇scan_reader

3.2.1 rdb遷移

# 全局配置
log_file = "shake.log"       # 日志文件路徑
log_level = "info"           # 日志級別:info# 源數據
[rdb_reader]
filepath = "D:/develop/Redis-x64-3.2.100/dump.rdb"  # 你的rdb文件位置
# 目標 Redis 配置# 目標redis
[redis_writer]
cluster = false    # false就是單例, true是集群
address = "192.168.230.131:6379" # 如果cluster為true, 只需要填集群中的任意一個節點地址即可同步到整個集群
username = ""              # ?開了ACL寫用戶名  沒開空著
password = "123456"              # 如果有密碼,開沒開ACL都寫  否則空著
tls = false# 高級配置
[advanced]
pipeline_count_limit = 1024   # 默認管道大小
rdb_restore_command_behavior = "rewrite" # 遇到重復鍵時覆蓋

3.2.2? ? sync Reader

當源端數據庫兼容 PSync 協議時,推薦使用?sync_reader

優勢:數據一致性最佳,對源庫影響小,可以實現不停機的切換

# 全局配置
log_file = "shake.log"       # 日志文件路徑
log_level = "info"           # 日志級別:info# 源數據
[sync_reader]
cluster = false            # set to true if source is a redis cluster
address = "127.0.0.1:6379" # when cluster is true, set address to one of the cluster node
username = ""              # keep empty if not using ACL
password = ""              # keep empty if no authentication is required
tls = false
sync_rdb = true # 是否同步 RDB,設置為 false 時,RedisShake 會跳過全量同步階段
sync_aof = true # 是否同步 AOF,設置為 false 時,RedisShake 會跳過增量同步階段,此時 RedisShake 會在全量同步階段結束后退出# 目標redis
[redis_writer]
cluster = false    # false就是單例, true是集群
address = "192.168.230.131:6379" # 如果cluster為true, 只需要填集群中的任意一個節點地址即可同步到整個集群
username = ""              # ?開了ACL寫用戶名  沒開空著
password = "123456"              # 如果有密碼,開沒開ACL都寫  否則空著
tls = false# 高級配置
[advanced]
pipeline_count_limit = 1024   # 默認管道大小
rdb_restore_command_behavior = "rewrite" # 遇到重復鍵時覆蓋

3.2.3可選項

RedisShake 提供了多種內置的過濾規則,用戶可以根據需要選擇合適的規則。

[filter]
allow_keys = ["user:1001", "product:2001"] # 允許的鍵名
allow_key_prefix = ["user:", "product:"] # 允許的鍵名前綴
allow_key_suffix = [":active", ":valid"] # 允許的鍵名后綴
allow_key_regex = [":\\d{11}:"] # 允許的鍵名正則,11位手機號
block_keys = ["temp:1001", "cache:2001"] # 阻止的鍵名
block_key_prefix = ["temp:", "cache:"] # 阻止的鍵名前綴
block_key_suffix = [":tmp", ":old"] # 阻止的鍵名后綴
block_key_regex = [":test:\\d{11}:"] # 阻止的鍵名正則,11位手機號,前綴為test

如果不設置這些選項,默認允許所有鍵。

[filter]
allow_db = [0, 1, 2]
block_db = [3, 4, 5]

也可以指定遷移具體的庫或者阻止具體的庫, 不寫則默認所有庫進行遷移

3.3 執行redis-shake

redis-shake shake.toml

至此應該成功了,若顯示?redis-shake source db is not doing bgsave! continue.?

可以先看看數據遷移過去沒有,是有概率能遷移過去的,可以考慮從過濾項入手看一下,我將過濾項的allow_db刪掉后就不會出現那個問題了,其余的沒嘗試過請自行探索

4.官方文檔地址

https://tair-opensource.github.io/RedisShake/zh/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/71593.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71593.shtml
英文地址,請注明出處:http://en.pswp.cn/web/71593.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言_數據結構總結4:不帶頭結點的單鏈表

純C語言代碼,不涉及C 0. 結點結構 typedef int ElemType; typedef struct LNode { ElemType data; //數據域 struct LNode* next; //指針域 }LNode, * LinkList; 1. 初始化 不帶頭結點的初始化,即只需將頭指針初始化為NULL即可 void Init…

78.StringBuilder簡單示例 C#例子 WPF例子

利用 StringBuilder 提升字符串操作性能 在 C# 中,字符串是不可變的,這意味著每次修改字符串時都會創建一個新的對象。這種特性雖然保證了安全性,但在頻繁修改字符串的場景中會導致性能問題。StringBuilder 正是為解決這一問題而設計的。 什…

【數據集】社區天氣資訊網絡CoWIN-香港小時尺度氣象數據(含MATLAB處理代碼)

社區天氣資訊網絡CoWIN-香港小時尺度氣象數據 數據概述氣象變量說明數據提取(MATLAB全代碼)輸出WRF所需站點氣溫數據參考數據概述 官網-Community Weather Information Network (CoWIN) data policy CoWIN 提供 2010 - 2024 年 的數據下載,每年數據均可單獨下載。下載數據…

【JAVA架構師成長之路】【Redis】第14集:Redis緩存穿透原理、規避、解決方案

30分鐘自學教程:Redis緩存穿透原理與解決方案 目標 理解緩存穿透的成因及危害。掌握布隆過濾器、空值緩存等核心防御技術。能夠通過代碼實現請求攔截與緩存保護。學會限流降級、異步加載等應急方案。 教程內容 0~2分鐘:緩存穿透的定義與核心原因 定義…

尚硅谷爬蟲note15

一、當當網 1. 保存數據 數據交給pipelines保存 items中的類名: DemoNddwItem class DemoNddwItem(scrapy.Item): 變量名 類名() book DemoNddwItem(src src, name name, price price)導入: from 項目名.items import 類…

LVGL直接解碼png圖片的方法

通過把png文件解碼為.C文件,再放到工程中的供使用,這種方式隨時速度快(應為已經解碼,代碼中只要直接加載圖片數據顯示出來即可),但是不夠靈活,適用于哪些簡單又不經常需要更換UI的場景下使用。如…

【計算機網絡】Socket

Socket 是網絡通信的核心技術之一,充當應用程序與網絡協議棧之間的接口。 1. Socket 定義 Socket(套接字)是操作系統提供的 網絡通信抽象層,允許應用程序通過標準接口(如 TCP/IP 或 UDP)進行數據傳輸。它…

Apache XTable:在數據湖倉一體中推進數據互作性

Apache XTable 通過以多種開放表格式提供對數據的訪問,在增強互作性方面邁出了一大步。移動數據很困難,在過去,這意味著在為數據湖倉一體選擇開放表格式時,您被鎖定在該選擇中。一個令人興奮的項目當在數據堆棧的這一層引入互作性…

anolis8.9-k8s1.32-node-二進制部署

一、系統 # cat /etc/anolis-release Anolis OS release 8.9 # uname -r 5.10.134-18.an8.x86_64 二、從master上拷貝dockers及cri-docker相關文件 # groupadd docker # mkdir /etc/docker# scp -P 4033 root192.168.7.201:/etc/systemd/system/containerd.service /etc/s…

《AJAX:前端異步交互的魔法指南》

什么是AJAX AJAX(Asynchronous JavaScript and XML,異步 JavaScript 和 XML) 是一種用于創建異步網頁應用的技術,允許網頁在不重新加載整個頁面的情況下,與服務器交換數據并局部更新頁面內容。盡管名稱中包含 XML&…

Python 性能優化:從入門到精通的實用指南

Langchain系列文章目錄 01-玩轉LangChain:從模型調用到Prompt模板與輸出解析的完整指南 02-玩轉 LangChain Memory 模塊:四種記憶類型詳解及應用場景全覆蓋 03-全面掌握 LangChain:從核心鏈條構建到動態任務分配的實戰指南 04-玩轉 LangChai…

利用 requestrepo 工具驗證 XML外部實體注入漏洞

1. 前言 在數字化浪潮席卷的當下,網絡安全的重要性愈發凸顯。應用程序在便捷生活與工作的同時,也可能暗藏安全風險。XXE(XML外部實體)漏洞作為其中的典型代表,攻擊者一旦利用它,便能竊取敏感信息、掌控服務…

FreeRTOS第17篇:FreeRTOS鏈表實現細節05_MiniListItem_t:FreeRTOS內存優化

文/指尖動聽知識庫-星愿 文章為付費內容,商業行為,禁止私自轉載及抄襲,違者必究!!! 文章專欄:深入FreeRTOS內核:從原理到實戰的嵌入式開發指南 1 為什么需要迷你列表項? 在嵌入式系統中,內存資源極其寶貴。FreeRTOS為滿足不同場景需求,設計了標準列表項(ListItem_…

Spring 無法解決循環依賴的 5 種場景

一、構造器注入引發的循環依賴 1. 問題復現 Component public class ServiceA {private final ServiceB serviceB;Autowiredpublic ServiceA(ServiceB serviceB) { // 構造器注入this.serviceB serviceB;} }Component public class ServiceB {private final ServiceA servic…

Core Vision Kit(基礎視覺服務)

文章目錄 一、Core Vision Kit簡介場景介紹約束與限制二、通用文字識別三、人臉檢測一、Core Vision Kit簡介 Core Vision Kit(基礎視覺服務)是機器視覺相關的基礎能力,例如通用文字識別(即OCR,Optical Character Recognition,也稱為光學字符識別)、人臉檢測、人臉比對…

第TR3周:Pytorch復現Transformer

🍨 本文為🔗365天深度學習訓練營中的學習記錄博客 🍖 原作者:K同學啊 Transformer通過自注意力機制,改變了序列建模的方式,成為AI領域的基礎架構 編碼器:理解輸入,提取上下文特征…

FreeRTOS 任務間通信機制:隊列、信號量、事件標志組詳解與實驗

1. FreeRTOS 消息隊列 1.1 簡介 ? 隊列是 任務間通信的主要形式,可用于在任務之間以及中斷與任務之間傳遞消息。隊列在 FreeRTOS 中具有以下關鍵特點: 隊列默認采用 先進先出 FIFO 方式,也可以使用 xQueueSendToFront()實現 LIFO。FreeRT…

【虛擬化】Docker Desktop 架構簡介

在閱讀前您需要了解 docker 架構:Docker architecture WSL 技術:什么是 WSL 2 1.Hyper-V backend 我們知道,Docker Desktop 最開始的架構的后端是采用的 Hyper-V。 Docker daemon (dockerd) 運行在一個 Linux distro (LinuxKit build) 中&…

Unity光照之Halo組件

簡介 Halo 組件 是一種用于在游戲中創建光暈效果的工具,主要用于模擬光源周圍的發光區域(如太陽、燈泡等)或物體表面的光線反射擴散效果。 核心功能 1.光暈生成 Halo 組件會在光源或物體的周圍生成一個圓形光暈,模擬光線在空氣…

Flink深入淺出之01:應用場景、基本架構、部署模式

Flink 1?? 一 、知識要點 📖 1. Flink簡介 Apache Flink — Stateful Computations over Data StreamsApache Flink 是一個分布式大數據處理引擎,可對有界數據流和無界數據流進行有狀態的計算。Flink 能在所有常見集群環境中運行,并能以…