一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Redis - Redis數據導入導出以及數據遷移的4種方法詳解

Redis數據導入導出以及數據遷移的4種方法詳解

2020-07-05 17:10herman Redis

這篇文章主要介紹了Redis數據導入導出以及數據遷移的4種方法詳解,需要的朋友可以參考下

1、aof 導入方式。

 

因為這種方式比較簡單,所以我就先介紹它。

分兩步來實現,第一步先讓源 Redis 生成 AOF 數據文件。

 

?
1
2
3
4
# 清空上文目標實例全部數據
redis-cli -h 目標RedisIP -a password flushall
# 源實例開啟 aof 功能,將在 dir 目錄下生成 appendonly.aof 文件
redis-cli -h 源RedisIP -a password config set appendonly yes

 

dir 目錄,可以通過 config get dir 目錄獲得。

 

?
1
2
3
4
config get dir
# 比如我的 Mac 上執行上面的命令后,返回如下內容
1) "dir"
2) "/usr/local/var/db/redis"

 

通過上面的命令,我們可以看到我本地的 dir 目錄是:/usr/local/var/db/redis。

現在我們來做第二步操作,讓目標 Redis 實例導入 aof 數據。

 

?
1
2
3
4
# 將 appendonly.aof 文件放在當前路徑下
redis-cli -h 目標RedisIp -a password --pipe < appendonly.aof
# 源實例關閉 aof 功能
redis-cli -h 源RedisIp -a password config set appendonly no

 

上面的第一個命令,執行后,如果出現以下內容,則表示導入 aof 數據成功。

 

?
1
2
3
All data transferred. Waiting for the last reply...
Last reply received from server.
errors: 0, replies: 5

 

我這里是測試,數據比較少,所以提示有 5 個導入成功了。

AOF 的缺點也很明顯,就是速度慢,并且如果內容多的話,文件也比較大。而且開啟 AOF 后,QPS 會比 RDB 模式寫的 QPS 低。還有就是 AOF 是一個定時任務,可能會出現數據丟失的情況。

2、通過我的 xttblog_redis_mv.sh 腳本來實現。

 

我的腳本內容如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash
 
#redis 源ip
src_ip=192.168.1.4
#redis 源port
src_port=6379
 
#redis 目的ip
dest_ip=127.0.0.1
#redis 目的port
dest_port=6389
 
#要遷移的key前綴
key_prefix=
 
i=1
 
redis-cli -h $src_ip -p $src_port -a password keys "${key_prefix}*" | while read key
do
  redis-cli -h $dest_ip -p $dest_port -a password del $key
  redis-cli -h $src_ip -p $src_port -a password --raw dump $key | perl -pe 'chomp if eof' | redis-cli -h $dest_ip -p $dest_port -a password -x restore $key 0
  echo "$i migrate key $key"
  ((i++))
done

大家在使用的時候,只需要替換 IP 即可。

這個腳本同樣有一個問題就是使用了 keys *,然后一個一個遍歷,如果是生產環境,不建議這樣使用!當然我的腳本也是可以再進行優化的!

3、使用 redis-dump 工具。

 

Redis-Dump 是一個用于 Redis 數據導入 / 導出的工具,是基于 Ruby 實現的,可以方便的進行 redis 的數據備份。這個工具需要先安裝,以我的 Mac 為例,安裝教程如下:

?
1
2
3
4
5
6
7
8
# 沒安裝 ruby 的話,先安裝 ruby
brew install ruby
# 移除 gem 自帶源
gem sources --remove https://rubygems.org/
# 添加淘寶源
gem sources -a https://ruby.taobao.org/
# 安裝 redis-dump
gem install redis-dump -V

目前我發現,淘寶的鏡像已經出現 bad response Not Found 404 了,被告知鏡像維護站點已遷往 Ruby China 鏡像。

?
1
2
3
4
5
6
# 替換鏡像地址
gem sources --add http://gems.ruby-china.org/ --remove http://rubygems.org/
# 確認鏡像地址是否替換成功
gem sources -l
# 替換成功后再安裝 redis-dump
gem install redis-dump -V

安裝完成后,就可以使用 redis-dump 工具進行數據的導入導出了!

?
1
2
3
4
# redis-dump 導出
redis-dump -u :password@源RedisIp:6379 > 源Redis數據文件.json
# redis-load 導入
cat 源Redis數據文件.json | redis-load -u :password@目標RedisIp:6379

cat 源Redis數據文件.json | redis-load -u :password@目標RedisIp:6379

Linux 系統或者 Window 系統也都類似,安裝 redis-dump 工具完成后直接使用 redis-dump 導出,redis-load 導入即可完成數據的備份與遷移。

redis-dump 工具很強大,建議大家到官網上多看看它的官方文檔。

4、rdb 文件遷移

 

redis-dump 麻煩就麻煩在需要進行安裝,如果我的 Redis 已經有備份機制,比如有 rdb 文件,那么我們直接遷移 rdb 文件就可以達到同樣的目的。

