Setelah migrasi Tair (Redis OSS-compatible) selesai, Anda dapat menggunakan alat redis-full-check untuk memverifikasi konsistensi data.
Prasyarat
Migrasi data telah selesai.
Sebuah instance ECS yang menjalankan Linux telah dibuat. Untuk informasi lebih lanjut, lihat Buat Instance ECS.
Instance ECS dapat mengakses instance Redis sumber dan tujuan.
CatatanJika instance ECS dan instance Redis berada dalam VPC dan zona yang sama, tambahkan Alamat IP pribadi dari instance ECS ke daftar putih instance Redis. Untuk informasi lebih lanjut, lihat Konfigurasikan Daftar Putih IP.
Jika instance ECS dan instance Redis tidak berada dalam VPC atau zona yang sama, gunakan Titik Akhir Publik dari instance Redis untuk terhubung. Untuk informasi lebih lanjut, lihat Gunakan Titik Akhir Publik untuk Terhubung ke Instance.
Skenario
Jika terjadi pengecualian selama migrasi data, data mungkin menjadi tidak konsisten antara instance sumber dan tujuan. Anda dapat menggunakan alat redis-full-check untuk menemukan data yang tidak konsisten. Alat ini memberikan dasar yang andal untuk penyelarasan data.
redis-full-check adalah alat verifikasi data yang dikembangkan oleh Alibaba Cloud untuk Redis. Alat ini mengekstrak dan membandingkan data dari instance sumber dan tujuan. Alat ini menjalankan beberapa putaran perbandingan dan mencatat hasilnya dalam database SQLite3 untuk memverifikasi seluruh set data.
Untuk informasi lebih lanjut tentang alat redis-full-check, lihat Halaman Utama redis-full-check di Git.
Prosedur
Masuk ke instance ECS yang dapat mengakses instance Tair (Redis OSS-compatible). Untuk informasi lebih lanjut, lihat Hubungkan ke Instance ECS.
Pada instance ECS, unduh redis-full-check.
CatatanUnduh versi terbaru.
Ekstrak file redis-full-check.tar.gz.
tar -xvf redis-full-check.tar.gzJalankan perintah berikut untuk memverifikasi data:
./redis-full-check -s "<Titik akhir sumber 1:Port;Titik akhir sumber 2:Port;...>" -p <Kata sandi sumber> -t <Titik akhir tujuan:Port> -a <Kata sandi tujuan> --m=1 --sourcedbfilterlist=0;2 --targetdbfilterlist=0;2Contoh perintah:
./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;2Tabel berikut menjelaskan opsi umum. Untuk informasi lebih lanjut, lihat Konfigurasi RedisFullCheck.
Tabel 1. Opsi Umum untuk redis-full-check
Opsi
Deskripsi
Nilai contoh
-s
Titik akhir dan port dari instance Redis sumber.
CatatanJika instance Redis sumber adalah kluster, pisahkan titik akhir kluster dengan titik koma (;).
Kurung titik akhir kluster dalam tanda kutip ganda (").
Opsi ini wajib.
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
Nama pengguna dan kata sandi untuk instance Redis sumber. Gunakan format
<username>:<password>. Contoh:testaccount:Test1234. Jika instance tidak memiliki nama pengguna, masukkan hanya kata sandi. Jika instance tidak memiliki kata sandi, Anda dapat meninggalkan opsi ini kosong.SourcePwd233atautestaccount:Test1234-t
Titik akhir dan port dari instance Redis tujuan.
CatatanJika instance Redis tujuan adalah kluster, pisahkan titik akhir kluster dengan titik koma (;).
Kurung titik akhir kluster dalam tanda kutip ganda (").
Opsi ini wajib.
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
Nama pengguna dan kata sandi untuk instance Redis tujuan. Gunakan format
<username>:<password>. Contoh:testaccount:Test1234. Jika instance tidak memiliki nama pengguna, masukkan hanya kata sandi. Jika instance tidak memiliki kata sandi, Anda dapat meninggalkan opsi ini kosong.TargetPwd233atautestaccount:Test1234--sourcedbtype
Jenis database sumber.
0 (default): Edisi Node Tunggal atau Edisi Standar
1: Edisi Kluster dalam mode koneksi langsung
2: Edisi Kluster dalam modus proxy
--sourcedbtype=1--sourcedbfilterlist
DB yang akan diverifikasi dalam instance Redis sumber.
CatatanOpsi ini tidak diperlukan untuk kluster Redis open source.
Untuk jenis kluster lainnya, jika Anda tidak menentukan opsi ini, semua DB akan diverifikasi.
Pisahkan beberapa DB dengan titik koma (;).
--sourcedbfilterlist=0;1;2--targetdbtype
Jenis database tujuan.
0 (default): Edisi Node Tunggal atau Edisi Standar
1: Edisi Kluster dalam mode koneksi langsung
2: Edisi Kluster dalam modus proxy
--targetdbtype=0--targetdbfilterlist
DB yang akan diverifikasi dalam instance Redis tujuan.
CatatanOpsi ini tidak diperlukan untuk kluster Redis open source.
Untuk jenis kluster lainnya, jika Anda tidak menentukan opsi ini, semua DB akan diverifikasi.
Pisahkan beberapa DB dengan titik koma (;).
--targetdbfilterlist=0;1;2-d
Nama file yang menyimpan daftar data yang tidak konsisten. Nama default adalah result.db.
xxx.db--comparetimes
Jumlah putaran verifikasi. Nilai default adalah 3. Nilai minimum adalah 1. Tidak ada nilai maksimum, tetapi nilai maksimum yang direkomendasikan adalah 5.
--comparetimes=1
-m
Mode verifikasi.
1: Memverifikasi seluruh data.
2 (default): Memverifikasi hanya panjang nilai.
3: Memeriksa apakah kunci ada.
4: Memverifikasi seluruh data tetapi mengabaikan kunci besar.
-m=1
--qps
Ambang batas throttling. Nilai default adalah 15000.
CatatanNilai minimum adalah 1.
Nilai maksimum bergantung pada performa server.
--qps=10
--filterlist
Daftar kunci yang akan dibandingkan. Pisahkan kunci dengan garis vertikal (|).
Catatanabc*: Cocokkan semua kunci yang dimulai dengan abc.
abc: Cocokkan hanya kunci abc.
--filterlist=abc*|efg|m*
CatatanSetelah Anda menjalankan perintah, hasil verifikasi ditampilkan di baris perintah. Output berikut menunjukkan bahwa dua kunci tidak konsisten. Jika jumlah kunci yang tidak konsisten adalah 0, data konsisten.
all finish successfully, totally 2 keys or fields conflictPeriksa database SQLite3 yang menyimpan kunci yang tidak konsisten.
Jalankan perintah
sqlite3 result.db.3.CatatanSecara default, daftar data yang tidak konsisten disimpan ke file result.db.3.
Jalankan perintah
SELECT * FROM key;.Gambar 1. Lihat Daftar Data yang Tidak Konsisten
CatatanDatabase SQLite3 berisi tabel `key` dan `field`.
Tabel `key` menyimpan kunci yang tidak konsisten.
Tabel `field` menyimpan detail tentang ketidaksesuaian dalam tipe data hash, set, zset, dan list.