how to migrate redis with riot-redis

0
713

halo sobat sekolahlinux, kali ini saya akan sedikit pengalaman saya dalam migrasi key redis dari redis-A ke redis-B, pada tutorial kali ini saya juga akan coba mensimulasikan dalam generate 8jt key ke redis-A yang mana nanti key ini kita migrasi ke redis-B

  • riot-redis-server : 192.168.10.10 (ubuntu 20.04, 4vcpu, 16gb ram)
  • redis-a : 192.168.10.20
    • pastikan pada redis-a, keyspace notifications diaktifkan dengan menggunakan notify-keyspace-events = KA in redis.conf or via CONFIG SET.
  • redis-b : 192.168.10.30

berikut ini point yang akan kita bahas

  • generate redis key for sample
  • migration redis

generate redis key for sample

jalankan perintah dibawah pada riot-redis-server

pada point ini saya akan coba sedikit memberikan contoh bagaimana generate 8.x jt keys pada redis-a

pertama buat file generate-key.sh dan isi file dibawah ini

#!/bin/bash
for i in {1..8265544}
do
   echo "SET redis-key$i iniadalahcontohisidarikeyredis-$i" >> random.txt
done

setelah itu buat file generate-key.sh menjadi file executable dengan menjalankan script dibawah ini

chmod +x generate-key.sh

selanjutnya execute file diatas dengan menjalankan perintah dibawah

./generate-key.sh

setelah menjalankans script diatas makan kita akan mendapatkan file random.txt yang didalamnya berisi seperti dibawah, sebanyak 8.x jt line

SET redis-key1 iniadalahcontohisidarikeyredis-1
SET redis-key2 iniadalahcontohisidarikeyredis-2
SET redis-key3 iniadalahcontohisidarikeyredis-3
SET redis-key4 iniadalahcontohisidarikeyredis-4
SET redis-key5 iniadalahcontohisidarikeyredis-5
SET redis-key6 iniadalahcontohisidarikeyredis-6
....

selanjutnya jalankan perintah dibawah untuk mulai generate key kedalam redis-A

cat random.txt | redis-cli -h 192.168.10.20 --pipe

pada proses diatas akan memakan waktu cukup lama karena harus generate 8.x jt keys, jika sudah selesai maka kita akan lanjut ke step berikutnya

migration redis with riot-redis

jalankan perintah dibawah pada riot-redis-server

selanjutkan kita harus install dependency riot-redis, yaitu java, jika belum ada java kalian bisa install dengan perintah dibawah, pada tutorial saya kali ini, saya menggunakan openjdk11

sudo apt install default-jre
sudo apt install openjdk-11-jre-headless
sudo apt install openjdk-8-jre-headless

selanjutnya download riot-redis binary pada link dibawah ini, lalu download file riot-redis-X.XX.X.zip

selanjutnya jika sudah didownload, extract file tersebut, lalu masuk kedalam folder seperti perintah dibawah

cd riot-redis-X.XX.X/bin/

selanjutnya kita bisa menjalankan perintah dibawah untuk mulai migrasi keys dari redis-a ke redis-b

./riot-redis -h 192.168.10.20 -n 0 -p 6379 replicate -h 192.168.10.30 -n 0 -p 6379 --reader-threads 4  --reader-batch 1000

penjelasan dari tiap2 command diatas adalah sebagai berikut:

  • –reader-threads = berapa banyak reader thread yang dapat berjalan secara bersamaan untuk proses migrasi lebih cepat
  • –reader-batch = berapa banyak keys yang dapat di dump oleh setiap reader-threads
  • -n = keyspace atau db number yang digunakan di redis, untuk mencari tau ini di redis-a kamu bisa menjalankan perintah info keyspace
  • -p = port yang digunakan oleh redis-a dan redis-b
  • -h = ip_address atau url hostname yang digunakan pada redis-a dan redis-b

kurang lebih ketika kamu menjalankan perintah diatas maka resultnya akan seperti dibawah

untuk pengecekan db number kamu bisa menjalankan perintah dibawah pada redis-a dan redis-b, menggunakan redis-cli, perintah dibawah juga bisa untuk melakukan pengecekan. apakah jumlah key pada redis-a dan redis-b sudah sama untuk verifikasi setelah migrasi

select 0;
info keyspace;

lalu jika pada saat migration masih berjalan kamu juga bisa cek melalui redis-cli proses migrasi yang sedang terjadi menggunakan perintah dibawah pada redis-b

select 0;
monitor;

 

sekian tutorial singkat kali ini semoga bermanfaat dan berguna, untuk detail lebih lanjut kamu juga membaca dokumentasi riot-redis pada url dibawah

  • https://developer.redis.com/riot/riot-redis/index.html