Layanan Transmisi Data (Data Transmission Service/DTS) memungkinkan Anda menyinkronkan data dari database MySQL ke mesin LindormTable pada instans Lindorm. Topik ini menggunakan instans ApsaraDB RDS for MySQL sebagai sumber.
Prasyarat
Sebelum memulai, pastikan Anda telah:
-
Memiliki instans Lindorm tujuan dengan mesin LindormTable yang diaktifkan dan kapasitas penyimpanan lebih besar daripada kapasitas penyimpanan yang digunakan oleh instans RDS for MySQL sumber. Lihat Buat instans.
-
Mengaktifkan endpoint yang kompatibel dengan MySQL untuk instans Lindorm tujuan. Lihat Aktifkan fitur kompatibilitas MySQL.
-
Membuat database (namespace) terlebih dahulu di instans Lindorm tujuan. Jika Anda tidak memilih Schema Synchronization, Anda juga harus membuat tabel lebar terlebih dahulu (disarankan melakukan pre-partitioning berdasarkan seluruh dataset sebelum sinkronisasi dimulai untuk kinerja yang lebih baik). Lihat Hubungkan dan gunakan LindormTable menggunakan command line MySQL, Hubungkan dan gunakan LindormTable menggunakan Lindorm-cli, Akses LindormTable menggunakan Lindorm Shell, CREATE TABLE, dan Pemetaan tipe data.
-
Memastikan semua objek dalam instans Lindorm tujuan mematuhi konvensi penamaan dan batasan Lindorm.
Penagihan
|
Jenis sinkronisasi |
Biaya |
|
Sinkronisasi data penuh |
Gratis |
|
Sinkronisasi data inkremental |
Dikenai biaya. Lihat Ikhtisar penagihan. |
Operasi SQL yang didukung oleh sinkronisasi inkremental
|
Tipe |
Pernyataan SQL |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
CREATE TABLE, DROP TABLE, ADD COLUMN |
Ketika pernyataan ADD COLUMN mencakup atribut tambahan, hanya definisi kolom yang disinkronkan — atribut seperti nilai default akan diabaikan. Misalnya, ALTER TABLE test ADD COLUMN col INT DEFAULT 0; pada sumber menghasilkan ALTER TABLE test ADD COLUMN col INT; pada tujuan, karena batasan LindormTable.
Izin yang diperlukan untuk akun database
|
Database |
Izin yang diperlukan |
Cara memberikan izin |
|
RDS MySQL sumber |
Izin baca dan tulis pada objek yang akan disinkronkan |
Buat akun dan Ubah izin akun standar pada instans ApsaraDB RDS for MySQL |
|
Lindorm tujuan |
Izin baca dan tulis pada namespace tujuan |
Jika akun database sumber tidak dibuat dan diberi izin melalui konsol RDS for MySQL, pastikan akun tersebut memiliki izin REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW, dan SELECT.
Batasan
Batasan database sumber
-
Tabel yang akan disinkronkan harus memiliki kunci primer dengan bidang unik. Tanpa kunci primer, data duplikat mungkin muncul di tujuan.
-
Tipe floating-point seperti FLOAT dan DOUBLE tidak didukung sebagai kunci primer atau kunci primer komposit.
-
Ketika melakukan sinkronisasi tingkat tabel dengan pemetaan nama, satu tugas mendukung maksimal 1.000 tabel. Melebihi batas ini menyebabkan error setelah tugas dikirim. Pisahkan tabel ke beberapa tugas, atau konfigurasikan tugas untuk menyinkronkan seluruh database.
-
Jangan menjalankan operasi DDL pada database sumber selama fase sinkronisasi data penuh — hal ini menyebabkan tugas gagal. Kueri DTS menambahkan kunci metadata yang juga dapat memblokir operasi DDL pada sumber selama fase ini.
-
Perubahan data dari operasi yang tidak dicatat dalam log biner — seperti pemulihan backup fisik dan operasi kaskade — tidak disinkronkan ke tujuan. Jika hal ini terjadi dan bisnis Anda mengizinkannya, hapus database atau tabel yang terdampak dari objek sinkronisasi lalu tambahkan kembali. Lihat Ubah objek sinkronisasi.
-
Untuk MySQL 8.0.23 dan versi lebih baru, kolom tak terlihat (invisible columns) menyebabkan kehilangan data karena DTS tidak dapat membacanya. Jadikan kolom tak terlihat menjadi terlihat sebelum memulai sinkronisasi:
-
Jalankan
ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE;untuk setiap kolom tak terlihat. Lihat Invisible Columns. -
Tabel tanpa kunci primer secara otomatis menghasilkan kunci primer tak terlihat — jadikan juga terlihat. Lihat Generated Invisible Primary Keys.
-
Persyaratan log biner
Sumber ApsaraDB RDS for MySQL
Binary logging diaktifkan secara default untuk instans RDS MySQL. Pastikan parameter berikut diatur dengan benar:
|
Parameter |
Nilai yang diperlukan |
Catatan |
|
|
|
Jika tidak diatur dengan benar, pemeriksaan awal melaporkan error dan tugas tidak dapat dimulai. Lihat Atur parameter instans. |
Pertahankan log biner lokal minimal selama 3 hari (disarankan 7 hari). Retensi yang lebih pendek dapat menyebabkan kegagalan tugas, dan dalam kasus ekstrem, kehilangan data atau ketidakkonsistenan. Masalah yang disebabkan oleh retensi tidak mencukupi tidak dicakup oleh Perjanjian Tingkat Layanan (SLA) DTS. Lihat Hapus log lokal secara otomatis.
Sumber MySQL yang dikelola sendiri
Aktifkan binary logging dan atur parameter berikut:
|
Parameter |
Nilai yang diperlukan |
Catatan |
|
|
|
Diperlukan agar DTS dapat menangkap perubahan tingkat baris. |
|
|
|
Diperlukan untuk menangkap gambar baris lengkap untuk setiap perubahan. |
|
|
Diaktifkan |
Hanya diperlukan untuk arsitektur primary/primary, untuk memastikan DTS dapat memperoleh semua log biner. Lihat Buat akun database untuk database MySQL yang dikelola sendiri dan konfigurasikan binary logging. |
Pertahankan log biner lokal minimal selama 7 hari. Retensi yang lebih pendek dapat menyebabkan kegagalan tugas, dan dalam kasus ekstrem, kehilangan data atau ketidakkonsistenan. Masalah yang disebabkan oleh retensi tidak mencukupi tidak dicakup oleh SLA DTS.
Batasan lainnya
|
Batas |
Detail |
|
Sinkronisasi skema |
Sinkronisasi skema ke Lindorm bergantung pada kemampuan Lindorm sendiri untuk pembuatan skema. |
|
Batas indeks kolom non-kunci primer |
Lindorm memiliki batas jumlah kolom default untuk indeks pada kolom non-kunci primer. DTS tidak dapat membuat indeks semacam itu selama sinkronisasi skema ketika jumlah kolom melebihi batas ini. Untuk menggunakan indeks tersebut, buat secara manual. Untuk detailnya, lihat ALTER SYSTEM. |
|
Tipe objek yang tidak didukung |
Objek INDEX, PARTITION, VIEW, PROCEDURE, FUNCTION, TRIGGER, dan FK. |
|
Data tipe BIT |
Tidak didukung. |
|
Sinkronisasi hanya kunci primer |
Tidak didukung. Data yang akan disinkronkan harus mencakup setidaknya satu bidang non-kunci primer. |
|
Mesin tujuan |
Hanya mesin LindormTable yang didukung. |
|
String VARBINARY kosong |
Diperlakukan sebagai null oleh DTS maupun Lindorm. |
|
Ketidaksesuaian presisi bidang DECIMAL |
Jika presisi bidang DECIMAL di tujuan berbeda dari sumber, tugas gagal. |
|
Batas permintaan data Lindorm |
Data yang ditulis ke Lindorm harus memenuhi batas permintaan data Lindorm. Melebihi batas tersebut menyebabkan tugas gagal. |
|
Penggunaan resource selama sinkronisasi penuh |
Sinkronisasi data penuh mengonsumsi resource baca dan tulis pada database sumber maupun tujuan. Jalankan sinkronisasi selama jam sepi ketika penggunaan CPU di kedua instans di bawah 30%. |
|
Ruang tabel tujuan setelah inisialisasi penuh |
Inisialisasi penuh menjalankan operasi INSERT secara konkuren, menyebabkan fragmentasi tabel. Setelah inisialisasi penuh, ruang tabel tujuan akan lebih besar daripada sumber. |
|
Alat DDL Online selama sinkronisasi |
Jangan gunakan alat seperti pt-online-schema-change untuk melakukan operasi DDL Online pada objek yang disinkronkan selama tugas DTS aktif — hal ini menyebabkan tugas gagal. |
|
Penulisan eksternal ke tujuan |
Menulis data ke database tujuan dari sumber selain DTS selama sinkronisasi menyebabkan ketidakkonsistenan data. |
|
Fitur EncDB (always-confidential) |
Jika fitur EncDB diaktifkan pada instans RDS for MySQL sumber, sinkronisasi data penuh tidak didukung. Enkripsi Data Transparan (TDE) tidak memiliki batasan ini — instans dengan TDE yang diaktifkan mendukung sinkronisasi skema, sinkronisasi data penuh, dan sinkronisasi data inkremental. |
|
Pemulihan instans DTS |
Jika instans DTS gagal, tim helpdesk DTS berusaha memulihkannya dalam waktu 8 jam. Selama pemulihan, DTS mungkin me-restart instans atau menyesuaikan parameter instans DTS (bukan parameter database). Lihat Ubah parameter instans. |
Kasus khusus
Sumber MySQL yang dikelola sendiri
-
Failover primary/secondary pada database sumber selama sinkronisasi menyebabkan tugas gagal.
-
Latensi dihitung dari selisih timestamp antara waktu saat ini dan catatan terakhir yang disinkronkan ke tujuan. Jika tidak ada operasi DML yang dilakukan pada sumber dalam periode panjang, latensi yang ditampilkan mungkin tidak akurat. Untuk memperbarui latensi, lakukan operasi DML pada sumber. Atau, buat tabel heartbeat — DTS menulis ke tabel tersebut setiap detik ketika Anda menyinkronkan seluruh database.
-
DTS secara berkala menjalankan
CREATE DATABASE IF NOT EXISTS \test\`` pada sumber untuk memajukan offset log biner. -
Untuk instans MySQL cluster-mode seperti Amazon Aurora MySQL, nama domain atau alamat IP yang dikonfigurasi untuk tugas harus selalu mengarah ke node read/write (RW). Jika tidak, tugas mungkin tidak berjalan dengan benar.
Sumber ApsaraDB RDS for MySQL
-
Instans read-only ApsaraDB RDS for MySQL 5.6 tidak dapat digunakan sebagai sumber karena tidak mencatat log transaksi.
-
DTS secara berkala menjalankan
CREATE DATABASE IF NOT EXISTS \test\`` pada sumber untuk memajukan offset log biner.
Siapkan tugas sinkronisasi
Langkah 1: Buka halaman Sinkronisasi Data
Gunakan konsol DTS atau konsol DMS.
Konsol DTS
-
Masuk ke Konsol DTS.Konsol DTS
-
Di panel navigasi kiri, klik Data Synchronization.
-
Di pojok kiri atas, pilih wilayah tempat tugas sinkronisasi berada.
Konsol DMS
Langkah-langkah aktual dapat berbeda tergantung pada mode dan tata letak konsol DMS. Lihat Mode simple dan Sesuaikan tata letak dan gaya konsol DMS.
-
Masuk ke Konsol DMS.Konsol DMS
-
Di bilah navigasi atas, arahkan kursor ke Data + AI lalu pilih DTS (DTS) > Data Synchronization.
-
Dari daftar drop-down di samping Data Synchronization Tasks, pilih wilayah tempat instans berada.
Langkah 2: Konfigurasi database sumber dan tujuan
-
Klik Create Task.
-
Konfigurasikan database sumber dan tujuan menggunakan parameter pada tabel berikut.
|
Kategori |
Parameter |
Deskripsi |
|
N/A |
Task Name |
Nama deskriptif untuk tugas DTS. DTS menghasilkan nama secara otomatis — ganti dengan nama yang memudahkan identifikasi tugas. Nama tugas tidak perlu unik. |
|
Database Sumber |
Select Existing Connection |
Jika Anda sudah memiliki instans database yang terdaftar di DTS, pilih dari daftar drop-down — DTS akan mengisi parameter lainnya secara otomatis. Di konsol DMS, pilih dari daftar Select a DMS database instance. Jika tidak, konfigurasikan parameter di bawah secara manual. |
|
Database Type |
Atur ke MySQL. |
|
|
Access Method |
Atur ke Alibaba Cloud Instance. |
|
|
Instance Region |
Pilih wilayah instans RDS MySQL sumber. |
|
|
Replicate Data Across Alibaba Cloud Accounts |
Pilih No jika database sumber milik Akun Alibaba Cloud saat ini. |
|
|
RDS Instance ID |
Pilih ID instans RDS MySQL sumber. |
|
|
Database Account |
Masukkan akun database. Untuk izin yang diperlukan, lihat Izin yang diperlukan untuk akun database. |
|
|
Database Password |
Kata sandi untuk akun database. |
|
|
Encryption |
Pilih Non-encrypted atau SSL-encrypted sesuai kebutuhan Anda. Untuk menggunakan enkripsi SSL, aktifkan terlebih dahulu pada instans RDS for MySQL sebelum mengonfigurasi tugas DTS. Lihat Gunakan sertifikat cloud untuk mengaktifkan enkripsi SSL. |
|
|
Database Tujuan |
Select Existing Connection |
Jika Anda sudah memiliki instans database yang terdaftar di DTS, pilih dari daftar drop-down — DTS akan mengisi parameter lainnya secara otomatis. Di konsol DMS, pilih dari daftar Select a DMS database instance. Jika tidak, konfigurasikan parameter di bawah secara manual. |
|
Database Type |
Atur ke Lindorm. |
|
|
Access Method |
Atur ke Alibaba Cloud Instance. |
|
|
Instance Region |
Pilih wilayah instans Lindorm tujuan. |
|
|
Instance ID |
Pilih ID instans Lindorm tujuan. |
|
|
Database Account |
Masukkan akun database instans Lindorm tujuan. Untuk izin yang diperlukan, lihat Izin yang diperlukan untuk akun database. |
|
|
Database Password |
Kata sandi untuk akun database. |
-
Klik Test Connectivity and Proceed.
CatatanAlamat IP server DTS harus ditambahkan ke pengaturan keamanan database sumber dan tujuan. Hal ini dapat dilakukan secara otomatis atau manual. Lihat Tambahkan alamat IP server DTS ke daftar putih. Jika sumber atau tujuan adalah database yang dikelola sendiri dengan metode akses selain Alibaba Cloud Instance, klik Test Connectivity di kotak dialog CIDR Blocks of DTS Servers.
Langkah 3: Konfigurasi objek sinkronisasi
Pada langkah Configure Objects, atur parameter berikut.
|
Parameter |
Deskripsi |
|
Synchronization Types |
Incremental Data Synchronization dipilih secara default. Secara opsional, Anda juga dapat memilih Full Data Synchronization. Schema Synchronization tidak tersedia. Ketika sinkronisasi data penuh diaktifkan, DTS menyinkronkan data historis dari sumber ke tujuan sebelum memulai sinkronisasi inkremental. |
|
Processing Mode of Conflicting Tables |
Pertahankan nilai default. |
|
Capitalization of Object Names in Destination Instance |
Mengontrol huruf besar/kecil nama database, tabel, dan kolom di tujuan. Default-nya adalah DTS default policy. Pilih opsi lain jika Anda ingin huruf besar/kecil sesuai dengan sumber atau tujuan. Lihat Tentukan huruf besar/kecil nama objek di instans tujuan. |
|
Source Objects |
Pilih database atau tabel yang akan disinkronkan, lalu klik ikon |
|
Selected Objects |
Jika nama database, tabel, atau kolom di instans Lindorm tujuan berbeda dari instans RDS MySQL sumber, gunakan pemetaan nama objek. Lihat Pemetaan nama tabel dan kolom. Catatan
Mengganti nama objek dengan pemetaan nama dapat menyebabkan objek dependen gagal disinkronkan. Untuk memfilter baris, klik kanan tabel di Selected Objects dan tentukan kondisi WHERE. Lihat Tentukan kondisi filter. Untuk memilih operasi SQL tertentu untuk sinkronisasi inkremental, klik kanan objek dan pilih operasi yang ingin disertakan. |
Langkah 4: Konfigurasi pengaturan lanjutan
Klik Next: Advanced Settings dan konfigurasikan parameter berikut.
|
Parameter |
Deskripsi |
|
Dedicated Cluster for Task Scheduling |
DTS menjadwalkan tugas ke kluster bersama secara default. Untuk stabilitas lebih tinggi, beli kluster khusus. Lihat Apa itu kluster khusus DTS. |
|
Retry Time for Failed Connections |
Berapa lama DTS mencoba ulang setelah kegagalan koneksi. Nilai valid: 10–1440 menit. Default: 720 menit. Atur minimal 30 menit. Jika DTS terhubung kembali dalam periode ini, tugas dilanjutkan secara otomatis; jika tidak, tugas gagal. Catatan
Ketika beberapa tugas berbagi sumber atau tujuan yang sama, periode retry terpendek yang berlaku. DTS menagih instans selama periode retry — atur nilai ini sesuai kebutuhan bisnis Anda. |
|
Retry Time for Other Issues |
Berapa lama DTS mencoba ulang setelah kegagalan operasi DDL atau DML. Nilai valid: 1–1440 menit. Default: 10 menit. Atur nilai lebih dari 10 menit. Nilai ini harus lebih kecil dari Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Synchronization |
Membatasi laju sinkronisasi data penuh untuk mengurangi beban pada tujuan. Konfigurasikan Queries per second (QPS) to the source database, RPS of Full Data Migration, dan Data migration speed for full migration (MB/s). Tersedia hanya jika Full Data Synchronization dipilih. |
|
Enable Throttling for Incremental Data Synchronization |
Membatasi laju sinkronisasi data inkremental. Konfigurasikan RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s). |
|
Environment Tag |
Tag opsional untuk mengidentifikasi lingkungan instans. |
|
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks |
Mengontrol apakah DTS menulis operasi SQL heartbeat ke database sumber. Pilih Yespengaturan pemberitahuan peringatan untuk melewati penulisan (nilai latensi mungkin ditampilkan untuk instans). Pilih No untuk menulis operasi heartbeat (hal ini dapat memengaruhi backup fisik dan kloning database sumber). |
|
Configure ETL |
Pilih Yes untuk mengaktifkan fitur ekstrak, transformasi, muat (ETL) dan masukkan pernyataan pemrosesan data. Lihat Apa itu ETL? dan Konfigurasi ETL dalam tugas migrasi data atau sinkronisasi data. Pilih No untuk melewati. |
|
Monitoring and Alerting |
Pilih Yes untuk menerima notifikasi ketika tugas gagal atau latensi melebihi ambang batas. Konfigurasikan ambang batas peringatan dan pengaturan notifikasi. Lihat Konfigurasi pemantauan dan peringatan saat membuat tugas DTS. Pilih No untuk menonaktifkan peringatan. |
Langkah 5: Jalankan pemeriksaan awal
Klik Next: Save Task Settings and Precheck.
Untuk melihat pratinjau parameter API untuk konfigurasi tugas ini, arahkan kursor ke Next: Save Task Settings and Precheck lalu klik Preview OpenAPI parameters sebelum melanjutkan.
DTS menjalankan pemeriksaan awal sebelum memulai tugas. Jika ada item yang gagal:
-
Klik View Details di samping item yang gagal, analisis penyebabnya, perbaiki masalah, lalu klik Precheck Again.
-
Jika item peringatan tidak dapat diabaikan, klik View Details di samping item yang gagal, atasi masalah, lalu jalankan pemeriksaan awal lagi.
-
Jika item peringatan dapat diabaikan, klik Confirm Alert Details, lalu klik Ignore di dialog detail, klik OK, lalu klik Precheck Again. Mengabaikan item peringatan dapat menyebabkan ketidakkonsistenan data.
Langkah 6: Beli instans
-
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
-
Di halaman pembelian, konfigurasikan parameter berikut.
|
Parameter |
Deskripsi |
|
Billing Method |
Subscription: Bayar di muka untuk jangka waktu tetap. Lebih hemat biaya untuk penggunaan jangka panjang. Pay-as-you-go: Ditagih per jam. Cocok untuk penggunaan jangka pendek — rilis instans ketika tidak lagi diperlukan untuk menghentikan tagihan. |
|
Resource Group Settings |
Kelompok sumber daya untuk instans. Default: default resource group. Lihat Apa itu Resource Management? |
|
Instance Class |
Kecepatan sinkronisasi bervariasi berdasarkan kelas instans. Pilih sesuai kebutuhan Anda. Lihat Kelas instans untuk instansi sinkronisasi data. |
|
Subscription Duration |
Hanya tersedia untuk metode penagihan Subscription. Opsi: 1–9 bulan, 1 tahun, 2 tahun, 3 tahun, atau 5 tahun. |
-
Baca dan pilih Data Transmission Service (Pay-as-you-go) Service Terms.
-
Klik Buy and Start, lalu klik OK di dialog konfirmasi.
Tugas muncul di daftar tugas. Pantau perkembangannya dari sana.