新聞中心
一、背景
最近項(xiàng)目上有一個(gè)需求,需要把a(bǔ)ws的redis遷移至阿里云的redis,本來(lái)是想著用阿里云的dts實(shí)現(xiàn)在線遷移,但是aws對(duì)自己產(chǎn)品的redis高級(jí)命令作了限制,不允許用戶使用,所以無(wú)法實(shí)現(xiàn)用dts遷移aws的redis。經(jīng)過(guò)一番曲折之后,用下面的方法成功實(shí)現(xiàn)了aws的redis遷移至阿里云的redis。下面分享一下具體實(shí)現(xiàn)的過(guò)程。

創(chuàng)新互聯(lián)主營(yíng)永昌網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App定制開(kāi)發(fā),永昌h5小程序設(shè)計(jì)搭建,永昌網(wǎng)站營(yíng)銷推廣歡迎永昌等地區(qū)企業(yè)咨詢
二、實(shí)施過(guò)程
1、安裝配置AWS的CLI
(1)安裝AWS CLI
Amazon Linux(本環(huán)境) AWS CLI 預(yù)安裝在 Amazon Linux AMI 上。
檢查當(dāng)前安裝的版本,請(qǐng)使用以下命令:
$ aws --version
aws-cli/2.4.5 Python/3.8.8 Linux/4.14.133-113.105.amzn2.x86_64 botocore/1.13
(2)配置AWS CLI
AWS CLI 將此信息存儲(chǔ)在文件中指定的配置文件(設(shè)置集合)default中 credentials。默認(rèn)情況下,當(dāng)您運(yùn)行未明確指定要使用的配置文件的 AWS CLI 命令時(shí),將使用此配置文件中的信息。
$aws configure
AWS Access Key ID [None]: ***************
AWS Secret Access Key [None]: wJa***************LEKEY
Default region name [None]: cn-northwest-1
Default output format [None]: json
注:regoin name根據(jù)自己的實(shí)際情況填寫,目前國(guó)內(nèi)主要有寧夏(cn-northwest-1)、北京(cn-north-1)兩個(gè)區(qū)。
2、安裝遷移工具redis-shake
前提條件
目標(biāo)Redis實(shí)例的版本社區(qū)版(4.0或5.0版本)或企業(yè)版(5.0版本)
Redis-shake介紹
Redis-shake是阿里云自研的開(kāi)源Redis數(shù)據(jù)傳輸工具,支持對(duì)Redis數(shù)據(jù)進(jìn)行解析(decode)、恢復(fù)(restore)、備份(dump)和同步(sync或rump),易于部署,靈活高效。本案例通過(guò)使用Redis-shake的restore(恢復(fù))模式,將本地RDB文件中的數(shù)據(jù)恢復(fù)至云數(shù)據(jù)庫(kù)Redis,從而實(shí)現(xiàn)數(shù)據(jù)遷移上云。
安裝Redis-shake
1、登陸待安裝的Redis-shake機(jī)器。
2、下載Redis-shake文件。
wget 'http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/120287/cn_zh/1608173646665/redis-shake-v2.0.3.tar.gz'
3、解壓Redis-shake文件。
tar xzf redis-shake-v2.0.3.tar.gz
4、修改參數(shù)文件。
|
參數(shù) |
是否必填 |
說(shuō)明 |
示例 |
|
source.rdb.input |
是 |
備份文件(RDB文件)的相對(duì)路徑或絕對(duì)路徑。多個(gè)文件請(qǐng)使用英文分號(hào)(;)分隔。 |
/root/tools/RedisShake/demo.rdb |
|
target.address |
是 |
目標(biāo)Redis實(shí)例的連接地址與端口號(hào),連接地址和端口號(hào)之間使用英文冒號(hào)(:)分隔。 |
r-bp1wcw2rlw76acc5k.redis.rds.aliyuncs.com:6379 |
|
target.password_raw |
是 |
目標(biāo)Redis實(shí)例的賬號(hào)(需具備讀寫權(quán)限)及其密碼,賬號(hào)和密碼之間使用英文冒號(hào)(:)分隔。 |
testaccount:Rp829dlwa |
|
key_exists |
否 |
當(dāng)源庫(kù)中的Key與目標(biāo)庫(kù)中的Key相同時(shí),采取的數(shù)據(jù)寫入策略,取值:rewrite:覆蓋寫入至目標(biāo)庫(kù)。none:默認(rèn)值,停止運(yùn)行Redis-shake程序并提示沖突的Key。ignore:直接跳過(guò)當(dāng)前遷移的Key,保留目標(biāo)庫(kù)的數(shù)據(jù),繼續(xù)執(zhí)行數(shù)據(jù)遷移。 |
rewrite |
|
parallel |
否 |
Redis-shake執(zhí)行遷移的并發(fā)線程數(shù),適當(dāng)調(diào)大該值可提高同步性能。默認(rèn)值為32,最小值為1。 |
32 |
3、開(kāi)始執(zhí)行遷移
為了實(shí)現(xiàn)遷移的自動(dòng)化,寫了一個(gè)一鍵遷移腳本。
遷移流程簡(jiǎn)介:
- 源庫(kù)redis備份。
- 把備份文件復(fù)制至S3。
- 從s3下載備份文件至本地。
- 運(yùn)行Redis-shake程序,開(kāi)始執(zhí)行遷移。
#!/bin/bash
date=$(date +%Y%m%d%H%M%S)
#dump redis file
aws elasticache create-snapshot --cache-cluster-id deviceredis --snapshot-name myredis${date}
sleep 120s
copy_status=`aws elasticache describe-snapshots --cache-cluster-id deviceredis --snapshot-name myredis${date} |grep "available" |wc -l`
until [ $copy_status -eq 1 ]
do
copy_status=`aws elasticache describe-snapshots --cache-cluster-id deviceredis --snapshot-name myredis${date} |grep "available" |wc -l`
sleep 5s
done
#copy redisfile to s3
aws elasticache copy-snapshot --source-snapshot-name myredis${date} --target-snapshot-name myredis${date} --target-bucket redistmp
#download redisfile from s3
get_status=`aws elasticache describe-snapshots --cache-cluster-id deviceredis --snapshot-name myredis${date} |grep "available" |wc -l`
until [ $get_status -eq 1 ]
do
get_status=`aws elasticache describe-snapshots --cache-cluster-id deviceredis --snapshot-name myredis${date} |grep "available" |wc -l`
sleep 5s
done
aws s3api get-object --bucket redistmp --key myredis${date}-0001.rdb ./myredis${date}-0001.rdb
#restore to aliyun redis
sed -i "s/\/root\/redis-shake-v2.0.3\/.*rdb$/\/root\/redis-shake-v2.0.3\/myredis${date}-0001.rdb/g" redis-shake.conf
./redis-shake.linux -type=restore -conf=redis-shake.conf
說(shuō)明:
日志中出現(xiàn)restore: rdb done表示數(shù)據(jù)恢復(fù)完成,此時(shí)使用Ctrl+C組合鍵停止運(yùn)行Redis-shake。如下圖所示:
網(wǎng)站標(biāo)題:分享AWS的Redis如何正確遷移至阿里云項(xiàng)目實(shí)踐
網(wǎng)站URL:http://www.5511xx.com/article/dpejjdp.html


咨詢
建站咨詢
