All Products
Search
Document Center

Data Transmission Service:FAQ

Last Updated:May 20, 2026

Jika Anda menemui pesan error saat menggunakan Data Transmission Service (DTS), lihat Error umum untuk solusinya. Jika Anda tidak menerima pesan error spesifik, temukan masalah Anda dalam kategori di bawah ini.

Kategori masalah

Masalah umum terbagi ke dalam kategori berikut:

Masalah penagihan

Bagaimana cara penagihan DTS bekerja?

DTS menawarkan dua metode penagihan: langganan dan bayar sesuai pemakaian. Untuk informasi lebih lanjut, lihat Ikhtisar penagihan.

Bagaimana cara melihat tagihan DTS saya?

Untuk petunjuk cara melihat tagihan DTS Anda, lihat Lihat tagihan.

Apakah saya tetap dikenai biaya setelah menjeda instans DTS?

  • Instans migrasi tidak ditagih selama dijeda.

  • Anda tetap dikenai biaya untuk instans sinkronisasi data saat dijeda, terlepas dari apakah database dapat terhubung atau tidak. Hal ini karena DTS hanya menjeda penulisan data ke database tujuan. Namun, DTS tetap mengonsumsi sumber daya, seperti CPU dan memori, untuk terus-menerus terhubung ke database dan menarik log dari database sumber. Hal ini memungkinkan instans untuk segera dilanjutkan saat dijalankan kembali.

Mengapa harga sinkronisasi data lebih tinggi daripada migrasi data?

Sinkronisasi data memiliki harga lebih tinggi karena mencakup fitur-fitur lanjutan, seperti penyesuaian online objek sinkronisasi dan sinkronisasi dua arah antara database MySQL. Selain itu, sinkronisasi data menggunakan transmisi jaringan internal, yang menjamin latensi jaringan lebih rendah.

Apa yang terjadi jika akun saya memiliki pembayaran tertunda?

Untuk informasi lebih lanjut tentang dampak pembayaran tertunda, lihat Kedaluwarsa atau pembayaran tertunda.

Bagaimana cara melepaskan tugas berbasis langganan lebih awal?

Untuk melakukan ini, Anda harus terlebih dahulu mengonversi tugas langganan menjadi tugas bayar sesuai pemakaian, lalu berhenti berlangganan. Untuk informasi lebih lanjut tentang konversi tersebut, lihat Beralih antar metode penagihan.

Dapatkah saya mengonversi tugas langganan menjadi bayar sesuai pemakaian?

Ya, Anda bisa. Untuk informasi lebih lanjut, lihat Beralih antar metode penagihan.

Dapatkah saya mengonversi tugas bayar sesuai pemakaian menjadi langganan?

Anda dapat mengganti metode penagihan untuk tugas sinkronisasi atau pelacakan data. Untuk informasi lebih lanjut, lihat Beralih antar metode penagihan.

Catatan

Tugas migrasi data hanya mendukung metode penagihan bayar sesuai pemakaian.

Mengapa tugas DTS saya tiba-tiba mulai dikenai biaya?

Periode uji coba gratis Anda mungkin telah berakhir. DTS menawarkan uji coba gratis berbatas waktu untuk tugas yang menggunakan mesin database proprietary Alibaba Cloud sebagai tujuan. Setelah masa uji coba berakhir, biaya akan dikenakan secara otomatis.

Mengapa saya masih dikenai biaya untuk tugas yang telah dilepaskan?

DTS menagih tugas bayar sesuai pemakaian secara harian. Jika Anda menggunakan tugas DTS pada hari Anda melepaskannya, Anda akan dikenai biaya untuk penggunaan hari tersebut.

Bagaimana cara kerja penagihan bayar sesuai pemakaian?

DTS hanya menimbulkan biaya selama operasi normal tugas inkremental (termasuk jeda selama incremental synchronization, tetapi tidak termasuk jeda selama incremental migration). Untuk informasi lebih lanjut, lihat Metode penagihan.

Apakah DTS mengenakan biaya untuk transfer data?

Beberapa tugas DTS menimbulkan biaya jaringan publik dan transfer data, terlepas dari wilayah sumber dan tujuan. Tugas migrasi menimbulkan biaya lalu lintas jaringan publik jika Access Method database tujuan diatur ke Public IP Address. Tugas validasi penuh yang menggunakan mode Full field validation by row sampling menimbulkan biaya transfer data berdasarkan volume data yang divalidasi. Untuk informasi lebih lanjut, lihat Item penagihan.

Masalah performa dan spesifikasi

Apa perbedaan antara spesifikasi instans?

Untuk informasi lebih lanjut tentang perbedaan spesifikasi instans, lihat Spesifikasi tautan migrasi data dan Spesifikasi tautan sinkronisasi data.

Dapatkah saya meningkatkan spesifikasi instans saya?

Ya, Anda bisa. Untuk informasi lebih lanjut, lihat Tingkatkan spesifikasi tautan instans.

Dapatkah saya menurunkan spesifikasi instans saya?

Saat ini, hanya instans sinkronisasi yang didukung. Untuk informasi lebih lanjut, lihat Spesifikasi penurunan tautan instans.

Dapatkah tugas DTS diturunkan (spesifikasi diturunkan)?

Tugas DTS yang memenuhi syarat mendukung penurunan (pengurangan spesifikasi tautan). Untuk detailnya, lihat Penurunan spesifikasi tautan instans.

Dapatkah tugas DTS diturunkan di bawah spesifikasi menengah?

Tidak didukung.

Berapa lama waktu yang dibutuhkan untuk sinkronisasi atau migrasi data?

Performa tugas DTS bergantung pada berbagai faktor, seperti pemrosesan internal DTS, beban pada database sumber dan tujuan, volume data, apakah tugas inkremental sedang berjalan, dan kondisi jaringan. Oleh karena itu, durasi pasti suatu tugas tidak dapat diperkirakan. Jika Anda membutuhkan performa tinggi, pilih instans dengan spesifikasi lebih tinggi. Untuk informasi lebih lanjut tentang spesifikasi, lihat Spesifikasi tautan migrasi data dan Spesifikasi tautan sinkronisasi data.

Bagaimana cara melihat metrik performa untuk tugas migrasi atau sinkronisasi data?

Untuk petunjuk cara melihat metrik performa, lihat Lihat status dan performa tautan migrasi inkremental atau Lihat status dan performa tautan sinkronisasi.

Mengapa saya tidak dapat menemukan instans DTS tertentu di konsol?

Kemungkinan penyebab: Instans DTS berlangganan telah kedaluwarsa dan dilepaskan.

  • Grup sumber daya yang dipilih salah. Pilih All resources under account.

  • Anda mungkin memilih wilayah yang salah. Pastikan wilayah yang dipilih adalah wilayah tempat instans tujuan berada.

  • Hal ini dapat terjadi jika Anda memilih jenis tugas yang salah. Verifikasi bahwa Anda sedang melihat halaman daftar tugas yang benar. Misalnya, instans sinkronisasi hanya muncul di daftar Data Synchronization Tasks.

  • Instans dilepaskan karena kedaluwarsa atau pembayaran tertunda. Saat instans DTS kedaluwarsa atau memiliki pembayaran tertunda, tugas transmisi datanya berhenti. Jika Anda tidak menambahkan dana ke akun Anda dalam waktu 7 hari, sistem akan melepaskan dan menghapus instans tersebut. Untuk informasi lebih lanjut, lihat Kedaluwarsa dan Pembayaran Tertunda.

Masalah pemeriksaan awal

Mengapa pemeriksaan awal kebijakan penggantian Redis menampilkan peringatan?

Jika kebijakan penggantian (maxmemory-policy) database tujuan diatur ke nilai selain noeviction, ketidakkonsistenan data dapat terjadi antara database sumber dan tujuan. Untuk informasi lebih lanjut tentang kebijakan penggantian, lihat Pengenalan kebijakan penggantian data Redis.

Bagaimana cara menangani kegagalan pemeriksaan awal terkait Binlog selama migrasi data inkremental?

Periksa apakah log biner database sumber diaktifkan dan berfungsi sebagaimana mestinya. Untuk informasi lebih lanjut, lihat Pemeriksaan log biner database sumber.

Masalah koneksi database

Bagaimana cara menangani kegagalan koneksi database sumber?

Periksa apakah informasi dan pengaturan database sumber dikonfigurasi dengan benar. Untuk informasi lebih lanjut, lihat Pemeriksaan konektivitas database sumber.

Bagaimana cara menangani kegagalan koneksi database tujuan?

Periksa apakah informasi dan pengaturan database tujuan dikonfigurasi dengan benar. Untuk informasi lebih lanjut, lihat Pemeriksaan konektivitas database tujuan.

Bagaimana cara melakukan migrasi atau sinkronisasi data ketika instans sumber atau tujuan berada di wilayah yang belum didukung oleh DTS?

  • Untuk tugas migrasi data, peroleh alamat IP publik untuk instans database Anda (seperti RDS MySQL) dan gunakan public IP untuk menghubungkan ke instans tersebut. Pilih wilayah yang didukung DTS untuk instans tersebut dan tambahkan rentang IP server DTS yang sesuai ke daftar putih instans Anda. Untuk alamat IP yang diperlukan, lihat Tambahkan alamat IP server DTS ke daftar putih.

  • Untuk tugas sinkronisasi data, DTS tidak mendukung sinkronisasi di wilayah-wilayah ini karena sinkronisasi saat ini tidak mendukung koneksi ke instans database melalui public IP.

Masalah sinkronisasi data

Instans database mana saja yang didukung DTS untuk sinkronisasi?

DTS mendukung sinkronisasi data antara berbagai sumber data, termasuk sistem manajemen database relasional (RDBMS), database NoSQL, dan database pemrosesan analitik online (OLAP). Untuk informasi lebih lanjut tentang instans database yang didukung, lihat Ikhtisar skenario sinkronisasi.

Apa perbedaan antara migrasi data dan sinkronisasi data?

Tabel berikut menjelaskan perbedaan antara migrasi data dan sinkronisasi data.

Catatan

Database yang dikelola sendiri: Saat mengonfigurasi instans DTS, instans database yang Access Method-nya bukan Alibaba Cloud Instance. Database yang dikelola sendiri mencakup database cloud pihak ketiga, database on-premises, dan database yang diterapkan pada instans ECS.

Item perbandingan

Migrasi data

Sinkronisasi data

Kasus penggunaan

Terutama digunakan untuk migrasi ke cloud. Misalnya, Anda dapat memigrasikan database on-premises, database yang dikelola sendiri pada instans ECS, atau database cloud pihak ketiga ke database Alibaba Cloud.

Terutama digunakan untuk sinkronisasi data real-time antara dua sumber data. Ini cocok untuk skenario seperti redundansi geo-aktif, pemulihan bencana, sinkronisasi data lintas batas, offloading kueri dan pelaporan, intelijen bisnis (BI) cloud, dan gudang data real-time.

Database yang didukung

Untuk informasi lebih lanjut, lihat Ikhtisar skenario migrasi.

Catatan

Untuk beberapa database yang tidak didukung oleh sinkronisasi data, Anda dapat menggunakan migrasi data untuk mencapai sinkronisasi. Contohnya termasuk database MongoDB standalone dan database OceanBase (mode MySQL).

Untuk informasi lebih lanjut, lihat Ikhtisar skenario sinkronisasi.

Lokasi penerapan database yang didukung (jenis koneksi)

  • Instans Alibaba Cloud

  • Database yang dikelola sendiri dengan IP publik

  • Database yang dikelola sendiri yang terhubung melalui Database Gateway (DG)

  • Database yang dikelola sendiri yang terhubung melalui Cloud Enterprise Network (CEN)

  • Database yang dikelola sendiri pada ECS

  • Database yang dikelola sendiri yang terhubung melalui jalur sewa/Gateway VPN/Gerbang Akses Cerdas

  • Instans Alibaba Cloud

  • Database yang dikelola sendiri yang terhubung melalui Database Gateway (DG)

  • Database yang dikelola sendiri yang terhubung melalui Cloud Enterprise Network (CEN)

  • Database yang dikelola sendiri pada ECS

  • Database yang dikelola sendiri yang terhubung melalui jalur sewa/Gateway VPN/Gerbang Akses Cerdas

Catatan

Sinkronisasi data menggunakan transmisi jaringan internal, yang menjamin latensi jaringan lebih rendah.

Perbedaan fitur

  • Mendukung pemetaan nama objek tiga tingkat untuk database, tabel, dan kolom.

  • Mendukung penyaringan data yang ingin dimigrasikan.

  • Mendukung pemilihan jenis operasi SQL yang akan dimigrasikan, seperti hanya memigrasikan operasi INSERT.

  • Mendukung pembacaan data dari VPC yang dimiliki oleh akun Alibaba Cloud lain. Hal ini memungkinkan migrasi lintas akun untuk database yang dikelola sendiri yang diterapkan di VPC.

  • Mendukung pemetaan nama objek tiga tingkat untuk database, tabel, dan kolom.

  • Mendukung penyaringan data yang ingin disinkronisasi.

  • Mendukung modifikasi online objek sinkronisasi.

  • Mendukung sinkronisasi dua arah antara database MySQL.

  • Mendukung pemilihan jenis operasi SQL yang akan disinkronisasi, seperti hanya menyinkronisasi operasi INSERT.

Metode penagihan

Hanya mendukung metode penagihan bayar sesuai pemakaian.

Mendukung metode penagihan bayar sesuai pemakaian dan langganan.

Apakah dikenai biaya?

Hanya instans migrasi dengan tugas migrasi inkremental yang dikenai biaya.

Ya. Instans sinkronisasi mencakup sinkronisasi inkremental secara default, sehingga selalu dikenai biaya.

Aturan penagihan

Biaya hanya dikenakan saat tugas migrasi data inkremental sedang berjalan. Tugas yang dijeda tidak ditagih. Tidak ada biaya yang dikenakan selama migrasi skema atau migrasi data penuh.

  • Untuk instans bayar sesuai pemakaian: Biaya hanya dikenakan saat tugas sinkronisasi data inkremental sedang berjalan. Tugas yang dijeda tetap ditagih. Tidak ada biaya yang dikenakan selama sinkronisasi skema atau sinkronisasi data penuh.

  • Untuk instans langganan: Biaya dikenakan sekali berdasarkan konfigurasi dan jumlah pembelian yang dipilih.

Bagaimana cara kerja sinkronisasi data?

