麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > Redis > 正文

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

2020-10-28 21:28:22
字體:
來源:轉載
供稿:網友

1、aof 導入方式。

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

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

# 清空上文目標實例全部數據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 目錄獲得。

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

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

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

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

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

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 腳本來實現。

我的腳本內容如下:

#!/bin/bash#redis 源ipsrc_ip=192.168.1.4#redis 源portsrc_port=6379#redis 目的ipdest_ip=127.0.0.1#redis 目的portdest_port=6389#要遷移的key前綴key_prefix=i=1redis-cli -h $src_ip -p $src_port -a password keys "${key_prefix}*" | while read keydo  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 為例,安裝教程如下:

# 沒安裝 ruby 的話,先安裝 rubybrew install ruby# 移除 gem 自帶源gem sources --remove https://rubygems.org/ # 添加淘寶源gem sources -a https://ruby.taobao.org/ # 安裝 redis-dumpgem install redis-dump -V

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

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

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

# 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 文件來恢復數據。

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

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

# 固化數據到 RDB 文件save

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

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

kill -9 redis# 或者pkill -9 redis# 或者手段關閉 Redis 服務

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一区二区三区视频在线 | 日日操夜夜操视频 | 欧美成人午夜影院 | 欧美精品久久久久久久久久 | 中文字幕涩涩久久乱小说 | 久久99国产精品视频 | 精品亚洲视频在线 | 日本a在线观看 | 黄色一级片免费观看 | 亚洲第一视频 | 一级毛片免费高清 | 精品国产一区二区三区久久久蜜月 | 免费国产自久久久久三四区久久 | 黄色大片在线观看 | 国产午夜精品理论片a级探花 | 久久第四色 | 竹内纱里奈和大战黑人 | 免费看污视频在线观看 | 黄色片网页 | 中文字幕亚洲情99在线 | 欧美日韩精品一区二区三区不卡 | 一级电影免费 | 成年人免费视频播放 | 色妞妞视频 | 欧美视频黄色 | 国产色妞影院wwwxxx | 国产一级aa大片毛片 | 国产黄色录像片 | 午夜精品福利视频 | 日日草日日干 | 亚洲极色 | 日本a v免费观看 | 一级毛片免费一级 | 欧美国产第一页 | 极品一级片 | 成人不卡在线观看 | 亚洲激情91 | 欧美wwwsss9999| 欧美国产精品一区二区 | 黄视频网站免费观看 | 亚洲午夜久久久精品一区二区三区 |