Setelah menyelesaikan migrasi data ke instans Tair (Redis OSS-compatible), Anda dapat menggunakan tool redis-full-check untuk memverifikasi konsistensi data.
Prasyarat
-
Migrasi data telah selesai.
-
Instance ECS yang menjalankan sistem operasi Linux telah dibuat. Untuk informasi selengkapnya, lihat Create an ECS instance.
-
Instance ECS dapat mengakses instans Redis sumber dan tujuan.
Catatan-
Jika instance ECS dan instans Redis berada dalam VPC dan zona ketersediaan yang sama, tambahkan alamat IP internal instance ECS ke daftar putih Redis. Untuk informasi selengkapnya, lihat Configure an IP whitelist.
-
Jika instance ECS dan instans Redis tidak berada dalam VPC dan zona ketersediaan yang sama, Anda dapat terhubung ke instans Redis menggunakan titik akhir publiknya. Untuk informasi selengkapnya, lihat Connect to a Tair (Redis OSS-compatible) instance using a public endpoint.
-
Kasus penggunaan
Error selama migrasi data dapat menyebabkan ketidakkonsistenan antara instans sumber dan tujuan. Anda dapat menggunakan redis-full-check untuk mengidentifikasi perbedaan tersebut dan memperbaiki data.
redis-full-check adalah tool verifikasi data Redis yang dikembangkan oleh Alibaba Cloud. Tool ini mengekstraksi data dari sumber dan tujuan, melakukan beberapa putaran perbandingan, serta mencatat semua perbedaan dalam database SQLite3.
Untuk informasi selengkapnya tentang redis-full-check, lihat redis-full-check GitHub repository.
Prosedur
-
Hubungkan ke instance ECS yang dapat mengakses instans Tair (Redis OSS-compatible). Untuk informasi selengkapnya, lihat Connect to an ECS instance.
-
Unduh tool redis-full-check.
CatatanKami menyarankan agar Anda mengunduh rilis terbaru.
-
Ekstrak file redis-full-check.tar.gz.
tar -xvf redis-full-check.tar.gz -
Jalankan perintah berikut untuk melakukan verifikasi data:
./redis-full-check -s "<source_endpoint_1:port;source_endpoint_2:port;...>" -p <source_password> -t <destination_endpoint:port> -a <destination_password> --m=1 --sourcedbfilterlist=0;2 --targetdbfilterlist=0;2Berikut contoh perintahnya:
./redis-full-check -s "10.xx.xx.1:6379" -p SourcePwd233 -t "r-bp1zc********.redis.rds.aliyuncs.com:6379" -a testaccount:Test1234 --m=1 --sourcedbfilterlist=0;2 --targetdbfilterlist=0;2Untuk daftar lengkap parameter, lihat redis-full-check Configuration Guide.
Tabel 1. Parameter umum redis-full-check
Parameter
Deskripsi
Contoh
-s
Titik akhir dan port instans Redis sumber.
Catatan-
Jika sumbernya adalah instans kluster, pisahkan beberapa titik akhir dengan tanda titik koma (;).
-
Apit titik akhir dengan tanda kutip ganda ("").
-
Parameter ini wajib diisi.
r-bp1xxxxxxxxxxxxx.redis.rds.aliyuncs.com:6379"10.xx.xx.1:7000;10.xx.xx.1:7001;10.xx.xx.2:7002;10.xx.xx.2:7003"-p
Kredensial untuk instans Redis sumber, dalam format
<username>:<password>. Contoh:testaccount:Test1234. Jika instans tidak memerlukan username, cukup tentukan password-nya saja. Jika instans tidak memerlukan password, parameter ini dapat diabaikan.SourcePwd233atautestaccount:Test1234-t
Titik akhir dan port instans Redis tujuan.
Catatan-
Jika tujuannya adalah instans kluster, pisahkan beberapa titik akhir dengan tanda titik koma (;).
-
Apit titik akhir dengan tanda kutip ganda ("").
-
Parameter ini wajib diisi.
r-bp1xxxxxxxxxxxxx.redis.rds.aliyuncs.com:6379"10.xx.xx.1:7000;10.xx.xx.1:7001;10.xx.xx.2:7002;10.xx.xx.2:7003"-a
Kredensial untuk instans Redis tujuan, dalam format
<username>:<password>. Contoh:testaccount:Test1234. Jika instans tidak memerlukan username, cukup tentukan password-nya saja. Jika instans tidak memerlukan password, parameter ini dapat diabaikan.TargetPwd233atautestaccount:Test1234--sourcedbtype
Tipe instans sumber. Nilai yang valid:
-
0 (Default): standalone atau standard
-
1: kluster (mode koneksi langsung)
-
2: kluster (modus proxy)
--sourcedbtype=1--sourcedbfilterlist
Database yang akan diverifikasi pada instans Redis sumber.
Catatan-
Parameter ini tidak diperlukan untuk instans kluster Redis OSS.
-
Untuk tipe instans kluster lainnya, semua database diverifikasi secara default.
-
Untuk menentukan beberapa database, pisahkan nomornya dengan tanda titik koma (;).
--sourcedbfilterlist=0;1;2--targetdbtype
Tipe instans tujuan. Nilai yang valid:
-
0 (Default): standalone atau standard
-
1: kluster (mode koneksi langsung)
-
2: kluster (modus proxy)
--targetdbtype=0--targetdbfilterlist
Database yang akan diverifikasi pada instans Redis tujuan.
Catatan-
Parameter ini tidak diperlukan untuk instans kluster Redis OSS.
-
Untuk tipe instans kluster lainnya, semua database diverifikasi secara default.
-
Untuk menentukan beberapa database, pisahkan nomornya dengan tanda titik koma (;).
--targetdbfilterlist=0;1;2-d
Nama file output untuk daftar data yang tidak konsisten. Default: result.db.
xxx.db--comparetimes
Jumlah putaran verifikasi. Default: 3. Minimum: 1. Kami menyarankan nilai 5 atau kurang.
--comparetimes=1
-m
Mode verifikasi. Nilai yang valid:
-
1: verifikasi penuh.
-
2 (Default): hanya memverifikasi panjang value.
-
3: hanya memverifikasi keberadaan key.
-
4: melakukan verifikasi penuh tetapi mengabaikan key besar.
-m=1
--qps
Batas queries-per-second (QPS). Nilai default adalah 15000.
Catatan-
Nilai minimum adalah 1.
-
Nilai maksimum bergantung pada performa server Anda.
--qps=10
--filterlist
Daftar key yang akan dibandingkan, dipisahkan dengan tanda pipa vertikal (|).
Catatan-
abc*: Cocok dengan semua key yang diawali "abc".
-
abc: Hanya cocok dengan key "abc".
--filterlist=abc*|efg|m*
CatatanSaat perintah selesai, tool akan mencetak ringkasan ke command line. Output contoh menunjukkan dua key yang tidak konsisten. Nilai 0 berarti data konsisten.
all finish successfully, totally 2 keys or fields conflict -
-
Lihat database SQLite3 yang berisi key yang tidak konsisten.
-
Jalankan
sqlite3 result.db.3.CatatanSecara default, daftar data yang tidak konsisten disimpan ke result.db.3.
-
Jalankan
SELECT * FROM key;.Gambar 1. Lihat daftar data yang tidak konsisten
[root@redis-server RedisFullCheck]# sqlite3 result.db.3 SQLite version 3.7.17 2013-05-20 00:56:22 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> SELECT * FROM key; 1|differentkey1|string|lack_target|0|10|0 2|differentkey2|list|lack_target|0|4|0 sqlite>CatatanDatabase SQLite3 berisi dua tabel:
keydanfield.-
Tabel
keymenyimpan key yang tidak konsisten. -
Untuk tipe data hash, set, zset, dan list, tabel
fieldmenyimpan detail tentang data yang tidak konsisten.
-
-