Untuk informasi lebih lanjut tentang cara kerja sinkronisasi data, lihat Arsitektur layanan dan prinsip fungsional.

Bagaimana cara menghitung latensi sinkronisasi?

Latensi sinkronisasi adalah selisih waktu dalam milidetik antara timestamp entri data terbaru yang disinkronisasi ke database tujuan dan timestamp saat ini dari database sumber.

Catatan

Latensi normal kurang dari 1.000 milidetik.

Dapatkah saya memodifikasi objek sinkronisasi dalam tugas sinkronisasi yang sedang berjalan?

Ya, Anda bisa. Untuk petunjuk cara memodifikasi objek sinkronisasi, lihat Tambahkan objek sinkronisasi dan Hapus objek sinkronisasi.

Dapatkah saya menambahkan tabel baru ke tugas sinkronisasi yang sudah ada?

Ya, Anda bisa. Untuk petunjuk cara menambahkan tabel baru, lihat Tambahkan objek sinkronisasi.

Bagaimana cara memodifikasi tabel dan bidang dalam tugas sinkronisasi yang sedang berjalan?

Anda dapat memodifikasi objek sinkronisasi setelah fase sinkronisasi penuh selesai dan tugas memasuki fase sinkronisasi inkremental. Untuk petunjuknya, lihat Tambahkan objek sinkronisasi dan Hapus objek sinkronisasi.

Apakah menjeda dan kemudian menjalankan kembali tugas sinkronisasi menyebabkan ketidakkonsistenan data?

Jika data di database sumber dimodifikasi saat tugas dijeda, ketidakkonsistenan data dapat terjadi antara database sumber dan tujuan. Setelah Anda menjalankan kembali tugas dan data inkremental disinkronisasi, data di database tujuan menjadi konsisten dengan data di database sumber.

Jika saya menghapus data dari database sumber tugas sinkronisasi inkremental, apakah data yang disinkronisasi di database tujuan juga akan dihapus?

Jika operasi DML yang akan disinkronisasi tidak mencakup delete, tidak ada data yang akan dihapus di tujuan. Jika tidak, data yang sesuai di tujuan akan dihapus.

Selama sinkronisasi Redis-ke-Redis, apakah data di instans Redis tujuan akan ditimpa?

Ya, data dengan kunci yang sama akan ditimpa. DTS memeriksa database tujuan selama pemeriksaan awal dan melaporkan error jika database tujuan berisi data yang sudah ada.

Dapatkah tugas sinkronisasi menyaring bidang atau data tertentu?

Ya, Anda bisa. Anda dapat menggunakan fitur pemetaan nama objek untuk menyaring kolom yang tidak ingin disinkronisasi. Anda juga dapat menentukan kondisi WHERE SQL untuk menyaring data yang ingin disinkronisasi. Untuk informasi lebih lanjut, lihat Sinkronisasi atau migrasi kolom tertentu dan Saring data tugas menggunakan kondisi SQL.

Dapatkah tugas sinkronisasi diubah menjadi tugas migrasi?

Tidak, Anda tidak bisa. Anda tidak dapat mengubah tugas dari satu jenis ke jenis lainnya.

Dapatkah saya hanya menyinkronisasi data tanpa menyinkronisasi skema?

Ya, Anda bisa. Kosongkan opsi Schema synchronization saat mengonfigurasi tugas sinkronisasi.

Apa yang mungkin menyebabkan ketidakkonsistenan data antara sumber dan tujuan dalam instans sinkronisasi data?

Berikut adalah kemungkinan penyebab ketidakkonsistenan data:

  1. Database tujuan tidak dikosongkan sebelum tugas dikonfigurasi, dan data yang sudah ada ada di database tujuan.

  2. Hanya sinkronisasi inkremental yang dipilih selama konfigurasi tugas, tanpa sinkronisasi penuh.

  3. Hanya sinkronisasi penuh yang dipilih selama konfigurasi tugas, tanpa sinkronisasi inkremental, dan data sumber berubah setelah tugas selesai.

  4. Data ditulis ke database tujuan dari sumber selain tugas DTS.

  5. Penulisan inkremental tertunda, dan tidak semua data inkremental telah ditulis ke database tujuan.

Dapatkah saya mengganti nama database sumber di tujuan selama sinkronisasi?

Ya, Anda bisa. Untuk petunjuk cara mengganti nama database sumber di database tujuan, lihat Atur nama objek sinkronisasi di instans tujuan.

Apakah DTS mendukung sinkronisasi real-time operasi DML atau DDL?

Ya, mendukung. Sinkronisasi data antara database relasional mendukung operasi Data Manipulation Language (DML), seperti INSERT, UPDATE, dan DELETE, serta operasi Data Definition Language (DDL), seperti CREATE, DROP, ALTER, RENAME, dan TRUNCATE.

Catatan

Operasi DML atau DDL yang didukung bervariasi berdasarkan skenario. Di Ikhtisar skenario sinkronisasi, pilih tautan yang sesuai dengan skenario bisnis Anda dan periksa operasi DML atau DDL yang didukung dalam dokumentasi konfigurasi tautan spesifik.

Dapatkah instans hanya baca berfungsi sebagai sumber untuk tugas sinkronisasi?

Tugas sinkronisasi mencakup sinkronisasi data inkremental secara default. Hal ini menghasilkan dua skenario:

  • Instans hanya baca yang mencatat log transaksi, seperti RDS for MySQL 5.7 atau 8.0, dapat berfungsi sebagai sumber.

  • Instans hanya baca yang tidak mencatat log transaksi, seperti RDS for MySQL 5.6, tidak dapat berfungsi sebagai sumber.

Apakah DTS mendukung sinkronisasi database dan tabel ter-shard?

Ya, memang demikian. Misalnya, Anda dapat menyinkronkan database dan tabel yang di-sharding dari database MySQL atau PolarDB for MySQL ke database AnalyticDB for MySQL untuk menggabungkan beberapa tabel.

Mengapa volume data di instans tujuan lebih kecil daripada di sumber setelah sinkronisasi?

Jika Anda menyaring data selama sinkronisasi atau jika instans sumber berisi fragmentasi tabel yang signifikan, volume data di instans tujuan mungkin lebih kecil daripada di instans sumber setelah migrasi selesai.

Apakah sinkronisasi data lintas akun mendukung sinkronisasi dua arah?

Saat ini, sinkronisasi dua arah lintas akun hanya didukung antara instans RDS MySQL, antara kluster PolarDB for MySQL, antara instans Tair (Edisi Perusahaan), antara instans ApsaraDB for MongoDB (arsitektur Set Replika), dan antara instans ApsaraDB for MongoDB (arsitektur kluster sharded).

Apakah sinkronisasi balik dalam sinkronisasi dua arah mendukung sinkronisasi DDL?

Tidak, tidak mendukung. Hanya tugas sinkronisasi maju (dari sumber ke tujuan) yang mendukung sinkronisasi DDL. Tugas sinkronisasi balik (dari tujuan ke sumber) tidak mendukung sinkronisasi DDL dan secara otomatis menyaring operasi DDL.

Catatan

Untuk menyinkronisasi operasi DDL dalam tugas sinkronisasi balik saat ini, Anda dapat mencoba membalik arah instans sinkronisasi dua arah jika bisnis Anda mengizinkannya.

Apakah saya perlu mengonfigurasi tugas sinkronisasi balik secara manual?

Wajib. Tunggu hingga tugas sinkronisasi maju menyelesaikan sinkronisasi awal (hingga Status berubah menjadi Running), lalu buka tugas sinkronisasi mundur dan klik Configure Task untuk mengonfigurasinya.

Catatan

Kami menyarankan Anda mengonfigurasi tugas sinkronisasi balik hanya setelah tugas sinkronisasi maju tidak memiliki penundaan (0 milidetik).

Apakah DTS mendukung tugas sinkronisasi dua arah lintas batas?

Tidak didukung.

Mengapa catatan yang ditambahkan ke salah satu database dalam tugas sinkronisasi dua arah tidak muncul di database lainnya?

Hal ini mungkin karena tugas balik belum dikonfigurasi.

Mengapa persentase sinkronisasi inkremental tidak pernah mencapai 100%?

Tugas sinkronisasi inkremental terus-menerus menyinkronisasi perubahan data real-time dari database sumber ke database tujuan dan tidak berakhir secara otomatis. Oleh karena itu, progres penyelesaian tidak pernah mencapai 100%. Jika Anda tidak memerlukan sinkronisasi real-time berkelanjutan, Anda dapat mengakhiri tugas secara manual di konsol DTS.

Mengapa tugas sinkronisasi inkremental tidak dapat menyinkronisasi data?

Jika instans DTS dikonfigurasi hanya untuk sinkronisasi inkremental, DTS hanya menyinkronisasi data yang dihasilkan setelah tugas dimulai. Data yang sudah ada tidak disinkronisasi. Untuk memastikan konsistensi data, kami menyarankan Anda memilih Incremental synchronization, Schema synchronization, dan Full synchronization saat mengonfigurasi tugas.

Apakah sinkronisasi data penuh dari RDS memengaruhi performa RDS sumber?

Ya, memengaruhi performa kueri database sumber. Untuk mengurangi dampak tugas DTS pada database sumber, Anda dapat menggunakan salah satu metode berikut:

  1. Tingkatkan spesifikasi instans database sumber.

  2. Sementara jeda tugas DTS dan jalankan kembali setelah beban pada database sumber berkurang.

  3. Kurangi laju tugas DTS. Untuk petunjuknya, lihat Sesuaikan laju migrasi penuh.

Mengapa instans sinkronisasi dengan PolarDB-X 1.0 sebagai sumber tidak menampilkan latensi?

Instans dengan PolarDB-X 1.0 sebagai sumber adalah tugas terdistribusi, dan metrik pemantauan DTS hanya ada di subtugas. Oleh karena itu, informasi latensi tidak ditampilkan untuk instans sumber PolarDB-X 1.0. Klik ID instans dan lihat informasi latensi di bagian Task Management di bawah Subtask Details.

Mengapa tugas penggabungan multi-tabel melaporkan error DTS-071001?

Selama eksekusi tugas penggabungan multi-tabel, operasi DDL online mungkin telah memodifikasi struktur tabel sumber tanpa modifikasi manual yang sesuai di database tujuan.

Bagaimana cara menangani kegagalan penambahan daftar putih saat mengonfigurasi tugas di Konsol Lama?

Anda dapat menggunakan konsol baru untuk mengonfigurasi tugas.

Bagaimana cara menangani kegagalan tugas yang disebabkan oleh operasi DDL pada database sumber selama sinkronisasi data DTS?

Anda dapat mengeksekusi secara manual operasi DDL yang sama pada database tujuan yang dieksekusi pada database sumber, lalu menjalankan kembali tugas tersebut. Selama sinkronisasi data, jangan gunakan alat seperti pt-online-schema-change untuk melakukan perubahan DDL online pada objek sinkronisasi di database sumber. Hal ini dapat menyebabkan sinkronisasi gagal. Jika tidak ada data selain dari DTS yang ditulis ke database tujuan, Anda dapat menggunakan Data Management (DMS) untuk melakukan perubahan DDL online, atau menghapus tabel yang terpengaruh dari objek sinkronisasi. Untuk petunjuk cara menghapus tabel, lihat Hapus objek sinkronisasi.

Bagaimana cara menangani kegagalan tugas yang disebabkan oleh operasi DDL pada database tujuan selama sinkronisasi data DTS?

Jika database atau tabel dihapus dari database tujuan selama sinkronisasi inkremental DTS, yang menyebabkan pengecualian tugas, Anda dapat menggunakan salah satu solusi berikut:

  • Metode 1: Konfigurasi ulang tugas dan kecualikan database atau tabel yang menyebabkan kegagalan dari objek sinkronisasi.

  • Metode 2: Modifikasi objek sinkronisasi untuk menghapus database atau tabel yang bermasalah. Untuk petunjuknya, lihat Hapus objek sinkronisasi.

Dapatkah tugas sinkronisasi yang dilepaskan dipulihkan? Dapatkah konsistensi data dijamin saat mengonfigurasi ulang tugas?

Tugas sinkronisasi yang dilepaskan tidak dapat dipulihkan. Jika Anda mengonfigurasi ulang tugas tanpa memilih Full synchronization, data yang dihasilkan antara pelepasan tugas dan startup tugas baru tidak akan disinkronisasi ke database tujuan, sehingga mengompromikan konsistensi data. Jika bisnis Anda memerlukan data yang tepat, hapus data di database tujuan lalu konfigurasi ulang tugas sinkronisasi. Di Task Steps, pilih Schema synchronization dan Full synchronization (dengan Incremental synchronization dipilih secara default).

Bagaimana cara menangani tugas sinkronisasi penuh DTS yang tidak menunjukkan progres untuk waktu yang lama?

Jika tabel yang ingin Anda sinkronisasi tidak memiliki kunci primer, sinkronisasi penuh akan sangat lambat. Kami menyarankan Anda menambahkan kunci primer ke tabel sumber sebelum memulai sinkronisasi.

Saat menyinkronisasi tabel dengan nama yang sama, apakah DTS mendukung mentransfer data tabel sumber hanya ketika tidak ada di tabel tujuan?

Ya. Selama konfigurasi tugas, Anda dapat mengatur Handling mode for existing tables in destination ke Ignore errors and continue. Jika struktur tabel cocok, selama sinkronisasi penuh, catatan sumber tidak disinkronisasi jika catatan dengan nilai kunci primer yang sama sudah ada di tujuan.

Bagaimana cara mengonfigurasi tugas sinkronisasi lintas akun?

Pertama, Anda perlu mengidentifikasi skenario untuk tugas lintas akun. Selanjutnya, gunakan Akun Alibaba Cloud yang memiliki instansiasi basis data untuk mengonfigurasi otorisasi RAM untuk tugas lintas akun. Terakhir, Anda dapat mengonfigurasi tugas lintas akun.

Bagaimana cara menangani ketidakmampuan memilih instans DMS LogicDB?

Pastikan Anda telah memilih wilayah yang benar untuk instans tersebut. Jika Anda masih tidak dapat memilih instans tersebut, mungkin hanya ada satu instans yang tersedia. Anda dapat melanjutkan mengonfigurasi parameter lainnya.

Apakah tugas sinkronisasi dengan SQL Server sebagai sumber mendukung penyinkronan fungsi?

Tidak, tidak mendukung. Saat objek sinkronisasi dipilih pada granularitas tabel, objek lain seperti view, trigger, dan stored procedure tidak disinkronisasi ke database tujuan.

Bagaimana cara menangani error tugas sinkronisasi?

Berdasarkan pesan error, periksa Error umum untuk solusinya.

Bagaimana cara mengaktifkan penggabungan hot spot dalam tugas sinkronisasi?

Atur parameter trans.hot.merge.enable ke true. Untuk informasi lebih lanjut, lihat Modifikasi nilai parameter.

Bagaimana cara menangani sinkronisasi ketika trigger ada di database sumber?

Saat Anda menyinkronisasi seluruh database dan trigger (TRIGGER) di database memperbarui tabel dalam database yang sama, ketidakkonsistenan data antara database sumber dan tujuan dapat terjadi. Untuk informasi lebih lanjut tentang prosedur sinkronisasi, lihat Cara mengonfigurasi tugas sinkronisasi atau migrasi ketika trigger ada di database sumber.

Apakah DTS mendukung penyinkronan database sys dan database sistem?

Tidak, tidak.

Apakah DTS mendukung penyinkronan database admin dan local MongoDB?

Tidak, tidak mendukung. DTS tidak mendukung penggunaan database admin dan local MongoDB sebagai sumber atau tujuan.

Kapan saya dapat mengonfigurasi tugas balik untuk tugas sinkronisasi dua arah?

Anda dapat mengonfigurasi tugas balik untuk tugas sinkronisasi dua arah hanya setelah tugas inkremental maju memiliki latensi nol.

Apakah tugas sinkronisasi dengan PolarDB-X 1.0 sebagai sumber mendukung penskalaan node?

Tidak, tidak mendukung. Jika penskalaan node terjadi pada sumber PolarDB-X 1.0, Anda harus mengonfigurasi ulang tugas tersebut.

Dapatkah DTS menjamin keunikan untuk data yang disinkronisasi ke Kafka?

Tidak, tidak bisa. Karena data yang ditulis ke Kafka ditambahkan, data duplikat dapat terjadi ketika tugas DTS dimulai ulang atau menarik kembali log sumber. DTS menjamin idempotensi data. Artinya, data diurutkan secara berurutan, dan nilai terbaru dari data duplikat muncul terakhir.

Apakah DTS mendukung sinkronisasi data dari RDS for MySQL ke AnalyticDB for MySQL?

Ya, mendukung. Untuk petunjuk konfigurasi, lihat Sinkronisasi dari RDS MySQL ke AnalyticDB for MySQL 3.0.

Mengapa sinkronisasi Redis-ke-Redis tidak menampilkan sinkronisasi penuh?

Sinkronisasi Redis-ke-Redis mendukung sinkronisasi data penuh dan inkremental, dan ditampilkan sebagai Incremental synchronization.

Dapatkah saya melewati sinkronisasi penuh?

Ya, Anda bisa. Melewati sinkronisasi penuh memungkinkan sinkronisasi inkremental untuk dilanjutkan, tetapi error dapat terjadi. Kami menyarankan Anda tidak melewati sinkronisasi penuh.

Apakah DTS mendukung sinkronisasi otomatis terjadwal?

DTS tidak mendukung startup terjadwal untuk tugas sinkronisasi data.

Apakah sinkronisasi mentransfer ruang fragmentasi tabel bersama dengan data?

Tidak, tidak demikian.

Apa yang perlu diperhatikan saat menyinkronisasi dari MySQL 8.0 ke MySQL 5.6?

Anda harus membuat database di MySQL 5.6 sebelum memulai sinkronisasi. Kami menyarankan Anda menjaga versi sumber dan tujuan konsisten atau menyinkronisasi data dari versi lebih rendah ke versi lebih tinggi untuk memastikan kompatibilitas. Menyinkronisasi data dari versi lebih tinggi ke versi lebih rendah dapat menyebabkan masalah kompatibilitas.

Dapatkah saya menyinkronisasi akun dari database sumber ke database tujuan?

Saat ini, hanya tugas sinkronisasi antar instans RDS for MySQL yang mendukung sinkronisasi akun. Tugas sinkronisasi lainnya tidak mendukung fitur ini.

Dapatkah saya mengonfigurasi tugas sinkronisasi dua arah lintas akun?

Saat ini, sinkronisasi dua arah lintas akun hanya didukung antara instans RDS MySQL, antara kluster PolarDB for MySQL, antara instans Tair (Edisi Perusahaan), antara instans ApsaraDB for MongoDB (arsitektur Set Replika), dan antara instans ApsaraDB for MongoDB (arsitektur kluster sharded).

Catatan

Untuk tugas yang tidak memiliki opsi konfigurasi Replicate Data Across Alibaba Cloud Accounts, Anda dapat menggunakan CEN untuk mengimplementasikan sinkronisasi dua arah lintas akun. Untuk informasi lebih lanjut, lihat Akses sumber daya database lintas akun atau wilayah Alibaba Cloud.

Bagaimana cara mengonfigurasi parameter saat Message Queue for Apache Kafka adalah tujuan?

Anda dapat mengonfigurasi parameter sesuai kebutuhan. Untuk informasi lebih lanjut tentang metode konfigurasi parameter khusus, lihat Konfigurasi parameter untuk instans Message Queue for Apache Kafka.

Saat menggunakan DTS untuk tugas sinkronisasi atau migrasi data Redis, bagaimana cara menangani error ERR invalid DB index?

Penyebab: Error ERR invalid DB index terjadi ketika database tujuan mengeksekusi operasi SELECT DB. Error ini biasanya disebabkan oleh jumlah database yang tidak mencukupi di database tujuan. Jika database tujuan menggunakan proxy, periksa apakah proxy dapat menghapus batasan jumlah database.

Solusi: Modifikasi konfigurasi database database tujuan. Kami menyarankan Anda memperluasnya agar sesuai dengan database sumber, lalu menjalankan ulang tugas DTS. Anda dapat menggunakan perintah berikut untuk menanyakan konfigurasi database database tujuan:

CONFIG GET databases;

Saat menyinkronisasi atau memigrasikan data SQL Server ke AnalyticDB for PostgreSQL, bagaimana cara menangani error IDENTIFIER CLUSTERED?

Penyebab: Saat Anda menyinkronisasi atau memigrasikan data SQL Server ke AnalyticDB for PostgreSQL, tugas gagal karena perintah CREATE CLUSTERED INDEX tidak didukung.

Solusi: Setelah Anda memastikan tidak ada pernyataan DDL lain selama periode latensi, modifikasi parameter instans sink.ignore.failed.ddl ke true untuk melewati eksekusi semua pernyataan DDL. Setelah offset sinkronisasi/migrasi inkremental maju, ubah parameter sink.ignore.failed.ddl kembali ke false.

Saat memperpanjang waktu kedaluwarsa kunci di database tujuan selama tugas sinkronisasi atau migrasi Redis, apakah ini memiliki efek praktis?

Ya, memiliki efek. Untuk mencegah kunci kedaluwarsa selama sinkronisasi data penuh, Anda dapat memperpanjang waktu kedaluwarsa kunci di database tujuan. Untuk tugas DTS yang mencakup sinkronisasi atau migrasi inkremental, jika kunci kedaluwarsa dan dihapus di database sumber, kunci yang sesuai di database tujuan juga dilepaskan.

Setelah mengatur waktu kedaluwarsa yang diperpanjang untuk kunci di database tujuan, jika kunci kedaluwarsa di database sumber, apakah kunci di tujuan akan segera dilepaskan?

Tidak, kunci di database tujuan tidak selalu dilepaskan segera. Kunci yang sesuai di database tujuan dilepaskan hanya setelah kunci tersebut kedaluwarsa dan dihapus dari database sumber.

Misalnya, jika kunci di database sumber memiliki waktu kedaluwarsa 5 detik dan waktu kedaluwarsa kunci tujuan diperpanjang menjadi 30 detik, kunci tujuan segera dilepaskan ketika kunci sumber kedaluwarsa dan secara otomatis dihapus setelah 5 detik. Ketika kunci sumber kedaluwarsa dan secara otomatis dihapus, sistem menambahkan operasi penghapusan ke file AOF. Operasi ini disinkronisasi dan dieksekusi di database tujuan.

Saat menggunakan DTS untuk menyinkronisasi ke SelectDB, bagaimana cara menangani error column_name[xxx], the length of input string is too long than vec schema?

  • Error detail: Reason: column_name[xxx], the length of input string is too long than vec schema. first 32 bytes of input str: [01a954b4-xxx-xxx-xxx-95b675b9] schema length: 2147483643; limit length: 1048576; actual length: 7241898; . src line [];

  • Penyebab: Ukuran inkremental bidang xxx di sumber telah melebihi batas panjang tipe bidang xxx di tujuan.

  • Solusi: Jika bidang bertipe STRING, Anda dapat meningkatkan nilai parameter string_type_length_soft_limit_bytes di konsol SelectDB ke nilai yang lebih besar dari panjang aktual (7241898).

Saat menggunakan DTS untuk menyinkronisasi ke SelectDB, bagaimana cara menangani error column(xxx) values is null while columns is not nullable.?

  • Error detail: Reason: column(xxx) values is null while columns is not nullable. src line [ xxx ];

  • Penyebab: Bidang xxx di tujuan adalah NOT NULL, tetapi nilai NULL sedang ditulis.

    Catatan

    Skenario umum: Data format tanggal ilegal seperti 0000-0000-0000 ditulis ke sumber, yang menyebabkan DTS secara otomatis mengonversinya menjadi NULL dan memicu error.

  • Solusi:

    • Sesuaikan tipe bidang tujuan agar mengizinkan nilai NULL.

    • Modifikasi objek sinkronisasi: Hapus tabel yang bermasalah, perbaiki data sumber, lalu hapus tabel di database tujuan. Tambahkan kembali tabel ke objek sinkronisasi dan eksekusi ulang sinkronisasi penuh dan inkremental.

Masalah migrasi data

Setelah mengeksekusi tugas migrasi data, apakah data database sumber masih ada?

DTS memigrasikan dan menyinkronisasi data dari database sumber ke database tujuan tanpa memengaruhi data sumber.

Instans database mana saja yang didukung DTS untuk migrasi?

DTS mendukung migrasi data antara berbagai sumber data, termasuk sistem manajemen database relasional (RDBMS), database NoSQL, dan database pemrosesan analitik online (OLAP). Untuk informasi lebih lanjut tentang instans migrasi yang didukung, lihat Ikhtisar skenario migrasi.

Bagaimana cara kerja migrasi data?

Untuk informasi lebih lanjut tentang cara kerja migrasi data, lihat Arsitektur layanan dan prinsip fungsional.

Dapatkah saya memodifikasi objek migrasi dalam tugas migrasi yang sedang berjalan?

Tidak, Anda tidak bisa.

Dapatkah saya menambahkan tabel baru ke tugas migrasi yang sudah ada?

Tidak, Anda tidak bisa.

Bagaimana cara memodifikasi tabel dan bidang dalam tugas migrasi yang sedang berjalan?

Tugas migrasi data tidak mendukung modifikasi objek migrasi.

Apakah menjeda dan kemudian menjalankan kembali tugas migrasi menyebabkan ketidakkonsistenan data?

Jika data di database sumber dimodifikasi saat tugas dijeda, ketidakkonsistenan data dapat terjadi antara database sumber dan tujuan. Setelah Anda menjalankan kembali tugas dan data inkremental dimigrasikan, data di database tujuan menjadi konsisten dengan data di database sumber.

Dapatkah tugas migrasi diubah menjadi tugas sinkronisasi?

Tidak, Anda tidak bisa. Anda tidak dapat mengubah tugas dari satu jenis ke jenis lainnya.

Dapatkah saya hanya memigrasikan data tanpa memigrasikan skema?

Ya, Anda bisa. Saat mengonfigurasi tugas migrasi, kosongkan opsi Schema migration.

Apa yang mungkin menyebabkan ketidakkonsistenan data antara sumber dan tujuan dalam instans migrasi data?

Berikut adalah kemungkinan penyebab ketidakkonsistenan data:

  1. Database tujuan tidak dikosongkan sebelum tugas dikonfigurasi, dan data yang sudah ada ada di database tujuan.

  2. Hanya migrasi inkremental yang dipilih selama konfigurasi tugas, tanpa migrasi penuh.

  3. Hanya migrasi penuh yang dipilih selama konfigurasi tugas, tanpa migrasi inkremental, dan data sumber berubah setelah tugas selesai.

  4. Data ditulis ke database tujuan dari sumber selain tugas DTS.

  5. Penulisan inkremental tertunda, dan tidak semua data inkremental telah ditulis ke database tujuan.

Dapatkah saya mengganti nama database sumber di tujuan selama migrasi?

Ya, Anda bisa. Untuk petunjuk cara mengganti nama database sumber di database tujuan, lihat Pemetaan database, tabel, dan kolom.

Apakah DTS mendukung migrasi data dalam instans yang sama?

Ya, mendukung. Untuk petunjuk cara melakukan migrasi data dalam instans yang sama, lihat Sinkronisasi atau migrasi data antara nama database berbeda.

Apakah DTS mendukung migrasi real-time operasi DML atau DDL?

Ya, mendukung. Migrasi data antara database relasional mendukung operasi DML, seperti INSERT, UPDATE, dan DELETE, serta operasi DDL, seperti CREATE, DROP, ALTER, RENAME, dan TRUNCATE.

Catatan

Operasi DML atau DDL yang didukung bervariasi berdasarkan skenario. Di Ikhtisar skenario migrasi, pilih tautan yang sesuai dengan skenario bisnis Anda dan periksa operasi DML atau DDL yang didukung dalam dokumentasi konfigurasi tautan spesifik.

Dapatkah instans hanya baca berfungsi sebagai sumber untuk tugas migrasi?

Jika tugas migrasi tidak memerlukan migrasi data inkremental, instans hanya baca dapat berfungsi sebagai sumber. Jika migrasi data inkremental diperlukan, dua skenario mungkin terjadi:

  • Instans hanya baca yang mencatat log transaksi, seperti RDS for MySQL 5.7 atau 8.0, dapat berfungsi sebagai sumber.

  • Instans hanya baca yang tidak mencatat log transaksi, seperti RDS for MySQL 5.6, tidak dapat berfungsi sebagai sumber.

Apakah DTS mendukung migrasi database dan tabel ter-shard?

Ya, memang demikian. Misalnya, Anda dapat memigrasi database dan tabel ter-shard dari database MySQL atau PolarDB for MySQL ke database AnalyticDB for MySQL untuk menggabungkan beberapa tabel.

Dapatkah tugas migrasi menyaring bidang atau data tertentu?

Ya, Anda bisa. Anda dapat menggunakan fitur pemetaan nama objek untuk menyaring kolom yang tidak ingin dimigrasikan. Anda juga dapat menentukan kondisi WHERE SQL untuk menyaring data yang ingin dimigrasikan. Untuk informasi lebih lanjut, lihat Sinkronisasi atau migrasi kolom tertentu dan Saring data yang akan dimigrasikan.

Mengapa volume data di instans tujuan lebih kecil daripada di sumber setelah migrasi?

Jika Anda menyaring data selama migrasi atau jika instans sumber berisi fragmentasi tabel yang signifikan, volume data di instans tujuan mungkin lebih kecil daripada di instans sumber setelah migrasi selesai.

Mengapa nilai yang diselesaikan melebihi total setelah penyelesaian tugas migrasi?

Total yang ditampilkan adalah perkiraan. Setelah tugas migrasi selesai, total disesuaikan ke nilai yang akurat.

Apa tujuan tabel increment_trx yang dibuat di database tujuan selama migrasi data?

Selama migrasi data, DTS membuat tabel `increment_trx` di instans tujuan. Tabel ini berfungsi sebagai tabel checkpoint untuk migrasi inkremental. Tabel ini mencatat checkpoint migrasi inkremental untuk mendukung pemulihan dari breakpoint setelah tugas gagal. Jangan menghapus tabel ini selama migrasi. Jika tidak, tugas migrasi akan gagal.

Apakah DTS mendukung pemulihan dari breakpoint selama fase migrasi penuh?

Ya, mendukung. Jika Anda menjeda lalu menjalankan kembali tugas selama fase migrasi penuh, tugas dilanjutkan dari titik terakhir alih-alih dimulai dari awal.

Bagaimana cara memigrasikan instans non-Alibaba Cloud ke Alibaba Cloud?

Untuk petunjuk cara memigrasikan instans non-Alibaba Cloud ke Alibaba Cloud, lihat Migrasi dari cloud pihak ketiga ke Alibaba Cloud.

Bagaimana cara memigrasikan database Oracle lokal ke PolarDB?

Untuk petunjuk cara memigrasikan database Oracle on-premises ke PolarDB, lihat Migrasi Oracle yang dikelola sendiri ke PolarDB for PostgreSQL (Kompatibel dengan Oracle).

Dapatkah saya menjeda tugas migrasi data sebelum migrasi penuh selesai?

Ya, Anda bisa.

Bagaimana cara memigrasikan data parsial dari RDS MySQL ke MySQL yang dikelola sendiri?

Selama konfigurasi tugas, Anda dapat memilih objek yang akan dimigrasikan di atau menyaringnya di sesuai kebutuhan. Proses untuk migrasi MySQL-ke-MySQL serupa. Untuk informasi lebih lanjut, lihat Migrasi MySQL yang dikelola sendiri ke RDS MySQL.

Bagaimana cara memigrasikan antar instans RDS di bawah akun Alibaba Cloud yang sama?

DTS mendukung migrasi dan sinkronisasi antar instans RDS. Untuk informasi lebih lanjut tentang metode konfigurasi, lihat dokumentasi konfigurasi yang relevan di Ikhtisar skenario migrasi.

Setelah memulai tugas migrasi, database sumber menunjukkan peringatan IOPS. Bagaimana cara memastikan stabilitas database sumber?

Jika beban pada instans database sumber tinggi saat tugas DTS berjalan, Anda dapat menggunakan salah satu metode berikut untuk mengurangi dampak tugas DTS pada database sumber:

  1. Tingkatkan spesifikasi instans database sumber.

  2. Sementara jeda tugas DTS dan jalankan kembali setelah beban pada database sumber berkurang.

  3. Kurangi laju Tugas DTS. Untuk petunjuk, lihat Sesuaikan laju migrasi penuh.

Mengapa saya tidak dapat memilih database bernama test untuk migrasi data?

Migrasi data DTS tidak mendukung migrasi database sistem. Anda harus memilih database yang dibuat pengguna untuk migrasi.

Mengapa instans migrasi dengan PolarDB-X 1.0 sebagai sumber tidak menampilkan latensi?

Instans dengan PolarDB-X 1.0 sebagai sumber adalah tugas terdistribusi, dan metrik pemantauan DTS hanya ada di subtugas. Oleh karena itu, informasi latensi tidak ditampilkan untuk instans sumber PolarDB-X 1.0. Klik ID instans dan lihat informasi latensi di bagian Task Management di bawah Subtask Details.

Mengapa DTS tidak dapat memigrasikan database MongoDB?

Database yang akan dimigrasikan mungkin adalah database local atau admin. DTS tidak mendukung penggunaan database admin dan local MongoDB sebagai sumber atau tujuan.

Mengapa tugas penggabungan multi-tabel melaporkan error DTS-071001?

Selama eksekusi tugas penggabungan multi-tabel, operasi DDL online mungkin telah memodifikasi struktur tabel sumber tanpa modifikasi manual yang sesuai di database tujuan.

Bagaimana cara menangani kegagalan penambahan daftar putih saat mengonfigurasi tugas di Konsol Lama?

Anda dapat menggunakan konsol baru untuk mengonfigurasi tugas.

Bagaimana cara menangani kegagalan tugas yang disebabkan oleh operasi DDL pada database sumber selama migrasi data DTS?

Anda dapat mengeksekusi secara manual operasi DDL yang sama pada database tujuan yang dieksekusi pada database sumber, lalu menjalankan kembali tugas tersebut. Selama migrasi data, jangan gunakan alat seperti pt-online-schema-change untuk melakukan perubahan DDL online pada objek migrasi di database sumber. Hal ini dapat menyebabkan migrasi gagal. Jika tidak ada data selain dari DTS yang ditulis ke database tujuan, Anda dapat menggunakan Data Management (DMS) untuk melakukan perubahan DDL online.

Bagaimana cara menangani kegagalan tugas yang disebabkan oleh operasi DDL pada database tujuan selama migrasi data DTS?

Jika database atau tabel dihapus dari database tujuan selama migrasi inkremental DTS, yang menyebabkan pengecualian tugas, Anda harus mengonfigurasi ulang tugas dan mengecualikan database atau tabel yang menyebabkan kegagalan dari objek migrasi.

Dapatkah tugas migrasi yang dilepaskan dipulihkan? Dapatkah konsistensi data dijamin saat mengonfigurasi ulang tugas?

Anda tidak dapat memulihkan tugas migrasi yang dilepaskan. Jika Anda mengonfigurasi ulang tugas tanpa memilih Full migration, data yang dihasilkan antara pelepasan tugas dan awal tugas baru tidak dimigrasikan ke database tujuan. Hal ini mengompromikan konsistensi data. Jika bisnis Anda memerlukan akurasi data tinggi, hapus data dari database tujuan, lalu konfigurasi ulang tugas migrasi. Di bagian Task Steps, pilih Schema migration, Incremental migration, dan Full migration.

Bagaimana cara menangani tugas migrasi penuh DTS yang tidak menunjukkan progres untuk waktu yang lama?

Jika tabel yang ingin Anda migrasikan tidak memiliki kunci primer, migrasi penuh akan sangat lambat. Kami menyarankan Anda menambahkan kunci primer ke tabel sumber sebelum memulai migrasi.

Saat memigrasikan tabel dengan nama yang sama, apakah DTS mendukung mentransfer data tabel sumber hanya ketika tidak ada di tabel tujuan?

Ya. Selama konfigurasi tugas, atur Handling mode for existing tables in destination ke Ignore errors and continue. Saat struktur tabel cocok, catatan sumber tidak dimigrasikan selama migrasi penuh jika tujuan sudah berisi catatan dengan nilai kunci primer yang sama.

Bagaimana cara mengonfigurasi tugas migrasi lintas akun?

Pertama, pahami skenario tugas lintas akun. Selanjutnya, gunakan akun Alibaba Cloud yang memiliki instansiasi basis data untuk mengonfigurasi otorisasi RAM untuk tugas lintas akun. Terakhir, Anda dapat mengonfigurasi tugas lintas akun.

Bagaimana cara menghubungkan ke database lokal untuk tugas migrasi data?

Atur Connection Type ke Public IP untuk mengonfigurasi tugas migrasi. Untuk informasi lebih lanjut, lihat Migrasi MySQL yang dikelola sendiri ke RDS MySQL.

Bagaimana cara menangani kegagalan migrasi data dengan error DTS-31008?

Klik View Reason atau periksa Error umum untuk menemukan solusi pesan error.

Bagaimana cara menangani masalah konektivitas jaringan saat menggunakan jalur sewa untuk menghubungkan ke database yang dikelola sendiri?

Periksa apakah jalur sewa telah mengonfigurasi daftar putih IP terkait DTS dengan benar. Untuk informasi lebih lanjut tentang rentang alamat IP yang diperlukan, lihat Tambahkan rentang alamat IP server DTS ke daftar putih IP database yang dikelola sendiri.

Apakah tugas migrasi dengan SQL Server sebagai sumber mendukung migrasi fungsi?

Tidak, tidak mendukung. Saat objek migrasi dipilih pada granularitas tabel, objek lain seperti view, trigger, dan stored procedure tidak dimigrasikan ke database tujuan.

Bagaimana cara menangani kecepatan migrasi penuh DTS yang lambat?

Migrasi mungkin memakan waktu karena volume data bisa besar. Anda dapat memeriksa progres migrasi di halaman detail tugas di bagian Task Management di bawah Full Migration.

Bagaimana cara menangani error migrasi skema?

Klik ID instans untuk membuka halaman detail tugas. Periksa pesan error spesifik di bagian Task Management untuk migrasi skema, lalu selesaikan error tersebut. Untuk solusi error umum, lihat Error umum.

Apakah migrasi skema dan migrasi penuh ditagih?

Tidak, tidak ditagih. Untuk informasi lebih lanjut tentang penagihan, lihat Item penagihan.

Selama migrasi data Redis-ke-Redis, apakah data zset di tujuan akan ditimpa?

zset tujuan ditimpa. Jika database tujuan sudah berisi kunci yang identik dengan kunci di database sumber, DTS terlebih dahulu menghapus zset yang sesuai di database tujuan, lalu menambahkan setiap objek dari koleksi zset sumber ke database tujuan.

Apa dampak migrasi penuh terhadap database sumber?

Proses migrasi penuh DTS pertama-tama memotong data, lalu membaca dan menulis data dalam setiap rentang potongan. Untuk database sumber, pemotongan meningkatkan IOPS. Membaca data dalam rentang potongan memengaruhi IOPS, CachePool, dan bandwidth keluar. Berdasarkan pengalaman praktis DTS, dampak ini dapat diabaikan.

Apakah tugas migrasi dengan PolarDB-X 1.0 sebagai sumber mendukung penskalaan node?

Tidak, tidak mendukung. Jika penskalaan node terjadi pada sumber PolarDB-X 1.0, Anda harus mengonfigurasi ulang tugas tersebut.

Dapatkah DTS menjamin keunikan untuk data yang dimigrasikan ke Kafka?

Tidak, tidak bisa. Karena data yang ditulis ke Kafka ditambahkan, data duplikat dapat terjadi ketika tugas DTS dimulai ulang atau menarik kembali log sumber. DTS menjamin idempotensi data. Artinya, data diurutkan secara berurutan, dan nilai terbaru dari data duplikat muncul terakhir.

Jika saya mengonfigurasi tugas migrasi penuh terlebih dahulu, lalu mengonfigurasi tugas migrasi data inkremental, apakah akan terjadi ketidakkonsistenan data?

Ya, ketidakkonsistenan data dapat terjadi. Jika Anda mengonfigurasi tugas migrasi data inkremental secara terpisah, migrasi data hanya dimulai setelah tugas migrasi inkremental dimulai. Data yang dihasilkan di instans sumber sebelum tugas migrasi inkremental dimulai tidak disinkronisasi ke instans tujuan. Untuk migrasi tanpa downtime, kami menyarankan Anda memilih migrasi skema, migrasi data penuh, dan migrasi data inkremental saat mengonfigurasi tugas.

Saat mengonfigurasi tugas migrasi inkremental, apakah saya harus memilih migrasi skema?

Migrasi skema mentransfer definisi objek, seperti definisi Tabel A, ke instans tujuan sebelum migrasi data dimulai. Untuk memastikan konsistensi data untuk migrasi inkremental, kami menyarankan Anda memilih migrasi skema, migrasi data penuh, dan migrasi data inkremental.

Mengapa RDS menggunakan lebih banyak ruang penyimpanan daripada database sumber selama migrasi database yang dikelola sendiri ke RDS?

DTS melakukan migrasi logis. Artinya, data yang akan dimigrasikan dikemas sebagai pernyataan SQL lalu dimigrasikan ke instans RDS tujuan. Proses ini menghasilkan data log biner (binlog) di instans RDS tujuan. Oleh karena itu, instans RDS mungkin menggunakan lebih banyak ruang penyimpanan daripada database sumber selama migrasi.

Apakah DTS mendukung migrasi MongoDB dalam jaringan VPC?

Ya, mendukung. DTS mendukung penggunaan instans ApsaraDB for MongoDB berbasis VPC sebagai database sumber untuk migrasi.

Apa yang terjadi pada data yang dimigrasikan jika database sumber berubah selama migrasi data?

Jika tugas migrasi dikonfigurasi dengan migrasi skema, migrasi penuh, dan migrasi inkremental, semua perubahan data di database sumber selama migrasi dimigrasikan ke database tujuan oleh DTS.

Apakah melepaskan tugas migrasi yang telah selesai memengaruhi penggunaan database yang dimigrasikan?

Tidak. Setelah tugas migrasi selesai (Running Status menunjukkan Completed), Anda dapat melepaskan tugas migrasi dengan aman.

Apakah DTS mendukung migrasi inkremental MongoDB?

Ya, mendukung. Untuk contoh konfigurasi, lihat Ikhtisar skenario migrasi.

Apa perbedaan antara menggunakan instans RDS dan database yang dikelola sendiri dengan IP publik sebagai instans sumber untuk tugas migrasi?

Saat Anda mengonfigurasi tugas migrasi dengan instans RDS, DTS secara otomatis beradaptasi dengan perubahan seperti modifikasi DNS atau peralihan jenis jaringan di instans RDS. Hal ini memastikan keandalan tautan.

Apakah DTS mendukung migrasi database yang dikelola sendiri pada ECS dalam VPC ke instans RDS?

Didukung.

  • Jika instans ECS sumber dan instans RDS tujuan berada di wilayah yang sama, DTS dapat langsung mengakses database yang dikelola sendiri pada instans ECS di VPC.

  • Jika instans ECS sumber dan instans RDS tujuan berada di wilayah berbeda, instans ECS memerlukan Alamat IP Elastis. Saat Anda mengonfigurasi tugas migrasi, Anda dapat memilih instans ECS sebagai sumber, dan DTS secara otomatis menggunakan Alamat IP Elastis instans ECS untuk mengakses database.

Apakah DTS mengunci tabel selama migrasi? Apakah ini memengaruhi database sumber?

Tidak, DTS tidak mengunci tabel di database sumber selama migrasi data penuh atau inkremental. Tabel di database sumber tetap dapat dibaca dan ditulis selama migrasi.

Saat melakukan migrasi RDS, apakah DTS menarik data dari database RDS primer atau sekunder?

DTS menarik data dari database RDS primer selama migrasi data.

Apakah DTS mendukung migrasi otomatis terjadwal?

DTS tidak mendukung startup terjadwal untuk tugas migrasi data.

Apakah DTS mendukung migrasi data untuk instans RDS dalam mode VPC?

Ya. Untuk mengonfigurasi tugas migrasi, Anda hanya perlu memberikan ID instans RDS.

Untuk migrasi/sinkronisasi dalam akun yang sama atau lintas akun, apakah DTS menggunakan jaringan internal atau publik untuk instans ECS/RDS? Apakah biaya lalu lintas dikenakan?

Untuk tugas sinkronisasi atau migrasi, jaringan yang digunakan (internal atau publik) tidak terkait dengan apakah akun tersebut lintas akun. Biaya lalu lintas bergantung pada jenis tugas.

  • Jaringan yang digunakan

    • Tugas migrasi: Untuk migrasi dalam wilayah yang sama, DTS menggunakan jaringan internal untuk menghubungkan ke instans ECS dan RDS. Untuk migrasi lintas wilayah, DTS menggunakan jaringan publik untuk menghubungkan ke instans sumber (ECS atau RDS) dan jaringan internal untuk menghubungkan ke instans RDS tujuan.

    • Tugas sinkronisasi menggunakan jaringan pribadi.

  • Traffic Fees

    • Untuk tugas migrasi, Anda dikenai biaya lalu lintas keluar jaringan publik jika Access Method instans database tujuan adalah Public IP Address. Biaya lalu lintas tidak dikenakan untuk jenis instans DTS lainnya.

    • Tugas sinkronisasi: Tidak ada biaya lalu lintas yang dikenakan.

Saat menggunakan DTS untuk migrasi data, apakah data database sumber akan dihapus setelah migrasi?

Tidak. DTS menyalin data dari database sumber ke database tujuan tanpa memengaruhi data pada database sumber.

Saat melakukan migrasi data antar instans RDS, dapatkah saya menentukan nama database tujuan?

Ya, Anda bisa. Saat Anda melakukan migrasi data antar instans RDS, Anda dapat menggunakan fitur pemetaan nama database DTS untuk menentukan nama database tujuan. Untuk informasi lebih lanjut, lihat Sinkronisasi atau migrasi data antara nama database berbeda.

Bagaimana cara menangani sumber tugas migrasi DTS yang tidak dapat terhubung ke instans ECS?

Instans ECS mungkin tidak memiliki IP publik yang diaktifkan. Anda dapat mengikat Alamat IP Elastis ke instans ECS dan mencoba lagi. Untuk informasi lebih lanjut tentang cara mengikat Alamat IP Elastis, lihat Alamat IP Elastis.

Mengapa migrasi Redis-ke-Redis tidak menampilkan migrasi penuh?

Migrasi Redis-ke-Redis mendukung migrasi data penuh dan inkremental, yang ditampilkan bersama sebagai Incremental migration.

Dapatkah saya melewati migrasi penuh?

Ya, Anda bisa. Melewati migrasi penuh memungkinkan migrasi inkremental untuk dilanjutkan, tetapi error dapat terjadi. Kami menyarankan Anda tidak melewati migrasi penuh.

Apakah Redis Cluster Edition mendukung koneksi IP publik ke DTS?

Tidak, tidak mendukung. Saat ini, hanya Redis Basic Edition yang mendukung koneksi IP publik ke instans migrasi DTS.

Apa yang perlu diperhatikan saat memigrasikan dari MySQL 8.0 ke MySQL 5.6?

Anda harus membuat database di MySQL 5.6 sebelum memulai migrasi. Kami menyarankan Anda menjaga versi sumber dan tujuan konsisten atau memigrasikan data dari versi lebih rendah ke versi lebih tinggi untuk memastikan kompatibilitas. Memigrasikan data dari versi lebih tinggi ke versi lebih rendah dapat menyebabkan masalah kompatibilitas.

Dapatkah saya memigrasikan akun dari database sumber ke database tujuan?

Saat ini, hanya tugas migrasi antar instans RDS for MySQL yang mendukung migrasi akun. Tugas migrasi lainnya tidak mendukung fitur ini.

Bagaimana cara mengonfigurasi parameter saat Message Queue for Apache Kafka adalah tujuan?

Anda dapat mengonfigurasi parameter sesuai kebutuhan. Untuk informasi lebih lanjut tentang metode konfigurasi parameter khusus, lihat Konfigurasi parameter untuk instans Message Queue for Apache Kafka.

Bagaimana cara menjadwalkan migrasi penuh?

Anda dapat menggunakan strategi penjadwalan dalam integrasi data untuk secara berkala memigrasikan skema dan data historis database sumber ke database tujuan. Untuk informasi lebih lanjut, lihat Konfigurasi tugas integrasi data antar instans RDS MySQL.

Apakah DTS mendukung migrasi SQL Server yang dikelola sendiri di ECS ke SQL Server yang dikelola sendiri secara lokal?

Ya, mendukung. SQL Server yang dikelola sendiri secara lokal perlu dihubungkan ke Alibaba Cloud. Untuk informasi lebih lanjut, lihat Ikhtisar persiapan.

Apakah DTS mendukung migrasi database PostgreSQL dari cloud lain?

Saat database PostgreSQL dari cloud lain mengizinkan akses jaringan publik DTS, DTS mendukung migrasi data.

Catatan

Jika versi PostgreSQL lebih awal dari 10.0, migrasi inkremental tidak didukung.

Masalah pelacakan perubahan

Bagaimana cara kerja pelacakan perubahan?

Untuk informasi lebih lanjut, lihat Arsitektur layanan dan fitur.

Setelah tugas pelacakan perubahan kedaluwarsa, apakah kelompok konsumen dihapus?

Setelah tugas pelacakan perubahan DTS kedaluwarsa, kelompok konsumen data terkait dipertahankan selama tujuh hari. Jika instans tidak diperpanjang dalam waktu tujuh hari setelah kedaluwarsa, instans dilepaskan dan kelompok konsumen yang sesuai dihapus.

Dapatkah instans hanya baca berfungsi sebagai sumber untuk tugas langganan?

Dua skenario mungkin terjadi:

  • Instans hanya baca yang mencatat log transaksi, seperti RDS for MySQL 5.7 atau 8.0, dapat berfungsi sebagai sumber.

  • Instans hanya baca yang tidak mencatat log transaksi, seperti RDS for MySQL 5.6, tidak dapat berfungsi sebagai sumber.

Bagaimana cara mengonsumsi data yang dilanggan?

Untuk informasi lebih lanjut, lihat Mengonsumsi data yang dilanggan.

Mengapa format data tanggal berubah setelah menggunakan pelacakan perubahan untuk mentransfer data?

DTS menyimpan data tanggal dalam format default YYYY:MM:DD. Meskipun YYYY-MM-DD adalah format tampilan, format penyimpanan aktual adalah YYYY:MM:DD. Oleh karena itu, terlepas dari format input, data dikonversi ke format default.

Bagaimana cara troubleshooting masalah tugas langganan?

Untuk informasi lebih lanjut tentang metode troubleshooting untuk tugas langganan, lihat Troubleshooting tugas langganan.

Unduhan data normal SDK tiba-tiba berhenti dan tidak dapat berlangganan data. Bagaimana cara menangani ini?

Periksa apakah kode SDK Anda memanggil antarmuka `ackAsConsumed` untuk melaporkan titik pemeriksaan konsumsi. Jika antarmuka `ackAsConsumed` tidak dipanggil untuk melaporkan checkpoint, ruang cache catatan di SDK tidak dihapus. Saat cache penuh, data baru tidak dapat ditarik. Hal ini menyebabkan SDK berhenti dan berhenti berlangganan data.

Setelah memulai ulang SDK, saya tidak dapat berlangganan data dengan sukses. Bagaimana cara menangani ini?

Sebelum memulai SDK, Anda harus memodifikasi titik pemeriksaan konsumsi untuk memastikan bahwa titik tersebut berada dalam rentang data. Untuk informasi lebih lanjut tentang metode modifikasi, lihat Simpan dan tanyakan titik pemeriksaan konsumsi.

Bagaimana klien dapat menentukan titik waktu untuk konsumsi data?

Saat Anda mengonsumsi data yang dilanggan, Anda dapat menggunakan parameter initCheckpoint untuk menentukan titik waktu. Untuk informasi lebih lanjut, lihat Gunakan kode contoh SDK untuk mengonsumsi data yang dilanggan.

Tugas langganan DTS memiliki data yang menumpuk. Bagaimana cara mengatur ulang checkpoint?

  1. Buka file kode yang sesuai berdasarkan mode penggunaan klien SDK Anda. Misalnya, DTSConsumerAssignDemo.java atau DTSConsumerSubscribeDemo.java.

    Catatan

    Untuk informasi lebih lanjut, lihat Gunakan kode contoh SDK untuk mengonsumsi data yang dilanggan.

  2. Di daftar tugas langganan, periksa rentang checkpoint yang dapat dimodifikasi untuk instans langganan target di kolom Data Range.

  3. Pilih titik pemeriksaan konsumsi baru sesuai kebutuhan dan konversikan ke timestamp Unix.

  4. Ganti titik pemeriksaan konsumsi lama (parameter initCheckpoint) di file kode dengan yang baru.

  5. Jalankan ulang klien.

Klien tidak dapat terhubung menggunakan alamat VPC tugas langganan. Bagaimana cara menangani ini?

Mesin klien mungkin tidak berada di VPC yang ditentukan selama konfigurasi tugas langganan, misalnya karena penggantian VPC. Anda perlu mengonfigurasi ulang tugas tersebut.

Mengapa titik pemeriksaan konsumsi di konsol lebih besar daripada nilai maksimum rentang data?

Rentang data saluran langganan diperbarui setiap menit, sedangkan titik pemeriksaan konsumsi diperbarui setiap 10 detik. Oleh karena itu, dengan konsumsi real-time, nilai titik pemeriksaan konsumsi mungkin melebihi nilai maksimum rentang data saluran langganan.

Bagaimana DTS memastikan SDK menerima transaksi lengkap?

Berdasarkan titik pemeriksaan konsumsi yang diberikan, server mencari transaksi lengkap yang sesuai dengan checkpoint ini dan mendistribusikan data mulai dari pernyataan BEGIN transaksi. Hal ini memastikan bahwa konten lengkap transaksi diterima.

Bagaimana cara memastikan data dikonsumsi secara normal?

Jika data dikonsumsi secara normal, titik pemeriksaan konsumsi di konsol Data Transmission Service maju sebagaimana mestinya.

Apa arti usePublicIp=true dalam SDK pelacakan perubahan?

Mengatur usePublicIp=true dalam konfigurasi SDK pelacakan perubahan berarti bahwa SDK mengakses saluran langganan DTS melalui jaringan publik.

Apakah pergantian primer-sekunder RDS atau restart primer memengaruhi bisnis selama tugas pelacakan perubahan?

Untuk instans RDS for MySQL, RDS for PostgreSQL, PolarDB for MySQL, PolarDB for PostgreSQL, dan PolarDB-X 1.0 (dengan tipe penyimpanan RDS for MySQL), DTS secara otomatis beradaptasi dengan pergantian primer-sekunder atau restart tanpa memengaruhi bisnis Anda.

Dapatkah RDS mengunduh Binlog ke server lokal secara otomatis?

Pelacakan perubahan DTS mendukung langganan real-time ke binlog RDS. Anda dapat mengaktifkan layanan pelacakan perubahan DTS dan menggunakan SDK DTS untuk berlangganan data binlog RDS dan menyinkronkannya secara real-time ke server lokal.

Apakah data inkremental real-time dalam pelacakan perubahan hanya merujuk pada data baru atau termasuk data yang dimodifikasi?

Pelacakan perubahan DTS dapat berlangganan data inkremental yang mencakup semua penyisipan, penghapusan, pembaruan, dan perubahan skema (DDL).

Mengapa SDK menerima data duplikat setelah restart ketika satu catatan tidak di-ACK dalam tugas pelacakan perubahan?

Jika SDK memiliki pesan yang belum diakui (ACKed), server mendorong semua pesan di buffer. Setelah proses ini selesai, SDK tidak dapat menerima pesan baru. Server menyimpan titik pemeriksaan konsumsi sebagai checkpoint pesan terakhir sebelum pesan yang tidak diakui. Saat SDK dimulai ulang, server mendorong ulang data mulai dari checkpoint sebelum pesan yang tidak diakui untuk mencegah kehilangan pesan. Hal ini menyebabkan SDK menerima data duplikat.

Seberapa sering SDK pelacakan perubahan memperbarui titik pemeriksaan konsumsi? Mengapa saya kadang menerima data duplikat saat memulai ulang SDK?

Setelah mengonsumsi setiap pesan, SDK pelacakan perubahan harus memanggil `ackAsConsumed` untuk mengirim balasan ACK ke server. Setelah server menerima ACK, server memperbarui titik pemeriksaan konsumsi di memori dan menyimpannya setiap 10 detik. Jika SDK dimulai ulang sebelum ACK terbaru disimpan, server mendorong pesan mulai dari checkpoint terakhir yang disimpan untuk mencegah kehilangan pesan. Hal ini menyebabkan SDK menerima pesan duplikat.

Dapatkah satu instans pelacakan perubahan berlangganan ke beberapa instans RDS?

Tidak, tidak bisa. Satu instans pelacakan perubahan hanya dapat berlangganan ke satu instans RDS.

Apakah instans pelacakan perubahan mengalami ketidakkonsistenan data?

Tidak, tidak bisa. Tugas pelacakan perubahan hanya menangkap perubahan database sumber dan tidak melibatkan ketidakkonsistenan data. Jika data yang dikonsumsi berbeda dari ekspektasi Anda, Anda harus melakukan troubleshooting secara mandiri.

Bagaimana cara menangani UserRecordGenerator saat mengonsumsi data langganan?

Saat Anda mengonsumsi data langganan, jika Anda melihat pesan seperti UserRecordGenerator: haven't receive records from generator for 5s, periksa apakah titik pemeriksaan konsumsi berada dalam rentang checkpoint modul pengumpulan data inkremental dan pastikan konsumen berjalan sebagaimana mestinya.

Dapatkah satu Topik membuat beberapa partisi?

Tidak, tidak bisa. Untuk memastikan pengurutan pesan global, setiap topik langganan hanya memiliki satu partisi, yang tetap pada partisi 0.

Apakah SDK pelacakan perubahan mendukung bahasa Go?

Kode contoh tersedia di dts-subscribe-demo.

Apakah SDK pelacakan perubahan mendukung bahasa Python?

Untuk kode contoh, lihat dts-subscribe-demo.

Apakah flink-dts-connector mendukung konsumsi data langganan konkuren multi-threaded?

Tidak, bukan demikian.

Masalah validasi data

Apa penyebab umum ketidakkonsistenan data dalam tugas validasi data?

Berikut adalah penyebab umum:

  1. Tugas migrasi atau sinkronisasi mengalami penundaan.

  2. Database sumber mengeksekusi penambahan kolom dengan nilai default, dan tugas mengalami penundaan.

  3. Data ditulis ke database tujuan dari sumber selain DTS.

  4. Operasi DDL dieksekusi pada database sumber tugas dengan penggabungan multi-tabel diaktifkan.

  5. Tugas migrasi atau sinkronisasi menggunakan fitur pemetaan nama database, tabel, dan kolom.

Mengapa validasi skema mendeteksi perbedaan isRelHasoids?

Versi PostgreSQL sebelum 12 mendukung penambahan bidang pengidentifikasi objek unik (OID) dengan menentukan WITH OIDS saat membuat tabel. Jika Anda menentukan WITH OIDS saat membuat tabel di database sumber, dan database tujuan adalah versi PostgreSQL yang lebih baru yang tidak mendukung WITH OIDS, perbedaan `isRelHasoids` terdeteksi.

Haruskah saya khawatir tentang perbedaan isRelHasoids yang terdeteksi dalam tugas validasi skema?

Tidak, sebaiknya jangan.

Apakah DTS menyinkronisasi atau memigrasikan bidang pengidentifikasi objek (OID)?

Tidak, tidak menyinkronisasi atau memigrasikan. Bidang pengidentifikasi objek (OID) dihasilkan secara otomatis saat Anda menentukan WITH OIDS. DTS tidak menyinkronisasi atau memigrasikan data ini, terlepas dari apakah database tujuan mendukung bidang ini atau tidak.

Bagaimana cara memeriksa apakah tabel memiliki bidang pengidentifikasi objek (OID)?

Catatan

Ganti <table_name> dalam perintah dengan nama tabel yang ingin Anda tanyakan.

  • Perintah SQL: SELECT relname AS table_name, relhasoids AS has_oids FROM pg_class WHERE relname = '<table_name>' AND relkind = 'r';

  • Perintah klien: \d+ <table_name>

Masalah lainnya

Apa yang terjadi jika saya memodifikasi data database tujuan selama tugas sinkronisasi atau migrasi data?

  • Memodifikasi data di database tujuan dapat menyebabkan tugas DTS gagal. Selama migrasi atau sinkronisasi, operasi pada objek tujuan dapat menyebabkan konflik kunci primer atau catatan pembaruan yang hilang, yang dapat menyebabkan tugas DTS gagal. Namun, operasi yang tidak mengganggu tugas DTS diizinkan, seperti membuat dan menulis data ke tabel di instans tujuan yang bukan objek migrasi atau sinkronisasi.

  • Karena DTS membaca data dari instans sumber dan memigrasikan atau menyinkronisasi data penuh, data skema, dan data inkremental ke instans tujuan, modifikasi yang dilakukan pada data tujuan selama tugas dapat ditimpa oleh data dari sumber.

Dapatkah database sumber dan tujuan ditulis secara bersamaan selama tugas sinkronisasi atau migrasi data?

Ya, bisa. Namun, jika sumber data lain menulis ke database tujuan selain DTS selama eksekusi tugas, data tujuan atau instans DTS mungkin menjadi abnormal.

Apa yang terjadi jika saya mengubah password database sumber atau tujuan saat instans DTS sedang berjalan?

Jika instans DTS melaporkan kesalahan, tugas akan terhenti. Untuk mengatasi masalah ini, klik ID instans untuk membuka detail instans tersebut. Pada tab Basic Information, perbarui kata sandi akun sumber atau tujuan. Selanjutnya, buka tab Task Management, temukan tugas yang gagal, lalu mulai ulang dari bagian Basic Information.

Mengapa beberapa database sumber atau tujuan tidak memiliki opsi koneksi IP publik?

Hal ini tergantung pada jenis koneksi database sumber atau tujuan, jenis tugas, dan jenis database. Misalnya, untuk sumber database MySQL, tugas migrasi dan langganan dapat menggunakan koneksi IP publik, tetapi tugas sinkronisasi tidak mendukung koneksi IP publik.

Apakah DTS mendukung migrasi atau sinkronisasi data lintas akun?

Ya, mendukung. Untuk informasi lebih lanjut tentang metode konfigurasi, lihat Konfigurasi tugas lintas akun Alibaba Cloud.

Dapatkah database sumber dan tujuan menjadi instans database yang sama?

Ya, bisa. Jika database sumber dan tujuan Anda adalah instans yang sama, kami menyarankan Anda menggunakan fitur pemetaan untuk mengisolasi dan membedakan data guna mencegah kegagalan instans DTS atau kehilangan data. Untuk informasi lebih lanjut, lihat Pemetaan nama database, tabel, dan kolom.

Mengapa tugas dengan Redis sebagai tujuan melaporkan "OOM command not allowed when used memory > 'maxmemory'"?

Ruang penyimpanan instans Redis tujuan mungkin tidak mencukupi. Jika instans Redis tujuan menggunakan arsitektur kluster, satu shard mungkin telah mencapai batas memorinya. Anda perlu meningkatkan spesifikasi instans tujuan.

Apa kebijakan izin AliyunDTSRolePolicy dan untuk apa digunakan?

Kebijakan AliyunDTSRolePolicy memberikan akses saat ini atau lintas akun ke sumber daya cloud seperti RDS dan ECS di bawah akun Alibaba Cloud. Kebijakan ini dipanggil saat Anda mengonfigurasi tugas migrasi, sinkronisasi, atau langganan data untuk mengakses informasi sumber daya cloud yang relevan. Untuk informasi lebih lanjut, lihat Berikan akses DTS ke sumber daya cloud.

Bagaimana cara melakukan otorisasi peran RAM?

Saat Anda pertama kali masuk ke konsol, DTS akan meminta Anda untuk mengotorisasi peran AliyunDTSDefaultRole. Anda dapat mengikuti petunjuk di konsol untuk membuka halaman otorisasi RAM. Untuk informasi lebih lanjut, lihat Berikan akses DTS ke sumber daya cloud.

Penting

Anda perlu masuk ke konsol menggunakan akun Alibaba Cloud Anda (akun utama).

Dapatkah saya memodifikasi password akun yang dimasukkan untuk tugas DTS?

Ya, Anda bisa mengklik ID instans untuk membuka detail instans. Di tab Basic Information, klik Modify Password untuk mengubah password akun sumber atau tujuan.

Penting

Password akun sistem tugas DTS tidak dapat dimodifikasi.

Mengapa tabel MaxCompute memiliki akhiran _base?

  1. Sinkronisasi skema awal

    DTS menyinkronisasi definisi skema tabel yang akan disinkronisasi dari database sumber ke MaxCompute. Selama inisialisasi, DTS menambahkan akhiran `_base` ke nama tabel. Misalnya, jika tabel sumber adalah `customer`, tabel di MaxCompute adalah `customer_base`.

  2. Sinkronisasi data penuh awal

    DTS menyinkronisasi semua data historis dari tabel yang akan disinkronisasi di database sumber ke tabel tujuan (berakhiran `_base`) di MaxCompute. Misalnya, data disinkronisasi dari tabel `customer` di database sumber ke tabel `customer_base` di MaxCompute. Data ini berfungsi sebagai garis dasar untuk sinkronisasi data inkremental berikutnya.

    Catatan

    Tabel ini juga dikenal sebagai tabel garis dasar penuh.

  3. Sinkronisasi data inkremental

    DTS membuat tabel log inkremental di MaxCompute. Nama tabel ini dibentuk dengan menambahkan akhiran `_log` ke nama tabel tujuan, misalnya, `customer_log`. DTS lalu menyinkronisasi data inkremental dari database sumber ke tabel ini secara real-time.

    Catatan

    Untuk informasi lebih lanjut tentang struktur tabel log inkremental, lihat Skema tabel log inkremental.

Tidak dapat mendapatkan topik Kafka. Bagaimana cara menangani ini?

Broker Kafka yang dikonfigurasi saat ini mungkin tidak memiliki informasi topik. Anda dapat memeriksa distribusi broker topik menggunakan perintah berikut:

./bin/kafka-topics.sh --describe --zookeeper zk01:2181/kafka --topic topic_name

Bisakah saya menyiapkan instans MySQL lokal sebagai replika dari instans RDS?

Ya, Anda bisa. Anda dapat menggunakan fitur migration data DTS untuk mengonfigurasi sinkronisasi real-time dari instans RDS ke instans MySQL yang dikelola sendiri di lingkungan on-premises. Hal ini menerapkan arsitektur master-slave.

Bagaimana cara menyalin data dari instans RDS ke instans RDS yang baru dibuat?

Anda dapat menggunakan migrasi data DTS dengan memilih jenis migrasi berupa schema migration, full migration, dan incremental migration. Untuk informasi lebih lanjut mengenai metode konfigurasinya, lihat Data migration between RDS instances.

Apakah DTS mendukung penyalinan database dalam satu instans RDS yang identik kecuali pada nama databasenya?

Ya, didukung. Fitur pemetaan nama objek dari DTS dapat menyalin sebuah database dalam satu instans RDS yang identik kecuali pada nama databasenya.

Instans DTS selalu menunjukkan latensi. Bagaimana cara mengatasinya?

Berikut ini adalah kemungkinan penyebabnya:

  • Beberapa tugas DTS dibuat menggunakan akun berbeda pada instansiasi basis data sumber yang sama, sehingga menyebabkan beban instans tinggi. Anda dapat menggunakan akun yang sama untuk membuat tugas.

  • Instansiasi basis data tujuan memiliki memori yang tidak mencukupi. Setelah Anda mengatur operasi bisnis, Anda dapat melakukan restart pada instans tujuan. Jika masalah tetap berlanjut, Anda dapat melakukan upgrade spesifikasi instans tujuan atau melakukan alih bencana primary-secondary.

    Catatan

    Alih bencana primary-secondary dapat menyebabkan gangguan koneksi jaringan sementara. Pastikan aplikasi Anda memiliki mekanisme reconnect otomatis.

Saat menyinkronkan atau memigrasikan ke database tujuan menggunakan Legacy Console, semua bidang berupa huruf kecil. Bagaimana cara menanganinya?

Anda dapat menggunakan Konsol baru untuk mengonfigurasi Tugas dan menggunakan fitur kebijakan sensitivitas huruf besar/kecil pada nama objek database tujuan. Untuk informasi selengkapnya, lihat Destination database object name case sensitivity policy.

Apakah task DTS yang dijeda dapat dilanjutkan?

Pada sebagian besar kasus, task DTS yang dijeda selama kurang dari 24 jam dapat dilanjutkan. Untuk task dengan volume data kecil, task yang dijeda selama kurang dari tujuh hari dapat dilanjutkan. Kami menyarankan agar Anda tidak menjeda task lebih dari enam jam.

Mengapa progres dimulai dari 0 setelah memulai ulang task yang dijeda?

Setelah sebuah task dipulai ulang, DTS melakukan kueri ulang terhadap data yang telah selesai dan melanjutkan pemrosesan data yang tersisa. Selama proses ini, progres task mungkin berbeda dari progres aktual karena adanya penundaan.

Apa prinsip di balik perubahan DDL tanpa lock?

Untuk informasi lebih lanjut mengenai prinsip utama perubahan DDL tanpa lock, lihat Main principles.

Apakah DTS mendukung penangguhan sinkronisasi atau migrasi untuk tabel tertentu?

Tidak, tidak.

Jika sebuah task gagal, apakah saya perlu membeli ulang?

Tidak, Anda tidak perlu. Anda dapat mengonfigurasi ulang task asli tersebut.

Apa yang terjadi jika multiple Tugas menulis data ke destinasi yang sama?

Ketidakkonsistenan data dapat terjadi.

Mengapa instans masih terkunci setelah perpanjangan?

Setelah Anda memperpanjang instans DTS yang terkunci, diperlukan waktu hingga instans tersebut unlock. Harap bersabar.

Bisakah saya mengubah kelompok sumber daya untuk instans DTS?

Ya, Anda bisa. Buka halaman Basic Information instans tersebut. Di bagian Basic Information, klik Modify di sebelah Resource Group Name untuk melakukan perubahan.

Apakah DTS memiliki tool analisis binlog?

DTS tidak memiliki tool analisis binlog.

Tugas incremental selalu menampilkan 95%. Apakah ini normal?

Ya, memang demikian. Tugas incremental berjalan terus-menerus dan tidak pernah selesai, sehingga progresnya tidak pernah mencapai 100%.

Mengapa task DTS saya belum dirilis setelah 7 hari?

Task yang dibekukan kadang-kadang disimpan lebih dari tujuh hari.

