4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【OCI クラウド移行ガイド】 Amazon ElastiCache から OCI Cache へ移行してみた

Last updated at Posted at 2024-11-06

概要

Redisのデータ移行に関する検証記事です。
検証にあたっては以下のリンクを参考にしました。

Migrating OCI Redis Cache data from one cluster to another cluster

構成

今回はAWS ElastCasheからOracle Cloud Infrastructure(OCI) OCIキャッシュへのデータ移行を検証しました
Redisバージョンは以下の通りです

  • AWS ElastCashe 7.1.0
  • OCIキャッシュ 7.0.5

準備

  • AWS ElastiCache作成

  • サンプルデータ入力
    以下のリンクからサンプルデータを入力
    Sample Dataset

  • データが入力されたことを確認

redis:6379> dbsize
(integer) 7036
redis:6379> HMGET "movie:343" title release_year genre
1) "Spider-Man"
2) "2002"
3) "Action"
redis:6379> HMGET "theater:20" name location
1) "Broadway Theatre"
2) "-73.98335054631019,40.763270202723625"
redis:6379> HMGET "user:343" first_name last_name last_login
1) "Umeko"
2) "Castagno"
3) "1574769122"
redis:6379>

Dump

  • AWS InstanceにPythonをinstall
  • AWS Instanceにgitをinstall
  • AWS Instanceにpyredis-dump toolをclone
[user@ec2]$ git clone https://github.com/tkote/pyredis-dump.git
  • pipコマンドでredisをinstall
  • pyredis-dumpコマンドオプションを確認
[user@ec2]$ python3 pyredis-dump/pyredis-dump.py -h
Usage: pyredis-dump.py [options] dump|restore|dblist

Options:
  -h, --help            show this help message and exit
  -H HOST, --host=HOST  connect to HOST (default localhost)
  -P PORT, --port=PORT  connect to PORT (default 6379)
  -s SOCKET, --socket=SOCKET
                        connect to SOCKET
  -d DB, --db=DB        database
  -w PASSWORD, --password=PASSWORD
                        connect with PASSWORD
  -p PATTERN, --pattern=PATTERN
                        pattern
  -o OUTFILE, --outfile=OUTFILE
                        write to OUTFILE
  -i INFILE, --infile=INFILE
                        read from INFILE
  -t                    use ttl when in restore mode
  -b BULK, --bulk=BULK  dump/restore bulk size
  -S, --ssl             use tls connection
  -k, --watch           watch key value change while dumping
[user@ec2]$ python3 pyredis-dump/pyredis-dump.py -b 1 -S -H 【Host名】 dump -o outfile5.py3redis
dumping to 'outfile5.py3redis'
connecting to {'db': 0, 'host': '【Host名】', 'port': 6379, 'ssl': True}
7,036 keys, bulk_size: 1, watch_keys: False
dumped 7,036 records
elapsed time: 4.341 seconds

ファイル転送

DumpしたAWSインスタンスからRestoreするOCIインスタンスに出力ファイルを転送します
1台でDump/Restoreを実施できる場合は、当作業はスキップします

Restore

  • OCIにログインしてOCIキャッシュを作成
  • OCI InstanceにPythonをinstall
  • OCI Instanceにgitをinstall
  • OCI Instanceにpyredis-dump toolをclone
  • pipコマンドでredisをinstall
  • Restore実行
    オプションは以下のとおりです。
    • -S : tls接続します
    • -H : Host名を指定します
    • restore
    • i : 入力元を指定します
[user@linux]$ python3 pyredis-dump/pyredis-dump.py -S -H 【Host名】 restore -i outfile5.py3redis
restore from 'outfile5.py3redis'
connecting to {'db': 0, 'host': '【Host名】', 'port': 6379, 'ssl': True}
/home/opc/work/redis/pyredis-dump/pyredis-dump.py:109: DeprecationWarning: Pipeline.hmset() is deprecated. Use Pipeline.hset() instead.
  p.hmset(key, value)
restored 7,036 records
elapsed time: 0.533 seconds

確認

OCIキャッシュにアクセスして正常にリストアされたことを確認します

[user@linux]$ redis-cli -h 【Host名】 --tls
redis:6379> dbsize
(integer) 7036
redis:6379> HMGET "movie:343" title release_year genre
1) "Spider-Man"
2) "2002"
3) "Action"
redis:6379> HMGET "theater:20" name location
1) "Broadway Theatre"
2) "-73.98335054631019,40.763270202723625"
redis:6379> HMGET "user:343" first_name last_name last_login
1) "Umeko"
2) "Castagno"
3) "1574769122"
4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?