首先,我們可以先關閉源 Redis 實例的 aof 功能。如果不關閉 aof,Redis 默認用 aof 文件來恢復數據。

?
1
2
# 源實例關閉 aof 功能
redis-cli -h 源RedisIp -a password config set appendonly no

然后使用 save 命令把數據固化到 rdb 文件中。

?
1
2
# 固化數據到 RDB 文件
save

save 完成后,還是通過 config get dir 命令獲得保存的 RDB 數據文件位置。

接下來,我們需要殺死 redis 進程。殺掉當前 redis 的進程,否則下一步的復制 rdb 文件,rdb 處于打開的狀態,復制的文件,會占用同樣的句柄。

?
1
2
3
4
kill -9 redis
# 或者
pkill -9 redis
# 或者手段關閉 Redis 服務

然后復制源 redis 的 rdb 文件到目標 Redis 的 dir 數據目錄,名字為你要遷移的 redis 的 rdb 文件名。

復制完成后,重啟目標 Redis 實例,數據就遷移完成了。 重啟完成后可以驗證一下數據是否成功的復制了。

更多關于Redis數據導入導出以及數據遷移的方法請查看下面的相關鏈接

原文鏈接:https://www.xttblog.com/?p=4694

延伸 · 閱讀

精彩推薦
  • Redis詳解Redis復制原理

    詳解Redis復制原理

    與大多數db一樣,Redis也提供了復制機制,以滿足故障恢復和負載均衡等需求。復制也是Redis高可用的基礎,哨兵和集群都是建立在復制基礎上實現高可用的...

    李留廣10222021-08-09
  • RedisRedis 事務知識點相關總結

    Redis 事務知識點相關總結

    這篇文章主要介紹了Redis 事務相關總結,幫助大家更好的理解和學習使用Redis,感興趣的朋友可以了解下...

    AsiaYe8232021-07-28
  • RedisRedis的配置、啟動、操作和關閉方法

    Redis的配置、啟動、操作和關閉方法

    今天小編就為大家分享一篇Redis的配置、啟動、操作和關閉方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    大道化簡5312019-11-14
  • RedisRedis如何實現數據庫讀寫分離詳解

    Redis如何實現數據庫讀寫分離詳解

    Redis的主從架構,能幫助我們實現讀多,寫少的情況,下面這篇文章主要給大家介紹了關于Redis如何實現數據庫讀寫分離的相關資料,文中通過示例代碼介紹...

    羅兵漂流記6092019-11-11
  • Redisredis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    redis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    這篇文章主要給大家介紹了關于redis中如何使用lua腳本讓你的靈活性提高5個逼格的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具...

    一線碼農5812019-11-18
  • RedisRedis全量復制與部分復制示例詳解

    Redis全量復制與部分復制示例詳解

    這篇文章主要給大家介紹了關于Redis全量復制與部分復制的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Redis爬蟲具有一定的參考學習...

    豆子先生5052019-11-27
  • Redisredis實現排行榜功能

    redis實現排行榜功能

    排行榜在很多地方都能使用到,redis的zset可以很方便地用來實現排行榜功能,本文就來簡單的介紹一下如何使用,具有一定的參考價值,感興趣的小伙伴們...

    乘月歸5022021-08-05
  • Redisredis 交集、并集、差集的具體使用

    redis 交集、并集、差集的具體使用

    這篇文章主要介紹了redis 交集、并集、差集的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友...

    xiaojin21cen10152021-07-27
主站蜘蛛池模板: 网站国产| 好男人资源免费观看 | 91啦在线视频 | www.日日爱| 91天堂素人 | 洗濯屋动漫在线观看 | 小早川怜子视频在线观看 | 日韩无砖专区体验区 | 亚洲色图欧美偷拍 | 亚欧日韩| 非洲黑人又大粗gay 非洲黑人bbwbbwbbw | 日韩免费观看成第15集 | 九九在线精品亚洲国产 | 高清在线看 | 舔逼| 问一问免费咨询 | 国产精品第1页在线播放 | 久久婷婷五月综合色丁香花 | 久久婷婷丁香五月色综合啪免费 | 香蕉tv国产在线永久播放 | 青涩体验在线观看未删减 | 色综合天天综合中文网 | 国产成人成人一区二区 | 男人天堂黄色 | 污网站免费观看在线高清 | 亚洲成a人不卡在线观看 | 国产一区二区免费不卡在线播放 | 日本理论片中文在线观看2828 | 波多野结衣不卡 | 国产自产在线 | 亚洲AV蜜桃永久无码精品红樱桃 | videosxxxx老女人 | 小小水蜜桃视频高清在线播放 | 日韩ab| 99国产精品免费观看视频 | 国产精品青青青高清在线 | 九九精品国产亚洲A片无码 九九99热久久999精品 | 国产精品激情综合久久 | 99精品热线在线观看免费视频 | 高人先生免费观看全集 | 天天狠天天透 |