Gunakan Data Transmission Service (DTS) untuk menyinkronkan data secara berkelanjutan dari instans ApsaraDB RDS for MySQL ke instans PolarDB-X 1.0, mencakup sinkronisasi data penuh dan inkremental (INSERT, UPDATE, DELETE).
Ikhtisar tugas: Untuk mengonfigurasi tugas sinkronisasi, ikuti langkah-langkah berikut secara berurutan:
-
Persiapkan instans dan akun tujuan (prasyarat)
-
Konfigurasikan binary logging pada sumber
-
Buat tugas sinkronisasi di DTS atau DMS
-
Jalankan pemeriksaan awal dan beli instans
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
-
Instans PolarDB-X 1.0 tujuan dengan ruang penyimpanan yang tersedia melebihi ruang yang digunakan oleh instans RDS MySQL sumber. Tetapkan kelas penyimpanan ke RDS MySQL saat membuat instans. Lihat Buat instans PolarDB-X 1.0.
-
Database dan tabel telah dibuat sebelumnya di instans PolarDB-X 1.0 tujuan. Sinkronisasi skema tidak didukung — DTS tidak membuat skema target untuk Anda. Lihat Buat database dan Lakukan operasi SQL dasar.
-
Set karakter sumber bukan utf8mb3. Memilih data utf8mb3 untuk sinkronisasi inkremental menyebabkan tugas gagal.
-
Akun database dengan izin yang diperlukan. Lihat Izin yang diperlukan untuk akun database.
-
Binary logging dikonfigurasi pada database sumber. Lihat Persyaratan binary logging.
Persyaratan binary logging
DTS menggunakan log biner untuk menangkap perubahan inkremental. Persyaratannya berbeda tergantung apakah sumber Anda adalah instans ApsaraDB RDS for MySQL atau database MySQL yang dikelola sendiri.
ApsaraDB RDS for MySQL
Binary logging diaktifkan secara default pada instans ApsaraDB RDS for MySQL. Pastikan bahwa:
-
Parameter
binlog_row_imagediatur kefull. Jika tidak, terjadi kesalahan pemeriksaan awal dan tugas tidak dapat dimulai. Lihat Atur parameter instans. -
Log biner lokal disimpan selama minimal 3 hari (disarankan 7 hari). Jika log dipurge sebelum DTS sempat membacanya, tugas akan gagal. Dalam kasus ekstrem, dapat terjadi kehilangan data atau inkonsistensi. Tugas yang gagal karena retensi log tidak mencukupi tidak dicakup oleh Perjanjian Tingkat Layanan (SLA) DTS. Untuk mengatur Retention Period log biner lokal, lihat Hapus log lokal secara otomatis.
Instans hanya baca ApsaraDB RDS for MySQL 5.6 tidak mencatat log transaksi dan tidak dapat digunakan sebagai database sumber.
MySQL yang dikelola sendiri
Untuk database MySQL yang dikelola sendiri, konfigurasikan parameter berikut:
|
Parameter |
Nilai yang diperlukan |
|
|
|
|
|
|
Simpan log biner selama minimal 7 hari. Jika log dipurge sebelum DTS sempat membacanya, tugas akan gagal, dan masalah yang disebabkan oleh retensi log tidak mencukupi tidak dicakup oleh SLA DTS.
Persyaratan tambahan:
-
Arsitektur primary/primary: Aktifkan parameter
log_slave_updatesagar DTS dapat memperoleh semua log biner dari kedua node. Lihat Buat akun database untuk database MySQL yang dikelola sendiri dan konfigurasikan binary logging. -
Amazon Aurora MySQL atau instans mode klaster: Pastikan nama domain atau alamat IP yang dikonfigurasi untuk tugas selalu mengarah ke node read/write (RW). Jika tidak, tugas mungkin tidak berjalan dengan baik.
Izin yang diperlukan untuk akun database
|
Database |
Izin yang diperlukan |
Cara membuat dan memberi otorisasi |
|
ApsaraDB RDS for MySQL sumber |
Baca dan tulis |
|
|
PolarDB-X 1.0 tujuan |
Baca dan tulis |
Jika akun database sumber tidak dibuat di konsol ApsaraDB RDS for MySQL, pastikan akun tersebut memiliki izin REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW, dan SELECT.
Penagihan
|
Jenis sinkronisasi |
Penagihan |
|
Sinkronisasi data penuh |
Gratis |
|
Sinkronisasi data inkremental |
Dikenai biaya. Lihat Ikhtisar penagihan. |
Batasan dan catatan penggunaan
Batasan database sumber
-
Server tempat database sumber di-deploy harus memiliki bandwidth keluar yang mencukupi. Bandwidth yang tidak mencukupi mengurangi kecepatan sinkronisasi.
-
Tabel yang akan disinkronkan harus memiliki primary key atau kendala UNIK dengan nilai bidang unik. Tabel yang tidak memiliki kendala ini dapat menghasilkan data duplikat di tujuan.
-
Hanya tabel yang dapat dipilih sebagai objek sinkronisasi.
-
Saat menggunakan pemetaan nama objek (misalnya, memetakan nama tabel atau kolom), satu tugas mendukung maksimal 1.000 tabel. Untuk menyinkronkan lebih dari 1.000 tabel dengan pemetaan nama, bagi menjadi beberapa tugas.
-
Kelas penyimpanan instans PolarDB-X 1.0 harus RDS MySQL (RDS kustom privat). PolarDB MySQL tidak didukung.
-
Jangan lakukan operasi DDL selama sinkronisasi data penuh — hal ini menyebabkan tugas gagal.
Selama fase sinkronisasi penuh, DTS melakukan kueri ke database sumber dan dapat menghasilkan kunci metadata, yang dapat memblokir operasi DDL pada sumber.
-
Perubahan data dari operasi yang tidak tercatat dalam log biner tidak disinkronkan. Ini mencakup pemulihan data menggunakan backup fisik dan operasi kaskade.
Jika hal ini terjadi, hapus database atau tabel yang terpengaruh dari objek sinkronisasi, lalu tambahkan kembali jika bisnis Anda mengizinkannya. Lihat Ubah objek sinkronisasi.
-
Kolom tak terlihat (MySQL 8.0.23 dan seterusnya): Jika data yang akan disinkronkan berisi kolom tak terlihat, DTS tidak dapat memperoleh data di kolom tersebut, yang dapat menyebabkan kehilangan data. Jalankan perintah berikut untuk menjadikan kolom tak terlihat menjadi terlihat:
ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE;Tabel tanpa primary key secara otomatis menghasilkan primary key tak terlihat, yang juga harus dijadikan terlihat. Lihat Invisible Columns dan Generated Invisible Primary Keys.
-
Jika tabel PolarDB-X 1.0 tujuan memiliki auto partitioning aktif (
auto_partition=true), setiap pernyataan DDL yang dieksekusi pada sumber hanya boleh berisi satualter_specification. Jika tidak, DTS melaporkan kesalahan (TDDL-4998:Multi alter specifications when create GSI not support yet). Untuk mengeksekusi pernyataan DDL yang berisi beberapa itemalter_specification, pisahkan setiapalter_specificationmenjadi pernyataan DDL terpisah dan eksekusi satu per satu. Untuk informasi lebih lanjut, lihat ALTER TABLE.
Batasan lainnya
-
EncDB (always-confidential): Sinkronisasi data penuh tidak didukung ketika fitur always-confidential (EncDB) diaktifkan pada instans RDS MySQL sumber.
Instans dengan Enkripsi Data Transparan (TDE) yang diaktifkan mendukung sinkronisasi skema, sinkronisasi data penuh, dan sinkronisasi data inkremental.
-
Jika Anda melakukan operasi DDL online yang menggunakan tabel sementara di database sumber, seperti menggabungkan beberapa tabel, data dapat hilang di database tujuan atau instans DTS dapat gagal.
-
Jangan gunakan alat seperti pt-online-schema-change untuk melakukan operasi DDL online pada objek yang sedang disinkronkan — hal ini menyebabkan tugas gagal.
-
Menulis data dari sumber lain ke database tujuan selama sinkronisasi dapat menyebabkan inkonsistensi data.
-
Evaluasi dampak kinerja pada database sumber dan tujuan sebelum memulai sinkronisasi. Jalankan tugas sinkronisasi selama jam sepi jika memungkinkan. Sinkronisasi data penuh menggunakan sumber daya baca dan tulis pada kedua database dan dapat meningkatkan beban server.
-
Setelah sinkronisasi data penuh selesai, operasi INSERT konkuren dapat menyebabkan fragmentasi pada tabel tujuan. Ruang tabel yang digunakan pada database tujuan mungkin lebih besar daripada database sumber.
-
Jika instans DTS gagal, tim dukungan DTS akan berusaha memulihkannya dalam waktu 8 jam. Operasi pemulihan dapat mencakup me-restart instans atau menyesuaikan parameter instans DTS (bukan parameter database). Lihat Ubah parameter instans.
Kasus khusus untuk sumber MySQL yang dikelola sendiri
-
Jika terjadi failover primary/secondary di database sumber selama sinkronisasi, tugas akan gagal.
-
Latensi sinkronisasi dihitung dari selisih antara timestamp saat ini dan timestamp dari catatan data terakhir yang disinkronkan. Jika tidak ada operasi DML yang dilakukan pada database sumber dalam waktu lama, latensi yang ditampilkan mungkin tidak akurat. Lakukan operasi DML pada sumber untuk memperbarui pembacaan latensi.
Jika Anda memilih untuk menyinkronkan seluruh database, buatlah tabel heartbeat. DTS memperbarui atau menulis ke tabel heartbeat setiap detik untuk menjaga akurasi pembacaan latensi.
-
DTS secara berkala menjalankan
CREATE DATABASE IF NOT EXISTS `test`pada database sumber untuk memajukan offset log biner.
Kasus khusus untuk sumber ApsaraDB RDS for MySQL
-
Instans ApsaraDB RDS for MySQL yang tidak mencatat log transaksi, seperti instans hanya baca ApsaraDB RDS for MySQL 5.6, tidak dapat digunakan sebagai database sumber.
-
DTS secara berkala menjalankan
CREATE DATABASE IF NOT EXISTS `test`pada database sumber untuk memajukan offset log biner.
Buat tugas sinkronisasi data
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 instans sinkronisasi berada.
Konsol DMS
Catatan
Operasi 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 pointer ke Data + AI lalu pilih DTS (DTS) > Data Synchronization.
-
Dari daftar drop-down di sebelah kanan Data Synchronization Tasks, pilih wilayah tempat instans sinkronisasi berada.
Langkah 2: Konfigurasi database sumber dan tujuan
-
Klik Create Task.
-
Di halaman konfigurasi tugas, atur parameter berikut.
Umum
|
Parameter |
Deskripsi |
|
Task Name |
DTS secara otomatis menghasilkan nama tugas. Tentukan nama deskriptif agar tugas mudah diidentifikasi. Nama tidak perlu unik. |
Database sumber
|
Parameter |
Nilai |
|
Select Existing Connection |
Pilih instans database terdaftar dari daftar drop-down. DTS akan mengisi otomatis parameter lainnya. Jika instans belum terdaftar di DTS, konfigurasikan parameter di bawah secara manual. Di konsol DMS, pilih instans dari daftar Select a DMS database instance. |
|
Database Type |
MySQL |
|
Access Method |
Alibaba Cloud Instance |
|
Instance Region |
Wilayah tempat instans ApsaraDB RDS for MySQL sumber berada |
|
Replicate Data Across Alibaba Cloud Accounts |
No (untuk instans di bawah akun saat ini) |
|
RDS Instance ID |
ID instans ApsaraDB RDS for MySQL sumber |
|
Database Account |
Akun instans sumber. Lihat Izin yang diperlukan untuk akun database. |
|
Database Password |
Kata sandi untuk akun database |
|
Encryption |
Non-encrypted atau SSL-encrypted. Untuk menggunakan enkripsi SSL, aktifkan enkripsi SSL pada instans RDS sebelum mengonfigurasi tugas ini. Lihat Gunakan sertifikat cloud untuk mengaktifkan enkripsi SSL. |
Database tujuan
|
Parameter |
Nilai |
|
Select Existing Connection |
Pilih instans database terdaftar dari daftar drop-down. DTS akan mengisi otomatis parameter lainnya. Jika instans belum terdaftar di DTS, konfigurasikan parameter di bawah secara manual. Di konsol DMS, pilih instans dari daftar Select a DMS database instance. |
|
Database Type |
PolarDB-X 1.0 |
|
Access Method |
Alibaba Cloud Instance |
|
Instance Region |
Wilayah tempat instans PolarDB-X 1.0 tujuan berada |
|
Instance ID |
ID instans PolarDB-X 1.0 tujuan |
|
Database Account |
Akun instans tujuan. Lihat Izin yang diperlukan untuk akun database. |
|
Database Password |
Kata sandi untuk akun database |
-
Klik Test Connectivity and Proceed.
Pastikan blok CIDR server DTS telah ditambahkan ke pengaturan keamanan database sumber dan tujuan. Lihat Tambahkan alamat IP server DTS ke daftar putih. Jika database sumber atau tujuan adalah database yang dikelola sendiri yang tidak diakses melalui Alibaba Cloud Instance, klik Test Connectivity di kotak dialog CIDR Blocks of DTS Servers.
Langkah 3: Konfigurasi objek sinkronisasi
Di langkah Configure Objects, atur parameter berikut.
|
Parameter |
Deskripsi |
|
Synchronization Types |
Incremental Data Synchronization dipilih secara default. Secara opsional pilih Full Data Synchronization. Schema Synchronization tidak dapat dipilih — buat skema target secara manual sebelum memulai tugas. Setelah pemeriksaan awal berhasil, DTS menyinkronkan data historis dari sumber sebagai dasar untuk sinkronisasi inkremental. |
|
Processing Mode of Conflicting Tables |
Precheck and Report Errors: memeriksa apakah tujuan berisi tabel dengan nama identik dengan sumber. Jika nama identik ada, kesalahan dikembalikan selama pemeriksaan awal dan tugas tidak dapat dimulai. Untuk menangani konflik penamaan, gunakan pemetaan nama objek untuk mengganti nama tabel yang disinkronkan. Lihat Pemetaan nama objek. <br><br> Ignore Errors and Proceed: melewati pemeriksaan awal untuk nama tabel identik. > Peringatan
Opsi ini dapat menyebabkan inkonsistensi data. Jika sumber dan tujuan memiliki skema yang sama dan catatan di tujuan memiliki primary key atau unique key yang sama dengan catatan sumber: selama sinkronisasi penuh, DTS mempertahankan catatan tujuan yang ada; selama sinkronisasi inkremental, DTS menimpanya. Jika skema berbeda, inisialisasi dapat gagal atau hanya kolom parsial yang disinkronkan. |
|
Capitalization of object names in destination instance |
Mengontrol kapitalisasi nama database, nama tabel, dan nama kolom di tujuan. Default: DTS default policy. Lihat Tentukan kapitalisasi nama objek di instans tujuan. |
|
Source Objects |
Pilih satu atau beberapa tabel lalu klik ikon panah untuk memindahkannya ke Selected Objects. Hanya tabel yang dapat dipilih sebagai objek sinkronisasi. |
|
Selected Objects |
Klik kanan objek untuk mengganti namanya (objek tunggal) atau klik Batch Edit untuk mengganti nama beberapa objek sekaligus. Lihat Pemetaan nama objek. Klik kanan tabel untuk memilih operasi DML tertentu untuk sinkronisasi inkremental (INSERT, UPDATE, DELETE) atau untuk mengatur kondisi filter WHERE. Lihat Atur kondisi filter. Jika Anda menggunakan pemetaan nama objek, objek lain yang bergantung pada objek yang dipetakan mungkin gagal disinkronkan. |
Klik Next: Advanced Settings.
Langkah 4: Konfigurasi pengaturan lanjutan
|
Parameter |
Description |
|
Dedicated Cluster for Task Scheduling |
Secara default, DTS menjadwalkan tugas ke shared cluster. Beli dedicated cluster untuk meningkatkan stabilitas sinkronisasi. Lihat What is a DTS dedicated cluster. |
|
Retry Time for Failed Connections |
Durasi waktu DTS melakukan retry setelah koneksi gagal. Nilai yang valid: 10–1.440 menit. Default: 720 menit. Kami menyarankan Anda mengatur parameter ini ke nilai lebih dari 30 menit. Jika DTS berhasil terhubung kembali dalam jangka waktu tersebut, tugas dilanjutkan; jika tidak, tugas gagal. Jika beberapa tugas menggunakan database sumber atau tujuan yang sama, retry time terpendek di antara tugas-tugas tersebut yang berlaku. DTS membebankan biaya instans selama periode retry. |
|
Retry Time for Other Issues |
Durasi waktu DTS melakukan retry setelah kegagalan operasi DDL atau DML. Nilai yang valid: 1–1.440 menit. Default: 10 menit. Kami menyarankan Anda mengatur parameter ini ke nilai lebih dari 10 menit. Nilai ini harus lebih kecil daripada Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Synchronization |
Membatasi penggunaan resource baca/tulis selama full data synchronization. Konfigurasikan QPS (queries per second) to the source database, RPS of Full Data Migration, dan Data migration speed for full migration (MB/s). Opsi ini tersedia hanya jika Full Data Synchronization dipilih. |
|
Enable Throttling for Incremental Data Synchronization |
Membatasi penggunaan resource selama incremental synchronization. Konfigurasikan RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s). |
|
Environment Tag |
Tag opsional untuk mengidentifikasi instans berdasarkan tipe lingkungan. |
|
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks |
Mengontrol apakah DTS menulis operasi SQL heartbeat ke database sumber. Yesalert notification settings: tidak menulis SQL heartbeat; instans DTS mungkin menampilkan nilai latency. No: menulis SQL heartbeat; hal ini dapat memengaruhi fitur seperti physical backup dan cloning pada database sumber. |
|
Configure ETL |
Menentukan apakah akan mengaktifkan fitur extract, transform, and load (ETL). Yes: konfigurasikan ETL dengan memasukkan statement pemrosesan data di editor kode. Lihat Configure ETL in a data migration or data synchronization task. No: ETL dinonaktifkan. Lihat What is ETL? |
|
Monitoring and Alerting |
Menentukan apakah akan mengonfigurasi peringatan. Yes: atur ambang batas peringatan dan kontak notifikasi; DTS akan memberi tahu mereka jika tugas gagal atau latency melebihi ambang batas. Lihat Configure monitoring and alerting when you create a DTS task. No: tidak ada peringatan. |
Langkah 5: Jalankan pemeriksaan awal
Klik Next: Save Task Settings and Precheck.
Untuk melihat parameter API untuk konfigurasi tugas ini, arahkan kursor ke Next: Save Task Settings and Precheck lalu klik Preview OpenAPI parameters.
Tugas menjalankan pemeriksaan awal sebelum dimulai. Tugas hanya dapat dimulai setelah pemeriksaan awal berhasil.
-
Jika ada item yang gagal, klik View Details di sebelah item yang gagal, perbaiki masalahnya, lalu klik Precheck Again.
-
Jika suatu item memicu peringatan yang dapat diabaikan, klik Confirm Alert Details, lalu klik Ignore > OK > Precheck Again. Mengabaikan item peringatan dapat menyebabkan inkonsistensi 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 durasi tetap; lebih hemat biaya untuk penggunaan jangka panjang. Pay-as-you-go: ditagih per jam; cocok untuk penggunaan jangka pendek. Lepaskan instans saat tidak lagi diperlukan untuk menghentikan penagihan. |
|
Resource Group Settings |
Kelompok sumber daya untuk instans sinkronisasi. Default: default resource group. Lihat Apa itu Resource Management? |
|
Instance Class |
Tier kinerja sinkronisasi. Lihat Kelas instans instansi sinkronisasi data. |
|
Subscription Duration |
Tersedia hanya untuk metode penagihan Subscription. Nilai valid: 1–9 bulan, atau 1, 2, 3, atau 5 tahun. |
-
Baca dan pilih Data Transmission Service (Pay-as-you-go) Service Terms.
-
Klik Buy and Start, lalu klik OK untuk mengonfirmasi.
Tugas muncul di daftar tugas. Pantau perkembangannya di sana.