redis數據庫遷移方案

redis遷移方案

整理一下經常使用的幾種redis遷移的方案,分別對應不一樣的場景。php

  • 備份/拷貝/重啓
  • redis-dump
  • 客戶端

1. 備份/拷貝/重啓

利用redis的持久化功能,redis重啓的時候,會自動從硬盤的持久化文件中讀取數據再恢復到內存中。利用這裏原理,把redis2的持久化備份
替換成redis1的,而後重啓redis2,它就會從硬盤持久化文件恢復到內存,這樣一來redis2就跟redis1同樣了

要使用這個方案,就必須瞭解redis的持久化,redis的持久化方案有2種,rdb模式和aof模式:git

  • rdb 保存整個redis的數據
  • aof 保存成redis能夠執行的命令

rdb覆蓋過去以後,新的redis數據就沒了,畢竟是覆蓋操做。而aof由於是保存的命令,只是在新的redis上從新執行了一遍,因此不會覆蓋
新redis上的數據。 簡單來講若是須要保留新redis的數據,可使用aofgithub

具體命令

rdb方案
# 連接redis
$ redis-cli -u 127.0.0.1 -p 6379 -a 你的密碼 
# 執行持久化
$ 127.0.0.1:6379> bgsave
# 查看文件位置
$ 127.0.0.1:6379> config get dir

複製 redis數據目錄/dump.rdb 到另外一臺redis的數據目錄下,啓動便可。redis

ps:先關閉目標redis,先複製文件的話,在目標redis關閉的時候,會生成持久化文件,覆蓋你剛剛複製的文件
aof
# 設置appendonly yes
$ 127.0.0.1:6379> config set appendonly yes

# or
$ redis-cli -u 127.0.0.1 -p 6379 -a 你的密碼 config set appendonly yes

執行以後,就會在 redis的數據目錄 看到 appendonly.aof 文件json

# 目標redis
$ redis-cli -h aliyun_redis_instance_ip -p 6379 -a password --pipe < appendonly.aof

2. redis-dump

redis-dump是一個第三方的工具,提供redis的導出和導入。

安裝步驟

  1. 安裝rvm。可參考官網:http://rvm.io/ruby

    # gpg2 沒安裝的化自行安裝 `apt install gnupg2`
    $ gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
    
    $ \curl -sSL https://get.rvm.io | bash -s stable
    
    # 按照系統提示執行,添加系統環境
    $ source /etc/profile.d/rvm.sh
    
    # 確認安裝成功
    $ rvm list known
  2. 安裝ruby 參考官方網站:http://www.ruby-lang.org/en/d...bash

    # ruby版本參考官方發行的最新版,本搞寫的時候版本爲2.6.3
    $ rvm install ruby 2.6.3
  3. 安裝 redis-dumpapp

    # 移除國外的庫,否則下載不了
    $ gem sources --remove https://rubygems.org/
    # 安裝國內的資源地址
    $ gem sources -a https://gems.ruby-china.com/
    # 安裝
    $ gem install redis-dump -V

一些簡單的使用

# 導出全部db
$ redis-dump -u 127.0.0.1:6371 > db_full.json
# 導出db15
$ redis-dump -u 127.0.0.1:6371 -d 15 > db_db15.json

# 導入
$ < db_full.json redis-load -u 127.0.0.1:6379
$ < db_db15.json redis-load -u 127.0.0.1:6379 -d 15

# OR
$ cat db_full | redis-load
$ cat db_db15.json | redis-load -d 15

# 使用密碼的小技巧(注意密碼前面的`:`)
$ redis-dump -u :密碼@127.0.0.1:6371

3. 客戶端

使用 phpredisadmin等客戶端,自帶導入、導出

git庫 https://github.com/ErikDubbel...curl

Example: http://dubbelboer.com/phpRedi...工具

功能截圖:

clipboard.png

相關文章
相關標籤/搜索