redis 遷移工具 redis-port 從阿里雲遷移到aws


對於 redis 的 遷移我在網上看到了很多方法,有使用redis-dump 的,有使用 aof導入方式,有rdb文件遷移方式,和redis-port。

由於我是將  redis  從阿里雲遷移到AWS,那么很多方法都被pass掉了,最后我想使用的方法是redis-dump  和redis-port.

1. redis-dump

redis-dump這款工具需要用到 Ruby,而 centos環境中的 yum工具可以安裝的 Ruby版本最高是 2.0的版本,而當前 Redis最新的 4.0版本中需要用到的 Ruby >= 2.2版本,所以我們需要先安裝 Ruby,而安裝 Ruby有一個很好的命令行工具可以幫助我們,這款工具就是 RVMRVM可以提供一個便捷的多版本 Ruby 環境的管理和切換。
# 首先老規矩,我們先到tmp下,用來存放下載的安裝文件
cd /tmp
mkdir rvm
cd rvm
# 開始安裝RVM
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 
curl -O https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer 
curl -O https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer.asc 
gpg --verify rvm-installer.asc 
bash rvm-installer stable 
source /etc/profile.d/rvm.sh
View Code

1.1  安裝Ruby

# 查看可以安裝的Ruby版本
rvm list known 
 # 這里我們安裝2.4.1
rvm install ruby 2.4.1 

1.2 安裝redis-dump工具

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

1.3 redis-dump導入導出

# 導出命令
redis-dump –u 127.0.0.1:6379 > test.json
# 導出指定數據庫數據
redis-dump -u 127.0.0.1:6379 -d 15 > test.json
# 如果redis設有密碼
redis-dump –u :password@127.0.0.1:6379 > test.json

#導入命令
< test.json redis-load
# 如果redis設有密碼
< test.json redis-load -u :password@127.0.0.1:6379

redis-dump 工具我在使用的時候發現dump非常緩慢,所以我最終還是使用了redis-port,方便快捷。

2. redis-port

1.1 redis-port的下載

redis-port 的下載鏈接:鏈接:https://pan.baidu.com/s/1HkGUSjuYVp8i9K5awkVd0A  提取碼:9grc

下載好后上傳到我們的服務器。

1.2 阿里雲redis備份下載

我們需要從阿里雲將我們的 redis 的備份數據下載下來

我們在redis的控制台的備份與恢復中,找到我們最新的數據備份。點擊下載。找到復制外網下載地址

拿到這個鏈接后,我們在linux 上 直接用 wget 命令下載是會報403錯誤的。原因是url里面包含特殊字符 比如 &,導致 URL被截斷,造成請求 URL 不完整,OSS 中不存在對應的文件信息,所以訪問被拒絕提示 403。

因此在 Linux 平台 URL 需要加上英文單引號才可以通過 wget 工具下載。

wget -c 'http://rdslog-bj.oss-cn-beijing.aliyuncs.com/custinsxxxx/hostinsxxxx/mysql-bin.001150.tar?OSSAccessKeyId=cxxzsxxxx&Expires=9999999&Signature=QxxxxxEwD' -O mysql-bin.001150.tar

# -c 參數使 wget 工具在連接中斷的時候嘗試斷點續傳。

# -O 參數將下載的結果保存為指定的文件(建議使用 URL 中包含的文件名)。

1.3 redis-port的使用

我們這里主要使用的redis-port 參數  restore

示例:

./redis-port  restore  --input=x/dump.rdb  --target=dst\_host:dst\_port   --auth=dst\_password  [--filterkey="str1|str2|str3"] [--targetdb=DB] [--rewrite] [--bigkeysize=SIZE] [--logfile=REDISPORT.LOG]
參數說明
src_host:自建 redis 域名(或者 IP)
src_port:自建 redis 端口
src_password:自建 redis 密碼
dst_host:雲數據庫 redis 域名
dst_port:雲數據庫 redis 端口
dst_password:雲數據庫 redis 密碼
str1|str2|str3:過濾具有 str1 或 str2 或 str3 的 key
DB:將同步入雲 redis 的 DB
rewrite:覆蓋已經寫入的 key
bigkeysize=SIZE:當寫入的 value 大於 SIZE 時,走大 key 寫入模式

當出現restore: rdb done時數據恢復完成。

redis-port 還可以用來進行增量同步,會在我的另外一篇文章寫到。

 注意事項:

redis 阿里雲遷移到aws 流程:

redis bgsave 到 磁盤  ---》 阿里雲備份 ---》下載備份----》 redis-port 導入---》redis數據檢查。

遇到的問題:

redis-port 導入到99%后報錯 parse rdb checksum error:

問題原因:

redis 默認是  關閉了   checksum。redis-port 工具進行導入的時候是需要效驗的。

解決辦法:

redis 執行 config set rdbchecksum yes。

這樣生成的rdb文件就是可以正常導入的。

注意:阿里雲的 redis 默認是開啟了   checksum  參數的,但是具體不同地域的是否開通了,建議提交工單詢問。

redis -dump 內容采用:鏈接:https://www.jianshu.com/p/19b5e7b3bffb

redis-port 內容借鑒阿里雲文檔 鏈接:https://help.aliyun.com/document_detail/66012.html

redis-port  github:https://github.com/CodisLabs/redis-port

層樓終究誤少年   自由早晚亂余生


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM