使用redis-dump備份還原redis

2020-08-29 小兵挖DB

redis的備份還原方式主要有以下幾種方式

  • rdb文件遷移
  • redis自帶的dump命令
  • 第三方redis-dump工具

redis-dump工具負責將redis的db,key,ttl,type,value等序列成json格式進行轉儲,基於ruby開發,所以需要ruby環境,而且新版本的redis-dump要求ruby版本須達到2.3以上.

安裝RVM

ruby官方提供了一個管理工具Ruby Version Manager (RVM),該工具提供了一個命令行界面,可以更方便的對ruby進行安裝,管理,以及版本切換等

  1. 安裝GPG密鑰

GPG是一種用來確保終端用戶從軟體提供者下載的軟體是沒有經過第三方篡改的認證籤名技術.

$ gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

安裝GPG密鑰

  1. 安裝RVM

$ \curl -sSL https://get.rvm.io | bash -s stable


安裝rvm

安裝完成後

$ source /home/redis/.rvm/scripts/rvm

通過rvm查看可用的ruby版本,可以看到最新的版本是2.7.0

$ rvm list known

可用的ruby版本


  1. 安裝ruby

$ rvm install ruby 2.7.0


安裝ruby

安裝完成後查看ruby版本

$ ruby --versionruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux]

  1. 安裝redis-dump

$ gem install -V redis-dump

安裝redis-dump

使用redis-dump備份還原redis

查看redis-dump的語法格式