Bisakah saya mengubah port untuk task yang sudah dibuat?

Tidak didukung.

Apakah saya dapat menurunkan spesifikasi instans RDS MySQL yang disambungkan di bawah PolarDB-X 1.0 dalam tugas DTS?

Tindakan ini tidak direkomendasikan karena menurunkan versi memicu alih bencana primer-sekunder yang berpotensi menyebabkan kehilangan data.

Apakah saya dapat melakukan upgrade atau downgrade instans sumber atau tujuan saat tugas DTS sedang berjalan?

Melakukan upgrade atau downgrade instans sumber atau tujuan saat tugas DTS sedang berjalan dapat menyebabkan penundaan tugas atau kehilangan data. Kami menyarankan agar Anda tidak mengubah spesifikasi instans selama tugas sedang berjalan.

Apa dampak Tugas DTS terhadap Instans sumber dan tujuan?

Inisialisasi data penuh mengonsumsi sumber daya baca dan tulis dari database sumber maupun tujuan, yang dapat meningkatkan beban database. Kami menyarankan Anda menjalankan Tugas inisialisasi data penuh selama jam sepi.

Berapa latensi khas untuk task DTS?

Latensi suatu task DTS tidak dapat diperkirakan karena bergantung pada multiple faktor, termasuk beban instans sumber, lebar pita jaringan, latensi jaringan, dan performa penulisan instans tujuan.

Jika konsol transmisi data secara otomatis mengalihkan ke konsol Data Management (DMS), bagaimana cara saya kembali ke konsol Data Transmission Service versi lama?

Di konsol Data Management (DMS), Anda dapat mengklik ikon jiqiren di pojok kanan bawah, lalu klik ikon 返回旧版 untuk kembali ke konsol Data Transmission Service versi lama.

Apakah DTS mendukung enkripsi data?

DTS mendukung akses aman ke database sumber atau tujuan menggunakan Enkripsi SSL untuk membaca data dari sumber atau menulis data ke tujuan. Namun, DTS tidak mendukung enkripsi data selama transmisi.

Apakah DTS mendukung ClickHouse sebagai sumber atau tujuan?

Tidak, tidak.

Apakah DTS mendukung AnalyticDB for MySQL 2.0 sebagai sumber atau tujuan?

AnalyticDB for MySQL 2.0 hanya didukung sebagai tujuan. Solusi yang menggunakan AnalyticDB for MySQL 2.0 sebagai tujuan belum tersedia di Konsol baru dan hanya dapat dikonfigurasi melalui Konsol lama.

Mengapa saya tidak dapat melihat task yang baru dibuat di Konsol?

Anda mungkin telah memilih daftar task yang salah atau menerapkan filter. Anda dapat memilih opsi filter yang benar pada daftar task yang sesuai, seperti Wilayah dan kelompok sumber daya yang tepat.资源组

Bisakah saya mengubah item konfigurasi yang dinonaktifkan dalam Tugas yang telah dibuat?

Tidak didukung.

Bagaimana cara saya mengonfigurasi peringatan latensi dan ambang batas?

DTS menyediakan fitur pemantauan dan peringatan. Anda dapat mengatur aturan peringatan untuk metrik pemantauan penting di konsol untuk tetap mengetahui status berjalan. Untuk informasi lebih lanjut tentang metode konfigurasi, lihat Konfigurasikan pemantauan.

Untuk task yang gagal sejak lama, apakah saya dapat melihat alasan kegagalannya?

Tidak, Anda tidak dapat melakukannya. Jika sebuah task gagal dalam jangka waktu yang lama, misalnya lebih dari tujuh hari, log terkait akan dihapus dan alasan kegagalannya tidak dapat dilihat.

Bisakah saya memulihkan task yang gagal sejak lama?

Tidak, Anda tidak bisa. Jika sebuah task gagal dalam jangka waktu lama, misalnya lebih dari tujuh hari, log terkait akan dihapus dan tidak dapat dipulihkan. Anda perlu mengonfigurasi ulang task tersebut.

Apa itu akun rdsdt_dtsacct?

Jika Anda tidak membuat akun rdsdt_dtsacct, kemungkinan akun tersebut telah dibuat oleh DTS. DTS secara otomatis membuat akun bawaan rdsdt_dtsacct pada beberapa instansiasi basis data untuk menghubungkan ke instansiasi basis data sumber dan tujuan.

Bagaimana cara memeriksa tabel heap, tabel tanpa kunci primer, tabel terkompresi, tabel dengan kolom terhitung, dan tabel dengan kolom sparse di SQL Server?

Anda dapat mengeksekusi pernyataan SQL berikut untuk memeriksa apakah database sumber Anda berisi tabel dengan karakteristik ini:

  1. Periksa keberadaan tabel heap di database sumber:

    SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.indexes WHERE index_id = 0);
  2. Periksa tabel yang tidak memiliki primary key:

    SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id NOT IN (SELECT parent_object_id FROM sys.objects WHERE type = 'PK');
  3. Periksa kolom primary key yang tidak termasuk dalam kolom clustered index di database sumber:

    SELECT s.name schema_name, t.name table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id WHERE t.type = 'U' AND s.name NOT IN('cdc', 'sys') AND t.name NOT IN('systranschemas') AND t.object_id IN ( SELECT pk_colums_counter.object_id AS object_id FROM (select pk_colums.object_id, sum(pk_colums.column_id) column_id_counter from (select sic.object_id object_id, sic.column_id FROM sys.index_columns sic, sys.indexes sis WHERE sic.object_id = sis.object_id AND sic.index_id = sis.index_id AND sis.is_primary_key = 'true') pk_colums group by object_id) pk_colums_counter inner JOIN ( select cluster_colums.object_id, sum(cluster_colums.column_id) column_id_counter from (SELECT sic.object_id object_id, sic.column_id FROM sys.index_columns sic, sys.indexes sis WHERE sic.object_id = sis.object_id AND sic.index_id = sis.index_id AND sis.index_id = 1) cluster_colums group by object_id ) cluster_colums_counter ON pk_colums_counter.object_id = cluster_colums_counter.object_id and pk_colums_counter.column_id_counter != cluster_colums_counter.column_id_counter);
  4. Periksa tabel terkompresi di database sumber:

    SELECT s.name AS schema_name, t.name AS table_name FROM sys.objects t, sys.schemas s, sys.partitions p WHERE s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id = p.object_id AND p.data_compression != 0;
  5. Periksa tabel yang berisi computed column:

    SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.columns WHERE is_computed = 1);
  6. Periksa tabel yang berisi kolom sparse:

    SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.columns WHERE is_sparse = 1);

Bagaimana cara menangani inkonsistensi skema antara sumber dan tujuan?

Anda dapat mencoba menggunakan fitur mapping untuk menetapkan hubungan pemetaan kolom antara sumber dan tujuan. Untuk informasi selengkapnya, lihat Pemetaan nama database, tabel, dan kolom.

Catatan

Modifikasi tipe kolom tidak didukung.

Apakah pemetaan database, tabel, dan kolom mendukung modifikasi tipe kolom?

Tidak, tidak demikian.

Apakah DTS mendukung pembatasan kecepatan baca database sumber?

Tidak, tidak didukung. Sebelum menjalankan task, Anda harus mengevaluasi performa database sumber, seperti apakah IOPS dan lebar pita jaringan memenuhi persyaratan. Kami juga merekomendasikan agar Anda menjalankan task pada jam sepi.

Bagaimana cara membersihkan dokumen orphaned di MongoDB (arsitektur kluster sharded)?

