Anda dapat menggunakan API Data Transmission Service (DTS) untuk mengonfigurasi sinkronisasi data satu arah atau dua arah untuk instans Tair (Redis OSS-Compatible) Enhanced Edition. Topik ini menjelaskan catatan penggunaan dan menyediakan contoh kode.
Prasyarat
Instans sumber dan tujuan adalah instans Tair (Redis OSS-Compatible) Enhanced Edition.
Jika instans Tair menggunakan persistent memory sebagai storage medium-nya, pastikan parameter appendonly diatur ke yes. Untuk informasi selengkapnya, lihat Prosedur.
Catatan penggunaan
-
Untuk sinkronisasi dua arah, tugas sinkronisasi maju melakukan sinkronisasi data penuh awal dan sinkronisasi data inkremental, sedangkan tugas sinkronisasi balik hanya melakukan sinkronisasi data inkremental.
PeringatanUntuk memastikan konsistensi data, jangan memodifikasi atau menulis data ke kunci yang sama di database sumber dan tujuan saat tugas sinkronisasi dua arah sedang berjalan.
DTS menggunakan sumber daya dari database sumber dan tujuan selama sinkronisasi data penuh awal, yang dapat meningkatkan beban pada server database. Jika Anda menyinkronkan volume data yang besar atau spesifikasi server tidak memenuhi kebutuhan, layanan database mungkin menjadi tidak tersedia. Sebelum menyinkronkan data, evaluasi dampak sinkronisasi terhadap kinerja instans sumber dan tujuan. Kami menyarankan agar Anda melakukan sinkronisasi data selama jam sepi.
-
Jangan menjalankan perintah
FLUSHDBatauFLUSHALLpada instans sumber. Jika tidak, hal ini akan menyebabkan ketidakkonsistenan data antara sumber dan target. -
Jika database tujuan kehabisan memori dan memicu penggantian data, data mungkin menjadi tidak konsisten antara sumber dan tujuan. Hal ini terjadi karena kebijakan penggantian data default (maxmemory-policy) untuk Tair (Redis OSS-Compatible) adalah volatile-lru. Namun, hal ini tidak memengaruhi operasi tugas secara normal.
Untuk mencegah masalah ini, kami menyarankan mengatur kebijakan penggantian data untuk database tujuan ke noeviction. Dengan kebijakan ini, jika tujuan kehabisan memori, operasi tulis akan gagal, tugas berhenti, dan tidak ada data yang hilang akibat penggantian.
CatatanUntuk informasi selengkapnya tentang kebijakan penggantian data, lihat Kebijakan penggantian data di Redis.
-
Jika database sumber menggunakan kebijakan kedaluwarsa untuk beberapa kunci, database tujuan mungkin tampak memiliki jumlah kunci yang lebih sedikit (seperti yang dilaporkan oleh perintah seperti
info). Hal ini dapat terjadi karena kunci yang telah kedaluwarsa mungkin tidak langsung dihapus di database sumber.CatatanJumlah kunci yang tidak memiliki kebijakan kedaluwarsa atau belum kedaluwarsa adalah sama di kedua database sumber dan tujuan.
Jika koneksi langsung dinonaktifkan untuk instans Tair (Redis OSS-Compatible) Enhanced Edition tujuan, DTS menggunakan mode penerusan proxy untuk menulis data ke instans tujuan.
CatatanUntuk informasi selengkapnya tentang cara mengaktifkan koneksi langsung, lihat Aktifkan koneksi langsung.
-
Jika instans Redis sumber diskalakan (misalnya, shard ditambahkan atau dihapus) atau spesifikasinya diubah (misalnya, memori ditingkatkan) selama sinkronisasi, Anda harus mengonfigurasi ulang tugas tersebut. Untuk memastikan konsistensi data, kami menyarankan agar Anda menghapus semua data yang telah disinkronkan dari instans Redis tujuan sebelum mengonfigurasi ulang tugas.
-
Jika alamat koneksi instans Redis sumber berubah selama sinkronisasi (misalnya, karena perubahan zona ketersediaan atau peralihan jenis jaringan dari jaringan klasik ke Virtual Private Cloud (VPC)), Anda harus mengonfigurasi ulang tugas tersebut.
-
Batasan berikut berlaku saat Anda menyinkronkan data dari instans Redis standalone ke instans Redis dalam mode kluster. Kluster Redis hanya mengizinkan satu perintah untuk mengoperasikan kunci yang berada dalam slot yang sama. Jika Anda melakukan operasi multi-kunci pada database sumber di mana kunci-kuncinya tersebar di beberapa slot, kesalahan berikut akan terjadi:
CROSSSLOT Keys in request don't hash to the same slotKami menyarankan agar Anda hanya melakukan operasi satu kunci selama sinkronisasi data untuk mencegah gangguan tugas.
- Jika instans tujuan adalah instans kluster dan salah satu shard-nya mencapai batas memorinya, atau jika instans tujuan kehabisan storage space, tugas DTS akan gagal dengan error Out of Memory (OOM).
Jika fitur enkripsi data transparan (TDE) diaktifkan untuk instans sumber atau tujuan, Anda tidak dapat menggunakan DTS untuk menyinkronkan data dari database sumber ke database tujuan.
-
Jika instans sumber adalah Redis yang dikelola sendiri, kami menyarankan agar Anda mengatur timeout replikasi antara slave dan master (repl-timeout) menjadi 600 detik dengan menggunakan perintah
config set repl-timeout 600. Jika database sumber berisi volume data yang besar, Anda dapat meningkatkan nilai parameter repl-timeout. -
Tugas sinkronisasi dua arah mencakup tugas sinkronisasi maju dan balik. Saat Anda mengonfigurasi atau mereset tugas, jika objek tujuan dari satu tugas cocok dengan objek sinkronisasi dari tugas lainnya:
-
Hanya izinkan satu tugas untuk menyinkronkan data penuh dan inkremental. Tugas lainnya hanya mendukung sinkronisasi inkremental.
-
Data dari sumber tugas saat ini hanya disinkronkan ke tujuan tugas saat ini. Data tersebut tidak berfungsi sebagai data sumber untuk tugas lainnya.
-
Penagihan
Jenis sinkronisasi | Harga |
Sinkronisasi skema dan sinkronisasi data penuh | Gratis. |
Sinkronisasi data inkremental | Dikenai biaya. Untuk informasi selengkapnya, lihat Ikhtisar penagihan. |
Batasan
Sinkronisasi cascade satu arah tidak didukung. Untuk informasi selengkapnya, lihat Topologi sinkronisasi.
Perintah yang dapat disinkronkan
APPEND
BITOP, BLPOP, BRPOP, dan BRPOPLPUSH
DECR, DECRBY, dan DEL
EVAL, EVALSHA, EXEC, EXPIRE, dan EXPIREAT
GEOADD dan GETSET
HDEL, HINCRBY, HINCRBYFLOAT, HMSET, HSET, dan HSETNX
INCR, INCRBY, dan INCRBYFLOAT
LINSERT, LPOP, LPUSH, LPUSHX, LREM, LSET, dan LTRIM
MOVE, MSET, MSETNX, dan MULTI
PERSIST, PEXPIRE, PEXPIREAT, PFADD, PFMERGE, dan PSETEX
RENAME, RENAMENX, RPOP, RPOPLPUSH, RPUSH, dan RPUSHX
SADD, SDIFFSTORE, SELECT, SET, SETBIT, SETEX, SETNX, SETRANGE, SINTERSTORE, SMOVE, SPOP, SREM, dan SUNIONSTORE
UNLINK, ZADD, ZINCRBY, ZINTERSTORE, ZREM, ZREMRANGEBYLEX, ZUNIONSTORE, ZREMRANGEBYRANK, dan ZREMRANGEBYSCORE
SWAPDB (Perintah ini tidak dapat disinkronkan jika instans sumber atau tujuan diterapkan dalam arsitektur kluster.)
Perintah PUBLISH tidak dapat disinkronkan.
Jika Anda menjalankan perintah EVAL atau EVALSHA untuk memanggil skrip Lua, DTS tidak dapat mengidentifikasi apakah skrip Lua tersebut dieksekusi di database tujuan. Hal ini karena database tujuan tidak secara eksplisit mengembalikan hasil eksekusi skrip Lua selama sinkronisasi data inkremental.
Saat DTS menjalankan perintah SYNC atau PSYNC untuk mentransfer data tipe LIST, DTS tidak menghapus data yang sudah ada. Akibatnya, instans tujuan mungkin berisi catatan data duplikat.
Sebelum memulai
Untuk melindungi Pasangan Kunci Akses akun Alibaba Cloud Anda, kami menyarankan agar Anda membuat pengguna Resource Access Management (RAM), memberikan izin kepada pengguna RAM tersebut untuk mengakses DTS, lalu menggunakan Pasangan Kunci Akses pengguna RAM tersebut untuk memanggil DTS SDK for Java. Untuk informasi selengkapnya, lihat Kontrol akses ke resource menggunakan pengguna RAM.
Buat instansi sinkronisasi data
Masuk ke OpenAPI Explorer.
-
Konfigurasikan parameter permintaan sesuai kebutuhan bisnis Anda. Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Deskripsi
Nilai
SourceRegion
ID wilayah tempat instans sumber berada.
Tentukan nilai untuk parameter-parameter ini sesuai kebutuhan bisnis Anda.
DestRegion
ID wilayah tempat instans tujuan berada.
Topology
Topologi sinkronisasi. Nilai yang valid:
oneway (default): sinkronisasi satu arah.
bidirectional: sinkronisasi dua arah.
SynchronizationJobClass
Kelas instans dari instansi sinkronisasi data.
PayType
Metode penagihan instansi sinkronisasi data. Nilai yang valid:
PrePaid: subscription.
PostPaid (default): pay-as-you-go.
SourceEndpoint.InstanceType
Jenis instans sumber.
Atur nilainya ke Redis.
DestinationEndpoint.InstanceType
Jenis instans tujuan.
Atur nilainya ke Redis.
CatatanUntuk informasi selengkapnya, lihat CreateSynchronizationJob.
Di bagian bawah halaman, klik Initiate Call.
-
Pada tab Response, lihat respons API.
CatatanCatat ID instansi sinkronisasi (
SynchronizationJobId) dari respons.PentingJika permintaan gagal, Anda perlu memodifikasi parameter permintaan berdasarkan message yang dikembalikan dalam respons dan mengirim permintaan lagi hingga permintaan berhasil.
-
Opsional: Dapatkan contoh kode SDK.
Klik tab SDK Sample Code.
Tentukan versi SDK dan bahasa pemrograman.
-
Klik ikon salin di pojok kanan atas bagian kode untuk menyalin kode.
Konfigurasikan tugas sinkronisasi satu arah
Dalam contoh ini, akun database instans sumber memiliki izin baca pada database sumber. Akun database instans tujuan memiliki izin baca dan tulis pada database tujuan.
Saat Anda mengonfigurasi sinkronisasi data satu arah, Anda juga dapat menggunakan database Redis yang dikelola sendiri atau instans Tair (Redis-compatible) sebagai database sumber atau tujuan. Metode konfigurasinya mirip dengan contoh ini, tetapi Anda harus menyesuaikan parameter permintaan yang sesuai, seperti MigrationReserved.
Masuk ke OpenAPI Explorer.
Konfigurasikan parameter permintaan sesuai kebutuhan bisnis Anda.
CatatanAnda harus mengatur parameter SynchronizationDirection ke Forward. Untuk informasi selengkapnya, lihat ConfigureSynchronizationJob.
Di bagian bawah halaman, klik Initiate Call.
-
Pada tab Response, lihat respons API.
PentingJika panggilan gagal, periksa Message dalam respons, perbaiki masalahnya, lalu coba lagi.
-
Opsional. Dapatkan contoh kode SDK.
Klik tab SDK Sample Code.
Tentukan versi SDK dan bahasa pemrograman.
-
Klik ikon salin di pojok kanan atas bagian kode untuk menyalin kode.
Konfigurasikan tugas sinkronisasi dua arah
Dalam contoh ini, akun database yang digunakan untuk sinkronisasi data memiliki izin baca dan tulis.
Konfigurasikan tugas sinkronisasi data dalam arah maju. Untuk informasi selengkapnya, lihat bagian Konfigurasikan tugas sinkronisasi satu arah dalam topik ini.
-
Tunggu hingga tugas sinkronisasi maju menyelesaikan inisialisasi dan statusnya berubah menjadi Synchronizing.
CatatanAnda dapat melihat status tugas sinkronisasi data di Konsol DTS atau dengan memanggil operasi Query the status of a data synchronization job.
-
Konfigurasikan tugas sinkronisasi data dalam arah balik.
Opsional. Masuk ke OpenAPI Explorer.
Konfigurasikan parameter permintaan sesuai kebutuhan bisnis Anda.
CatatanAnda harus mengatur parameter SynchronizationDirection ke Reverse. Untuk informasi selengkapnya, lihat ConfigureSynchronizationJob.
Di bagian bawah halaman, klik Initiate Call.
-
Pada tab Response, lihat respons API.
PentingJika panggilan gagal, periksa Message dalam respons, perbaiki masalahnya, lalu coba lagi.
-
Opsional. Dapatkan contoh kode SDK.
Klik tab SDK Sample Code.
Tentukan versi SDK dan bahasa pemrograman.
-
Klik ikon salin di pojok kanan atas bagian kode untuk menyalin kode.
Referensi
Status dan kinerja tugas sinkronisasi
Anda dapat melihat kinerja sinkronisasi data dengan menggunakan performance metrics. DTS menyediakan metrik koneksi dan kinerja untuk membantu Anda mengelola tugas sinkronisasi data.
Tambahkan objek sinkronisasi atau Hapus objek dari tugas sinkronisasi data
Selama tugas sinkronisasi data, Anda dapat menambahkan atau menghapus objek dari tugas tersebut.