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
inredis.conf
or viaCONFIG SET
.
- pastikan pada redis-a, keyspace notifications diaktifkan dengan menggunakan
- 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