Gunakan Data Transmission Service (DTS) untuk menyinkronkan data dari instans ApsaraDB RDS for MySQL ke instans ApsaraDB RDS for PostgreSQL secara real time. DTS mendukung sinkronisasi skema, sinkronisasi data penuh awal, dan sinkronisasi data inkremental sehingga Anda dapat melakukan migrasi data dengan downtime minimal dan menjaga database tujuan tetap mutakhir.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Instans sumber ApsaraDB RDS for MySQL. Untuk informasi lebih lanjut, lihat Buat instans ApsaraDB RDS for MySQL.
Instans tujuan ApsaraDB RDS for PostgreSQL. Untuk informasi lebih lanjut, lihat Buat instans ApsaraDB RDS for PostgreSQL.
Ruang penyimpanan yang cukup tersedia pada instans tujuan untuk menampung seluruh data dari database sumber.
Penagihan
| Jenis sinkronisasi | Biaya |
|---|---|
| Sinkronisasi skema dan sinkronisasi data penuh | Gratis |
| Sinkronisasi data inkremental | Dikenai biaya. Lihat Ikhtisar penagihan. |
Topologi sinkronisasi yang didukung
Sinkronisasi satu arah satu-ke-satu
Sinkronisasi satu arah satu-ke-banyak
Sinkronisasi satu arah banyak-ke-satu
Operasi SQL yang dapat disinkronkan
| Jenis operasi | Operasi yang didukung |
|---|---|
| DML | INSERT, UPDATE, DELETE |
Batasan
Tinjau batasan berikut sebelum mengonfigurasi tugas.
Persyaratan database sumber
Tabel harus memiliki kendala PRIMARY KEY atau UNIQUE dengan semua field bernilai unik. Jika tidak, catatan duplikat mungkin muncul di database tujuan.
Jika Anda memilih tabel sebagai objek sinkronisasi dan perlu mengganti nama tabel atau kolom, satu tugas mendukung hingga 1.000 tabel. Untuk lebih dari 1.000 tabel, konfigurasikan beberapa tugas atau sinkronkan seluruh database dalam satu tugas.
Jangan menjalankan pernyataan DDL selama sinkronisasi skema atau sinkronisasi data penuh. Perubahan DDL selama fase ini menyebabkan tugas gagal.
Perubahan data akibat pemulihan backup fisik atau operasi kaskade tidak dicatat atau disinkronkan ke database tujuan selama instansi sinkronisasi data sedang berjalan. Jika hal ini terjadi, Anda dapat menghapus database dan tabel yang terdampak dari objek sinkronisasi lalu menambahkannya kembali. Untuk informasi lebih lanjut, lihat Ubah objek yang akan disinkronkan.
MySQL 8.0.23 dan versi setelahnya: Jika data yang akan disinkronkan mencakup kolom tak terlihat (invisible columns), DTS tidak dapat membaca kolom tersebut dan menyebabkan kehilangan data. Untuk membuat kolom menjadi terlihat, jalankan:
ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE;Tabel tanpa primary key secara otomatis menghasilkan primary key tak terlihat — buat juga primary key tersebut menjadi terlihat. Lihat Invisible Columns dan Generated Invisible Primary Keys.
Jika fitur EncDB diaktifkan pada instans sumber, sinkronisasi data penuh tidak dapat dilakukan. Instans yang mengaktifkan Transparent Data Encryption (TDE) mendukung sinkronisasi skema, sinkronisasi data penuh, dan sinkronisasi data inkremental.
Persyaratan log biner
ApsaraDB RDS for MySQL
Binary logging diaktifkan secara default pada instans ApsaraDB RDS for MySQL. Verifikasi parameter berikut:
| Parameter | Nilai yang diperlukan |
|---|---|
binlog_row_image | full |
Jikabinlog_row_imagetidak diatur kefull, pesan error ditampilkan selama Pemeriksaan Awal dan tugas sinkronisasi data tidak dapat dimulai. Instans ApsaraDB RDS for MySQL 5.6 read-only, yang tidak mencatat log transaksi, tidak dapat digunakan sebagai database sumber.
Log biner harus disimpan selama minimal tujuh hari. Jika DTS tidak dapat membaca log biner, tugas sinkronisasi mungkin gagal, dan ketidakkonsistenan atau kehilangan data dapat terjadi. Lihat Kelola file log biner.
Database MySQL yang dikelola sendiri
Jika sumber Anda adalah database MySQL yang dikelola sendiri, konfigurasikan parameter berikut sebelum memulai tugas:
| Parameter | Nilai yang diperlukan | Catatan |
|---|---|---|
binlog_format | row | |
binlog_row_image | full | |
log_slave_updates | ON | Hanya diperlukan untuk kluster dual-primary |
Lihat Buat akun untuk database MySQL yang dikelola sendiri dan konfigurasikan binary logging.
Jika terjadi alih bencana (switchover) primary/secondary pada database sumber saat tugas sedang berjalan, tugas akan gagal.
Objek dan tipe data
Hanya tabel yang dapat dipilih sebagai objek sinkronisasi. DTS tidak menyinkronkan view, trigger, atau prosedur tersimpan.
Tipe data berikut tidak didukung: BIT, VARBIT, GEOMETRY, ARRAY, UUID, TSQUERY, TSVECTOR, TXID_SNAPSHOT, dan POINT.
Indeks awalan tidak dapat disinkronkan. Jika database sumber berisi indeks awalan, tugas mungkin gagal.
Jangan gunakan alat seperti pt-online-schema-change untuk operasi DDL Online selama sinkronisasi tingkat tabel. Gunakan Data Management (DMS) sebagai gantinya.
Penanganan kunci asing
Selama sinkronisasi skema, DTS menyinkronkan foreign keys dari database sumber ke database tujuan.
Selama sinkronisasi data penuh dan sinkronisasi data inkremental, DTS sementara menonaktifkan pemeriksaan kendala kunci asing dan operasi kaskade pada tingkat sesi. Jika Anda menjalankan operasi cascade update atau delete pada database sumber selama sinkronisasi, ketidakkonsistenan data mungkin terjadi.
Jika Anda menggunakan akun dengan hak istimewa atau superuser untuk database tujuan dan tabel berisi foreign keys, trigger, atau event trigger, DTS sementara mengatur session_replication_role ke replica pada tingkat sesi. Jika akun tidak memiliki izin yang diperlukan, atur session_replication_role ke replica secara manual. Setelah tugas dirilis, ubah nilai kembali ke origin.
Pertimbangan kinerja
Evaluasi dampak terhadap kinerja database sumber dan tujuan sebelum memulai. Jalankan sinkronisasi selama jam sepi.
Selama sinkronisasi data penuh awal, DTS menggunakan sumber daya baca dan tulis kedua database, yang meningkatkan beban server.
Operasi INSERT konkuren selama sinkronisasi data penuh awal menyebabkan fragmentasi pada tabel tujuan. Setelah sinkronisasi data penuh selesai, ruang tabel tujuan akan lebih besar daripada sumber.
Jangan menulis data ke database tujuan dari sumber lain selama sinkronisasi karena hal ini dapat menyebabkan ketidakkonsistenan atau kehilangan data.
Latensi sinkronisasi
DTS menghitung latensi sinkronisasi berdasarkan timestamp catatan terbaru yang disinkronkan di tujuan dan timestamp saat ini di sumber. Jika tidak ada operasi DML yang dijalankan di sumber dalam periode yang lama, latensi yang dilaporkan mungkin tidak akurat. Jalankan operasi DML di sumber untuk memperbarui pembacaan latensi.
Tips: Jika Anda menyinkronkan seluruh database, buat tabel heartbeat yang menerima pembaruan setiap detik agar latensi tetap akurat.
DTS juga menjalankan CREATE DATABASE IF NOT EXISTS 'test' pada database sumber secara berkala untuk memajukan posisi file log biner.
Pemulihan kegagalan tugas DTS
Jika tugas DTS gagal, tim dukungan teknis DTS akan berusaha memulihkannya dalam waktu 8 jam. Selama pemulihan, tugas mungkin dimulai ulang dan parameter tugas (bukan parameter database) mungkin dimodifikasi.
Menyiapkan tugas sinkronisasi data
Penyiapan terdiri dari sembilan langkah: buka halaman Tugas Sinkronisasi Data, pilih wilayah, konfigurasi database sumber dan tujuan, uji konektivitas, konfigurasi objek sinkronisasi dan pengaturan lanjutan, jalankan Pemeriksaan Awal, beli instans, dan mulai tugas.
Langkah 1: Buka halaman Tugas Sinkronisasi Data
Masuk ke Konsol Data Management (DMS).
Pada bilah navigasi atas, klik Data + AI.
Pada panel navigasi kiri, pilih DTS (DTS) > Data Synchronization.
Operasi mungkin berbeda tergantung pada mode dan tata letak Konsol DMS. Lihat Mode simple dan Sesuaikan tata letak dan gaya Konsol DMS. Anda juga dapat langsung menuju halaman Tugas Sinkronisasi Data di Konsol DTS baru.
Langkah 2: Pilih wilayah
Di sisi kanan Tugas Sinkronisasi Data, pilih wilayah tempat instansi sinkronisasi data berada.
Di Konsol DTS baru, pilih wilayah pada bilah navigasi atas.
Langkah 3: Konfigurasi database sumber dan tujuan
Klik Create Task. Pada wizard Create Data Synchronization Task, konfigurasikan parameter berikut.
Source Database
| Parameter | Deskripsi |
|---|---|
| Task Name | Nama tugas DTS. DTS menghasilkan nama secara otomatis. Tentukan nama deskriptif untuk mengidentifikasi tugas. Nama tidak perlu unik. |
| Database Type | Pilih MySQL. |
| Connection Type | Pilih Alibaba Cloud Instance. |
| Instance Region | Wilayah tempat instans ApsaraDB RDS for MySQL sumber berada. |
| Replicate Data Across Alibaba Cloud Accounts | Pilih No untuk sinkronisasi dalam akun yang sama. |
| RDS Instance ID | ID instans ApsaraDB RDS for MySQL sumber. |
| Database Account | Akun database instans sumber. |
| Database Password | Kata sandi untuk akun database. |
| Encryption | Pilih Non-encrypted atau SSL-encrypted. Untuk menggunakan enkripsi SSL, aktifkan enkripsi SSL pada instans sumber sebelum mengonfigurasi tugas ini. Lihat Gunakan sertifikat cloud untuk mengaktifkan enkripsi SSL. |
Destination Database
| Parameter | Deskripsi |
|---|---|
| Database Type | Pilih PostgreSQL. |
| Connection Type | Pilih Alibaba Cloud Instance. |
| Instance Region | Wilayah tempat instans ApsaraDB RDS for PostgreSQL tujuan berada. |
| Instance ID | ID instans ApsaraDB RDS for PostgreSQL tujuan. |
| Database Name | Nama database tujuan. |
| Database Account | Akun database instans tujuan. Akun harus memiliki izin owner pada skema. Lihat Buat akun. |
| Database Password | Kata sandi untuk akun database. |
Langkah 4: Uji konektivitas dan lanjutkan
Klik Test Connectivity and Proceed.
DTS secara otomatis menambahkan blok CIDR servernya ke daftar putih instans database Alibaba Cloud seperti ApsaraDB RDS for MySQL. Untuk database yang dikelola sendiri pada instance Elastic Compute Service (ECS), DTS menambahkan blok CIDR ke aturan grup keamanan ECS — pastikan instance ECS dapat mengakses database. Untuk database yang dikelola sendiri di pusat data atau penyedia cloud pihak ketiga, tambahkan secara manual blok CIDR server DTS ke daftar putih database. Lihat Tambahkan blok CIDR server DTS.
Menambahkan blok CIDR server DTS ke daftar putih database atau aturan grup keamanan ECS menimbulkan risiko keamanan. Sebelum menggunakan DTS, ambil langkah pencegahan: perkuat keamanan username dan password, batasi port yang terbuka, autentikasi panggilan API, dan audit rutin aturan daftar putih serta grup keamanan. Hapus blok CIDR yang tidak sah. Atau, hubungkan database ke DTS melalui Express Connect, VPN Gateway, atau Smart Access Gateway.
Langkah 5: Konfigurasi objek sinkronisasi dan pengaturan lanjutan
Pengaturan dasar
| Parameter | Deskripsi |
|---|---|
| Synchronization Types | Pilih Schema Synchronization, Full Data Synchronization, dan Incremental Data Synchronization. Setelah Pemeriksaan Awal, DTS menyinkronkan data historis dari sumber ke tujuan, yang menjadi dasar untuk sinkronisasi inkremental berikutnya. |
| Processing Mode of Conflicting Tables | Precheck and Report Errors: DTS memeriksa apakah tujuan berisi tabel dengan nama yang sama seperti di sumber. Jika nama tabel identik ditemukan, error ditampilkan selama Pemeriksaan Awal dan tugas tidak dapat dimulai. Gunakan fitur pemetaan nama objek untuk mengganti nama tabel yang bentrok. Lihat Pemetaan nama objek. Ignore Errors and Proceed: Melewati pemeriksaan nama tabel identik. Peringatan Hal ini dapat menyebabkan ketidakkonsistenan data. Selama sinkronisasi data penuh, DTS tidak menimpa catatan yang sudah ada dengan primary key atau unique key yang sama — catatan tujuan yang sudah ada dipertahankan. Selama sinkronisasi data inkremental, DTS menimpa catatan yang cocok. Jika skema sumber dan tujuan berbeda, beberapa kolom mungkin tidak disinkronkan atau tugas mungkin gagal. |
| Capitalization of Object Names in Destination Instance | Kebijakan kapitalisasi untuk nama database, tabel, dan kolom. Default: Kebijakan default DTS. Lihat Tentukan kapitalisasi nama objek di instans tujuan. |
| Source Objects | Pilih objek dari Source Objects lalu klik ikon panah untuk memindahkannya ke Selected Objects. Anda dapat memilih kolom, tabel, atau database. Jika memilih tabel atau kolom, DTS tidak menyinkronkan view, trigger, atau prosedur tersimpan. |
| Selected Objects | Untuk mengganti nama satu objek, klik kanan objek tersebut di bagian Selected Objects. Untuk mengganti nama beberapa objek sekaligus, klik Batch Edit di pojok kanan atas. Lihat Pemetaan nama objek. Catatan Bidang waktu mendukung tipe data TIMESTAMP. Jika nilai bidang waktu di sumber adalah |
Pengaturan lanjutan
| Parameter | Deskripsi |
|---|---|
| Monitoring and Alerting | Pilih Yes untuk mengonfigurasi peringatan saat tugas gagal atau latensi sinkronisasi melebihi ambang batas. Lihat Konfigurasi pemantauan dan peringatan. |
| Retry Time for Failed Connections | Rentang waktu di mana DTS mencoba koneksi ulang setelah gagal. Nilai valid: 10–1.440 menit. Default: 720 menit. Atur lebih dari 30 menit. Jika DTS terhubung kembali dalam rentang waktu yang ditentukan, tugas dilanjutkan. Jika tidak, tugas gagal. Catatan Saat beberapa tugas berbagi database sumber atau tujuan yang sama, rentang waktu retry terpendek yang berlaku. DTS menagih instans selama upaya retry. |
| Configure ETL | Pilih Yes untuk mengaktifkan fitur ekstrak, transformasi, muat (ETL) dan masukkan pernyataan pemrosesan data. Lihat Konfigurasi ETL dalam tugas migrasi atau sinkronisasi data dan Apa itu ETL? |
Langkah 6: Simpan pengaturan dan jalankan Pemeriksaan Awal
Untuk melihat parameter API untuk konfigurasi tugas ini, arahkan kursor ke Next: Save Task Settings and Precheck lalu klik Preview OpenAPI parameters.
Klik Next: Save Task Settings and Precheck.
DTS menjalankan Pemeriksaan Awal sebelum tugas dapat dimulai. Jika Pemeriksaan Awal gagal, klik View Details di sebelah setiap item yang gagal, selesaikan masalah berdasarkan hasil pemeriksaan, lalu klik Precheck Again. Jika item Pemeriksaan Awal memicu peringatan yang dapat diabaikan, klik Confirm Alert Details, klik Ignore pada kotak dialog, klik OK, lalu klik Precheck Again. Mengabaikan item peringatan dapat menyebabkan ketidakkonsistenan data.
Langkah 7: Tunggu hingga Pemeriksaan Awal lolos
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
Langkah 8: Beli instans sinkronisasi
Pada halaman pembelian, konfigurasikan parameter berikut.
| Parameter | Deskripsi |
|---|---|
| Billing Method | Subscription: Bayar di muka untuk periode tetap. Lebih hemat biaya untuk penggunaan jangka panjang. Pay-as-you-go: Ditagih per jam. Cocok untuk penggunaan jangka pendek. Rilis instans saat tidak lagi diperlukan untuk menghindari tagihan berkelanjutan. |
| Resource Group Settings | Kelompok sumber daya untuk instans sinkronisasi. Default: default resource group. Lihat Apa itu Resource Management? |
| Instance Class | Kecepatan sinkronisasi bervariasi berdasarkan kelas instans. 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. |
Langkah 9: Mulai tugas
Baca dan pilih Data Transmission Service (Pay-as-you-go) Service Terms, lalu klik Buy and Start. Pada kotak dialog, klik OK.
Tugas muncul di daftar tugas. Lacak progresnya dari sana.