Periksa keberadaan dokumen orphaned

  1. Hubungkan ke instans kluster sharded MongoDB menggunakan Mongo Shell.

    Untuk informasi selengkapnya tentang cara menghubungkan ke instans ApsaraDB for MongoDB, lihat Connect to MongoDB sharded cluster instance using Mongo Shell.

  2. Jalankan perintah berikut untuk beralih ke database target.

    use <db_name>
  3. Jalankan perintah berikut untuk memeriksa dokumen yang terlantar.

    db.<coll_name>.find().explain("executionStats")
    Catatan

    Periksa bidang chunkSkips pada tahap SHARDING_FILTER dalam executionStats untuk setiap shard. Jika nilai bidang ini bukan 0, berarti terdapat dokumen orphaned pada shard tersebut.

    Pada contoh berikut, sebelum tahap SHARDING_FILTER, tahap FETCH mengembalikan 102 dokumen ("nReturned": 102). Kemudian, tahap SHARDING_FILTER menyaring dua dokumen orphaned ("chunkSkips": 2), sehingga hanya 100 dokumen yang dikembalikan ("nReturned": 100).

    "stage" : "SHARDING_FILTER",
    "nReturned" : 100,
    ......
    "chunkSkips" : 2,
    "inputStage" : {
        "stage" : "FETCH",
        "nReturned" : 102,

    Untuk informasi lebih lanjut tentang tahap SHARDING_FILTER, lihat the MongoDB Manual.

Membersihkan dokumen terbengkalai

Penting

Jika Anda memiliki multiple database, Anda harus membersihkan dokumen orphaned untuk setiap database tersebut.

ApsaraDB for MongoDB
Catatan

Galat akan dilaporkan jika Anda menjalankan skrip pembersihan pada instans yang menjalankan versi utama sebelum MongoDB 4.2 atau versi minor sebelum 4.0.6. Untuk melihat versi saat ini dari instans Anda, lihat Minor version release notes. Untuk melakukan upgrade versi utama atau versi minor, lihat Upgrade the major version of a database dan Upgrade the minor version of a database.

Untuk membersihkan dokumen orphaned, Anda dapat menggunakan perintah cleanupOrphaned. Cara penggunaan perintah ini sedikit berbeda antara MongoDB 4.4 atau yang lebih baru dengan MongoDB 4.2 atau yang lebih lama. Bagian berikut menjelaskan operasi yang diperlukan.

MongoDB 4.4 dan yang lebih baru
  1. Pada server yang dapat terhubung ke instans kluster sharded, buat skrip JavaScript (JS) untuk membersihkan dokumen orphaned dan beri nama skrip tersebut cleanupOrphaned.js.

    Catatan

    Skrip ini membersihkan dokumen orphaned dari semua koleksi dalam multiple database di beberapa node shard. Untuk membersihkan dokumen orphaned dari koleksi tertentu, Anda dapat memodifikasi skrip JS tersebut.

    // Daftar nama instans shard
    var shardNames = ["shardName1", "shardName2"];
    // Daftar database
    var databasesToProcess = ["database1", "database2", "database3"];
    
    shardNames.forEach(function(shardName) {
        // Telusuri daftar database yang ditentukan
        databasesToProcess.forEach(function(dbName) {
            var dbInstance = db.getSiblingDB(dbName);
            // Dapatkan nama semua koleksi dalam instans database
            var collectionNames = dbInstance.getCollectionNames();
            
            // Telusuri setiap koleksi
            collectionNames.forEach(function(collectionName) {
                // Nama lengkap koleksi
                var fullCollectionName = dbName + "." + collectionName;
                // Bangun perintah cleanupOrphaned
                var command = {
                    runCommandOnShard: shardName,
                    command: { cleanupOrphaned: fullCollectionName }
                };
    
                // Jalankan perintah
                var result = db.adminCommand(command); 
                if (result.ok) {
                    print("Berhasil membersihkan dokumen orphaned untuk koleksi " + fullCollectionName + " pada shard " + shardName);
                    printjson(result);
                } else {
                    print("Gagal membersihkan dokumen orphaned untuk koleksi " + fullCollectionName + " pada shard " + shardName);
                }
            });
        });
    });

    Anda harus mengubah nilai parameter shardNames dan databasesToProcess dalam skrip. Penjelasan parameter sebagai berikut:

    • shardNames: Array ID node shard tempat Anda ingin membersihkan dokumen orphaned. Anda dapat memperoleh ID tersebut dari bagian Shard List pada halaman detail instans. Contoh: d-bp15a3796d3a****.

    • databasesToProcess: Array nama database tempat Anda ingin membersihkan dokumen orphaned.

  2. Di direktori tempat skrip cleanupOrphaned.js berada, jalankan perintah berikut untuk membersihkan dokumen orphaned.

    mongo --host <Mongoshost> --port <Primaryport>  --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js > output.txt

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Deskripsi

    <Mongoshost>

    Titik akhir node Mongos dari instans kluster sharded. Format: s-bp14423a2a51****.mongodb.rds.aliyuncs.com.

    <Primaryport>

    Nomor port node Mongos dari instans kluster sharded. Nilai default-nya adalah 3717.

    <database>

    Nama database otentikasi. Ini adalah database tempat akun database tersebut berada.

    <username>

    Akun database.

    <password>

    Password akun database.

    output.txt

    Hasil eksekusi disimpan ke file output.

MongoDB 4.2 dan yang lebih lama
  1. Pada server yang dapat terhubung ke instans kluster sharded, buat skrip JS untuk membersihkan dokumen orphaned dan beri nama skrip tersebut cleanupOrphaned.js.

    Catatan

    Skrip ini membersihkan dokumen orphaned dari koleksi tertentu dalam database tertentu di beberapa node shard. Untuk membersihkan dokumen orphaned dari multiple koleksi dalam satu database, Anda dapat memodifikasi parameter fullCollectionName dan menjalankan skrip beberapa kali. Anda juga dapat memodifikasi skrip agar dijalankan dalam loop.

    function cleanupOrphanedOnShard(shardName, fullCollectionName) {
        var nextKey = { };
        var result;
    
        while ( nextKey != null ) {
            var command = {
                runCommandOnShard: shardName,
                command: { cleanupOrphaned: fullCollectionName, startingFromKey: nextKey }
            };
    
            result = db.adminCommand(command);
            printjson(result);
    
            if (result.ok != 1 || !(result.results.hasOwnProperty(shardName)) || result.results[shardName].ok != 1 ) {
                print("Tidak dapat menyelesaikan saat ini: kegagalan atau timeout.")
                break
            }
    
            nextKey = result.results[shardName].stoppedAtKey;
        }
    
        print("Pembersihan orphaned selesai untuk koleksi: " + fullCollectionName + " pada shard: " + shardName)
    }
    
    var shardNames = ["shardName1", "shardName2", "shardName3"]
    var fullCollectionName = "database.collection"
    
    shardNames.forEach(function(shardName) {
        cleanupOrphanedOnShard(shardName, fullCollectionName);
    });

    Anda harus mengubah nilai parameter shardNames dan fullCollectionName dalam skrip. Penjelasan parameter sebagai berikut:

    • shardNames: Array ID node shard tempat Anda ingin membersihkan dokumen orphaned. Anda dapat memperoleh ID tersebut dari bagian Shard List pada halaman detail instans. Contoh: d-bp15a3796d3a****.

    • fullCollectionName: Ganti dengan nama koleksi tempat Anda ingin membersihkan dokumen orphaned. Gunakan format database_name.collection_name.

  2. Di direktori tempat skrip cleanupOrphaned.js berada, jalankan perintah berikut untuk membersihkan dokumen orphaned.

    mongo --host <Mongoshost> --port <Primaryport>  --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js > output.txt

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Deskripsi

    <Mongoshost>

    Titik akhir node Mongos dari instans kluster sharded. Format: s-bp14423a2a51****.mongodb.rds.aliyuncs.com.

    <Primaryport>

    Nomor port node Mongos dari instans kluster sharded. Nilai default-nya adalah 3717.

    <database>

    Nama database otentikasi. Ini adalah database tempat akun database tersebut berada.

    <username>

    Akun database.

    <password>

    Password akun database.

    output.txt

    Hasil eksekusi disimpan ke file output.

Database MongoDB yang dikelola sendiri
  1. Pada server yang dapat terhubung ke database MongoDB yang dikelola sendiri, unduh file skrip cleanupOrphaned.js.

    wget "https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/120562/cn_zh/1564451237979/cleanupOrphaned.js"
  2. Modifikasi file skrip cleanupOrphaned.js. Ganti test dengan nama database tempat Anda ingin membersihkan dokumen orphaned.

    Penting

    Jika Anda memiliki multiple database, Anda harus mengulangi Langkah 2 dan Langkah 3.

  3. Jalankan perintah berikut untuk membersihkan dokumen orphaned dari semua koleksi dalam database yang ditentukan pada node shard.

    Catatan

    Anda harus mengulangi langkah ini untuk setiap node shard agar dokumen orphaned benar-benar dibersihkan.

    mongo --host <Shardhost> --port <Primaryport>  --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js
    Catatan
    • <Shardhost>: Alamat IP node shard.

    • <Primaryport>: Port layanan node primary dalam shard.

    • <database>: Nama database otentikasi. Ini adalah database tempat akun database tersebut berada.

    • <username>: Akun yang digunakan untuk login ke database.

    • <password>: Password akun database.

    Contoh:

    Pada contoh ini, database MongoDB yang dikelola sendiri memiliki tiga node shard. Anda harus membersihkan dokumen orphaned pada masing-masing ketiga node tersebut.

    mongo --host 172.16.1.10 --port 27018  --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js
    mongo --host 172.16.1.11 --port 27021 --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js
    mongo --host 172.16.1.12 --port 27024  --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js

Penanganan pengecualian

Jika terdapat cursor idle pada namespace yang sesuai dengan dokumen orphaned, proses pembersihan mungkin tidak pernah selesai. Log mongod yang sesuai untuk dokumen orphaned berisi informasi berikut:

Deletion of DATABASE.COLLECTION range [{ KEY: VALUE1 }, { KEY: VALUE2 }) will be scheduled after all possibly dependent queries finish

Anda dapat terhubung ke mongod menggunakan Mongo Shell dan menjalankan perintah berikut untuk memeriksa apakah terdapat cursor idle pada shard saat ini. Jika ada, Anda perlu melakukan restart mongod atau menggunakan perintah killCursors untuk membersihkan semua cursor idle. Setelah itu, Anda dapat mencoba kembali membersihkan dokumen orphaned. Untuk informasi selengkapnya, lihat JIRA ticket.

db.getSiblingDB("admin").aggregate( [{ $currentOp : { allUsers: true, idleCursors: true } },{ $match : { type: "idleCursor" } }] )

Bagaimana cara menangani distribusi data yang tidak merata dalam arsitektur kluster sharded MongoDB?

Anda dapat mengaktifkan fitur Balancer dan melakukan pre-sharding untuk mengatasi masalah di mana sebagian besar data ditulis ke satu shard saja (data skew).

Enable Balancer

Jika Balancer dinonaktifkan atau belum mencapai periode jendela Balancer, Anda dapat mengaktifkannya atau sementara membatalkan periode jendela Balancer agar penyeimbangan data segera dimulai.

  1. Sambungkan ke instans kluster sharded MongoDB.

  2. Pada jendela perintah node mongos, alihkan ke database config.

    use config
  3. Jalankan perintah berikut sesuai kebutuhan.

    • Aktifkan fitur Balancer

      sh.setBalancerState(true)
    • Sementara batalkan periode jendela Balancer

      db.settings.updateOne( { _id : "balancer" }, { $unset : { activeWindow : true } } )

Pre-sharding

MongoDB mendukung range sharding dan hash sharding. Pre-sharding membantu mendistribusikan nilai chunk ke beberapa node shard secara merata. Hal ini mencapai beban yang seimbang selama sinkronisasi data atau migrasi DTS.

Hash sharding

Anda dapat menggunakan parameter numInitialChunks untuk melakukan pre-sharding dengan cepat dan mudah. Nilai default-nya adalah jumlah shard × 2, dan nilai maksimumnya adalah jumlah shard × 8192. Untuk informasi lebih lanjut, lihat sh.shardCollection().

sh.shardCollection("phonebook.contacts", { last_name: "hashed" }, false, {numInitialChunks: 16384})

Range sharding

  • Jika database MongoDB sumber juga merupakan kluster sharded, Anda dapat menggunakan data dari config.chunks untuk memperoleh rentang chunk dari tabel sharded yang bersesuaian di database MongoDB sumber. Rentang tersebut dapat digunakan sebagai nilai referensi untuk <split_value> dalam perintah pre-sharding selanjutnya.

  • Jika database MongoDB sumber merupakan replica set, Anda hanya dapat menggunakan perintah find untuk menentukan rentang spesifik dari kunci shard, lalu merancang titik pemisahan yang sesuai.

    # Dapatkan nilai minimum kunci shard
    db.<coll>.find().sort({<shardKey>:1}).limit(1)
    # Dapatkan nilai maksimum kunci shard
    db.<coll>.find().sort({<shardKey>:-1).limit(1)

Format perintah

Catatan

Perintah splitAt digunakan sebagai contoh. Untuk informasi lebih lanjut, lihat sh.splitAt(), sh.splitFind(), dan Split Chunks in a Sharded Cluster.

sh.splitAt("<db>.<coll>", {"<shardKey>":<split_value>})

Contoh pernyataan

sh.splitAt("test.test", {"id":0})
sh.splitAt("test.test", {"id":50000})
sh.splitAt("test.test", {"id":75000})

Setelah menyelesaikan operasi pre-sharding, Anda dapat menjalankan perintah sh.status() pada node mongos untuk memverifikasi efek pre-sharding.

Bagaimana cara mengatur jumlah instans yang ditampilkan per halaman di daftar task konsol?

Catatan

Prosedur ini menggunakan instans sinkronisasi sebagai contoh.

  1. Buka halaman daftar task sinkronisasi di wilayah tujuan. Anda dapat menggunakan salah satu dari dua metode berikut:

    Dari konsol DTS

    1. Masuk ke Data Transmission Service (DTS) console.

    2. Pada panel navigasi di sebelah kiri, klik Data Synchronization.

    3. Di pojok kiri atas halaman, pilih wilayah tempat instans sinkronisasi berada.

    Dari konsol DMS

    Catatan

    Langkah-langkah aktual dapat berbeda tergantung pada mode dan tata letak konsol DMS. Untuk informasi selengkapnya, lihat Simple mode dan Customize the layout and style of the DMS interface.

    1. Masuk ke Data Management (DMS).

    2. Pada bilah menu atas, pilih Data + AI > Data Transmission (DTS) > Data Synchronization.

    3. Di sebelah kanan Data Synchronization Tasks, pilih wilayah tempat instans sinkronisasi berada.

  2. Di sisi kanan halaman, seret scrollbar hingga ke bagian bawah halaman.

  3. Di pojok kanan bawah halaman, pilih Items per page.

    Catatan

    Nilai yang tersedia untuk Items per page adalah 10, 20, atau 50.

Bagaimana cara menangani kesalahan timeout koneksi ZooKeeper di instans DTS?

Anda dapat mencoba menjalankan ulang instans untuk melihat apakah dapat dipulihkan. Untuk petunjuk cara menjalankan ulang instans, lihat Jalankan instans DTS.

Setelah menghapus segmen jaringan DTS di CEN, mengapa segmen tersebut secara otomatis ditambahkan kembali?

Anda dapat menggunakan router transit Edisi Dasar Cloud Enterprise Network (CEN) untuk menghubungkan database Anda ke DTS. Jika Anda membuat instance DTS menggunakan database tersebut, DTS secara otomatis menambahkan rentang alamat IP server ke router yang sesuai, bahkan jika Anda menghapus segmen jaringan DTS di CEN.

Apakah DTS mendukung ekspor tugas?

Tidak, bukan demikian.

Bagaimana cara saya memanggil OpenAPI menggunakan Java?

Proses pemanggilan OpenAPI dengan Java mirip dengan Python. Untuk contoh Python, lihat contoh pemanggilan SDK Python. Untuk menemukan contoh kode Java, buka halaman Data Transmission Service DTS SDK dan pilih bahasa pemrograman Anda di bawah All languages.

Bagaimana cara saya mengonfigurasi fungsi ETL untuk tugas sinkronisasi atau migrasi menggunakan API?

Dalam parameter `Reserve` operasi API, Anda dapat mengonfigurasi fungsionalitas menggunakan parameter umum, seperti etlOperatorCtl dan etlOperatorSetting. Untuk informasi selengkapnya, lihat ConfigureDtsJob dan Deskripsi parameter Reserve.

Apakah DTS mendukung Azure SQL Database?

Ya. Saat menggunakan Azure SQL Database sebagai database sumber, Anda harus mengatur SQL Server Incremental Synchronization Mode ke Polling and querying CDC instances for incremental synchronization.

Setelah sinkronisasi atau migrasi DTS selesai, apakah data database sumber tetap dipertahankan?

Ya, demikian. DTS tidak menghapus data dari database sumber. Jika Anda tidak perlu mempertahankan data di database sumber, Anda harus menghapusnya sendiri.

Bisakah saya menyesuaikan laju setelah sinkronisasi atau instans migrasi mulai berjalan?

Didukung. Untuk informasi lebih lanjut, lihat Sesuaikan laju migrasi.

Apakah DTS mendukung pengambilan sampel rentang waktu untuk sinkronisasi atau migrasi?

Tidak.

Saat menyinkronkan atau memigrasikan data, apakah saya perlu membuat tabel data secara manual di database tujuan?

Untuk instans DTS yang mendukung tugas skema (sinkronisasi skema atau migrasi skema), Anda tidak perlu membuat tabel data secara manual di database tujuan jika Anda mengatur Synchronization Types ke Schema Synchronization atau Migration Types ke Schema Migration.

Saat menyinkronkan atau memigrasikan data, apakah saya perlu menghubungkan jaringan database sumber dan tujuan?

Tidak.

Saat mengonfigurasi tugas DTS lintas-akun menggunakan jaringan publik, apakah Otorisasi RAM diperlukan?

Tidak. Saat Anda mengonfigurasi tugas DTS, atur Access Method untuk instansiasi basis data ke Public IP Address.

Catatan

Tugas sinkronisasi data tidak mendukung koneksi ke instansiasi basis data melalui Public IP Address.

Saat menggunakan DTS untuk sinkronisasi data atau migrasi, apakah data yang sudah ada di tujuan akan ditimpa?

Menggunakan sinkronisasi data sebagai contoh, perilaku default DTS dan parameter terkaitnya adalah sebagai berikut:

Perilaku default DTS

Jika terjadi konflik kunci primary atau kunci unik selama eksekusi tugas sinkronisasi:

  • Jika skema tabel sama dan terdapat catatan di database tujuan yang memiliki nilai kunci primary atau kunci unik yang sama dengan catatan di database sumber:

    • Selama sinkronisasi penuh, DTS mempertahankan catatan di kluster tujuan. Catatan yang sesuai dari database sumber tidak disinkronkan.

    • Selama sinkronisasi inkremental, catatan dari database sumber menimpa catatan di database tujuan.

  • Jika skema tabel berbeda, sinkronisasi data awal mungkin gagal. Hal ini dapat menyebabkan hanya sebagian data kolom yang tersinkronisasi atau kegagalan sinkronisasi total. Harap berhati-hati.

Parameter terkait

Saat konfigurasi task, Anda dapat mengelola penanganan data melalui parameter Processing Mode of Conflicting Tables.

  • Precheck and Report Errors: Memeriksa apakah tabel dengan nama yang sama sudah ada di database tujuan. Jika tidak ada tabel dengan nama yang sama, Pemeriksaan Awal berhasil. Jika tabel dengan nama yang sama ditemukan, Pemeriksaan Awal gagal dan tugas sinkronisasi data tidak dimulai.

    Catatan

    Jika Anda tidak dapat menghapus atau mengganti nama tabel dengan nama yang sama di database tujuan, Anda dapat memetakannya ke nama tabel yang berbeda. Untuk informasi selengkapnya, lihat Map table and column names.

  • Ignore Errors and Proceed: Melewati pemeriksaan duplikat nama tabel di database tujuan.

    Peringatan

    Memilih Ignore Errors and Proceed dapat menyebabkan ketidakkonsistenan data dan membahayakan bisnis Anda. Contohnya:

    • Jika skema tabel sama dan terdapat catatan di database tujuan yang memiliki nilai kunci primary atau kunci unik yang sama dengan catatan di database sumber:

      • Selama sinkronisasi penuh, DTS mempertahankan catatan di kluster tujuan. Catatan yang sesuai dari database sumber tidak disinkronkan.

      • Selama sinkronisasi inkremental, catatan dari database sumber menimpa catatan di database tujuan.

    • Jika skema tabel berbeda, sinkronisasi data awal mungkin gagal. Hal ini dapat menyebabkan hanya sebagian data kolom yang tersinkronisasi atau kegagalan sinkronisasi total. Harap berhati-hati.

Rekomendasi

Untuk memastikan konsistensi data, kami menyarankan agar Anda menghapus tabel tujuan dan mengonfigurasi ulang tugas DTS jika bisnis Anda memungkinkan.