$ redis-dump -h Try: /home/redis/.rvm/gems/ruby-2.7.0/bin/redis-dump show-commandsUsage: /home/redis/.rvm/gems/ruby-2.7.0/bin/redis-dump [global options] COMMAND [command options] -u, --uri=S Redis URI (e.g. redis://hostname[:port]) -d, --database=S Redis database (e.g. -d 15) -a, --password=S Redis password (e.g. -a &39;) -s, --sleep=S Sleep for S seconds after dumping (for debugging) -c, --count=S Chunk size (default: 10000) -f, --filter=S Filter selected keys (passed directly to redis& Keyspacedb0:keys=1,expires=0,avg_ttl=0db1:keys=49,expires=0,avg_ttl=0db2:keys=3328,expires=0,avg_ttl=0db4:keys=405,expires=405,avg_ttl=167605815db6:keys=448,expires=448,avg_ttl=167455723db7:keys=1589,expires=0,avg_ttl=0db8:keys=43298,expires=0,avg_ttl=0db9:keys=2,expires=2,avg_ttl=52991992928db13:keys=554,expires=554,avg_ttl=12676777617

$ redis-dump -u ec1d-userredis-01.ra5wvk.0001.use1.cache.amazonaws.com:6379 --database=4 > db4.json

  1. 還原redis備份資料庫

$ cat db4.json | redis-load 127.0.0.1:6379

驗證數據

$ redis-cli info keyspace39;--compress-debug-sections=zlib& ld --help | grep debug -S, --strip-debug Strip debugging symbols[root@ec1d-userredis-01 ~] ld --help | grep debug -S, --strip-debug Strip debugging symbols --compress-debug-sections=[none|zlib|zlib-gnu|zlib-gabi] Compress DWARF debug sections using zlib[root@ec2d-addrpipeline-tenv-02 ~]# cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core)

注意出現這個現象的系統版本是CentOS7.4,問題也不知道出在哪裡,當然也可以通過yum升級解決這個問題,我索性把系統重裝成CentOS7.6後問題解決了.

相關焦點

  • Redis-Dump:將Redis數據dump成json格式
    【IT168 技術】Redis-Dump是一個將Redis數據導入/導出為json格式數據的小工具,目前還在Alpha版本,目前提供兩個命令,將Redis數據層出成json的redis-dump命令,以及將json文件導入到redis中的redis-load命令,喜歡嘗鮮的同學可以試玩一下。
  • Redis持久化和備份
    2.AOF:持久化記錄伺服器執行的所有寫操作命令,並在伺服器啟動時,通過重新執行這些命令來還原數據集。 AOF 文件中的命令全部以 Redis 協議的格式來保存,新命令會被追加到文件的末尾。3.共存:Redis 還可以同時使用 AOF 持久化和 RDB 持久化。
  • 你不知道的redis三-Redis的持久化機制
    當然就是使用持久化技術持久化(Persistence),即把數據(如內存中的對象)保存到可永久保存的存儲設備中(如磁碟)。持久化是將程序數據在持久狀態和瞬時狀態間轉換的機制。比如JDBC就是一種持久化機制。文件IO也是一種持久化機制。
  • 將ElastiCache Redis遷移到ec2 Linux實例
    以下利用aws的命令行界面創建備份,也可以使用AWS的web操作$ /usr/local/bin/aws elasticache create-snapshot \ --region us-east-1 \ --cache-cluster-id ec1d-userredis-01 \ --snapshot-name dump-20200711
  • Redis教程:Redis持久化方式
    使用 Redis 附帶的 redis-check-aof 程序,對原來的 AOF 文件進行修復: redis-check-aof –x(可選)使用 di -u 對比修復後的 AOF 文件和原始 AOF 文件的備份,查看兩個文件之間的不同之處。
  • Redis內存資料庫-Redis集群
    /redis/master-replica/7000/log/redis.log"databases 16dbfilename dump.rdbdir /home/redis/master-replica/7000/datacluster-enabled yes -- 開啟集群cluster-config-file nodes.confcluster-node-timeout
  • PHP使用redis實現電商秒殺功能
    redis可以看作是一個高性能的MQ。因為它的數據讀寫都發生在內存之中。寫入內存,而不是寫入硬碟。redis是一個緩存系統,數據寫入內存後就返回給客戶端,能夠支持這個特性;所以使用redis就可以輕鬆實現一個強大的秒殺系統。例如:<?
  • 查看redis的Value值大小
    【前言】 最近項目一個需求,需要藉助於redis緩存來實現,發現需要存的value值有些大;究竟有多大那???伴隨這個疑問,開始一場探索之旅。【探索value值大小】 一、安裝redis-rdb-tools(項目地址:github) 二、獲取redis的rdb文件 1、確保redis的配置文件(redis.conf)開啟rdb備份save
  • 吃透redis持久化,媽媽再也不擔心我面試過不了
    持久化介紹redis 提供了兩種方式方式進行數據的持久化(將數據存儲到硬碟中);第一種稱為快照(snapshotting)RDB,它將某一時刻的所有數據都寫入硬碟,所以快照是一次全量備份,並且存儲的數據形式是二進位序列化形式;另一種方式是只追加文件(append-only file)AOF, 它會在執行命令時將命令複製一份到硬碟中
  • Redis持久化RDB 和 AOF的區別
    Snapshot在默認情況下, Redis 將資料庫快照保存在名字為 dump.rdb 的二進位文件中。通過觸發快照的形式,來做到將指定時間間隔內的數據持久化到dump.rdb。例如,可以2分鐘內持久化一次,將對資料庫的寫操作,備份到磁碟上的dump.rdb。如何觸發持久化呢?
  • Redis RDB與AOF模式下的持久化原理
    前言: 在此之前,如果還不了解Redis的,或者不知道怎麼使用Redis,可以參考官網網站:https://redis.io/documentation自行學習,本文主要針對Redis的核心點之一:RDB和AOF持久化模式進行展開。
  • Redis精華所在,一口氣說完Redis的主從複製和哨兵模式
    主從複製的作用數據冗餘:主從複製實現了數據的熱備份服務,例如開啟三個埠分別為6379、6380、6381三臺redis服務,未設置誰是主節點之前,默認每臺服務都是主節點的,info replication 後臺啟動修改為yespidfile /var/run/redis_6380.pid 34;6380.log&日誌文件的名稱dbfilename dump6380.rdb 埠號
  • Redis持久化及Redis集群
    A終端使用: subscribe cctv5 : 意思是 ,該終端在訂閱頻道名為 cctv5的消息。 當然也可以進行批量訂閱: subscribe cctv* 只要頻道是以cctv 打頭的都進行訂閱。B 終端使用 publish cctv5 &39; 發布消息一旦B終端發布消息,那麼A終端就會收到消息。
  • Redis如何從ElastiCache中遷移增量或變化的key導入到新的環境中
    這裡先簡述一下大概的遷移過程使用ElastiCache中的備份功能,產生RDB快照文件,9G的數據快照時間大約49分鐘.將該RDB導入到S3存儲,再從S3存儲下載到ec2,將該快照文件加載到新Redis集群.
  • Redis持久化機制,優缺點,如何選擇合適方式
    按照一定的時間將內存的數據以快照的形式保存到硬碟中,對應產生的數據文件為dump.rdb。通過配置文件中的save參數來定義快照的周期。優點:1、只有一個文件 dump.rdb,方便持久化。2、容災性好,一個文件可以保存到安全的磁碟。3、性能最大化,fork 子進程來完成寫操作,讓主進程繼續處理命令,所以是 IO 最大化。
  • redis的rdb和aof模式性能對比
    2.2 AOF 和 RDB 的區別以及優缺點2.2.1 AOF RDB 兩者之間的區別aof,rdb 是兩種 redis 持久化的機制。用於 crash 後,redis 的恢復。rdb的特性如下:Code:fork 一個進程,遍歷 hash table ,利用 copy on write,把整個 db dump 保存下來。
  • redis cluster搭建實踐(非常詳細,值得收藏)
    redis集群採用P2P模式,是完全去中心化的,不存在中心節點或者代理節點;redis集群是沒有統一的入口的,客戶端(client)連接集群的時候連接集群中的任意節點(node)即可,集群內部的節點是相互通信的(PING-PONG機制),每個節點都是一個redis實例;為了實現集群的高可用,即判斷節點是否健康(能否正常使用),redis-cluster
  • 現在滿大街的項目都使用redis,那為什麼需要redis
    Redis支持數據備份,即master-slave模式的數據備份Redis有哪些優勢呢?1. 首先是性能高,每秒能達到讀110000次,寫81000次。2. 提供豐富的數據類型Stirng、List、Set、Hashes等。3. Redis所有操作都是原子性的,要麼成功要麼失敗,多個操作也支持事務。4.
  • Redis的持久化機制:RDB快照和AOF追加文件
    Redis本來作為緩存使用,但是現在數據越來越重要,或者是redis在系統建設中起到了至關重要的環節,特別是在機器學習中訓練用的語料及相似度向量和索引,這樣就不希望Redis重啟之後,或者是宕機之後,數據丟失,所以Redis的持久化機制是我們不得不了解的一個內容。
  • 分布式緩存技術Redis:高級應用(主從、事務與鎖、持久化)
    安裝好後,默認情況下登陸客戶端和使用命令操作時不需要密碼的。>(2)登錄客戶端後使用auth命令進行授權,如下[root@localhost ~]# /usr/local/redis/bin/redis-cli -h 192.168.2.129 -p 6379192.168.2.129