Anda dapat menggunakan Data Transmission Service (DTS) untuk memigrasikan data inkremental antar database PostgreSQL. Database sumber atau tujuan dapat berupa database PostgreSQL yang dikelola sendiri atau instance ApsaraDB RDS for PostgreSQL. DTS mendukung migrasi skema, migrasi data penuh, dan migrasi data inkremental. Saat mengonfigurasi tugas migrasi data, Anda dapat memilih semua jenis migrasi yang didukung untuk memastikan kontinuitas layanan. Topik ini menjelaskan cara memigrasikan data inkremental dari database PostgreSQL yang dikelola sendiri ke instance ApsaraDB RDS for PostgreSQL.
Prasyarat
Database PostgreSQL yang dikelola sendiri harus berada pada versi 10.1 hingga 13.0.
Instance ApsaraDB RDS for PostgreSQL telah dibuat. Untuk informasi lebih lanjut, lihat Buat Instance ApsaraDB RDS for PostgreSQL.
CatatanUntuk memastikan kompatibilitas, pastikan bahwa versi database instance ApsaraDB RDS for PostgreSQL sama dengan versi database PostgreSQL yang dikelola sendiri.
Ruang penyimpanan yang tersedia di instance ApsaraDB RDS for PostgreSQL harus lebih besar daripada total ukuran data di database PostgreSQL yang dikelola sendiri.
Catatan penggunaan
DTS menggunakan sumber daya baca dan tulis dari database sumber dan tujuan selama migrasi data penuh. Hal ini dapat meningkatkan beban server database. Jika performa database tidak baik, spesifikasinya rendah, atau volume datanya besar, layanan database mungkin tidak tersedia. Sebagai contoh, DTS menggunakan sejumlah besar sumber daya baca dan tulis dalam kasus berikut: banyak kueri SQL lambat dilakukan pada database sumber, tabel tidak memiliki kunci utama, atau terjadi deadlock di database tujuan. Sebelum memigrasikan data, evaluasi dampak migrasi data terhadap performa database sumber dan tujuan. Kami menyarankan Anda memigrasikan data selama jam non-puncak. Sebagai contoh, Anda dapat memigrasikan data ketika utilisasi CPU database sumber dan tujuan kurang dari 30%.
Tabel yang akan dimigrasikan di database sumber harus memiliki batasan PRIMARY KEY atau UNIQUE dan semua bidang harus unik. Jika tidak, database tujuan mungkin berisi catatan data duplikat.
Jika Anda memilih skema sebagai objek yang akan dimigrasikan dan membuat tabel di skema atau menjalankan pernyataan RENAME untuk mengganti nama tabel selama migrasi data inkremental, Anda harus menjalankan pernyataan
ALTER TABLE schema.table REPLICA IDENTITY FULL;sebelum menulis data ke tabel.CatatanGanti variabel
schemadantabledalam pernyataan di atas dengan nama skema dan nama tabel Anda.Untuk memastikan bahwa latensi migrasi data inkremental akurat, DTS menambahkan tabel denyut jantung ke database sumber. Nama tabel denyut jantung adalah dts_postgres_heartbeat.
Selama migrasi data inkremental, DTS membuat slot replikasi untuk database sumber. Slot replikasi diawali dengan
dts_sync_. DTS secara otomatis membersihkan slot replikasi historis setiap 90 menit untuk mengurangi penggunaan penyimpanan.CatatanJika tugas migrasi data dilepaskan atau gagal, DTS secara otomatis membersihkan slot replikasi. Jika pergantian primer/sekunder dilakukan pada database PostgreSQL yang dikelola sendiri di sumber, Anda harus masuk ke database sekunder untuk membersihkan slot replikasi.

Untuk memastikan bahwa tugas migrasi data berjalan sesuai harapan, Anda hanya dapat melakukan pergantian primer/sekunder pada instance ApsaraDB RDS for PostgreSQL 11. Dalam hal ini, Anda harus mengatur parameter
rds_failover_slot_modemenjadisync. Untuk informasi lebih lanjut, lihat Logical Replication Slot Failover.PeringatanJika Anda melakukan pergantian primer/sekunder pada database PostgreSQL yang dikelola sendiri atau instance ApsaraDB RDS for PostgreSQL dengan versi selain 11, tugas migrasi data akan berhenti.
- Jika tugas migrasi data gagal, DTS secara otomatis melanjutkan tugas tersebut. Sebelum Anda memindahkan beban kerja Anda ke instance tujuan, hentikan atau lepaskan tugas migrasi data. Jika tidak, data di database sumber akan menimpa data di instance tujuan setelah tugas dilanjutkan.
Jika database sumber memiliki transaksi jangka panjang dan tugas mencakup migrasi data inkremental, log write-ahead logging (WAL) yang dihasilkan sebelum transaksi jangka panjang dikirimkan mungkin tidak dibersihkan dan oleh karena itu menumpuk, mengakibatkan ruang penyimpanan di database sumber tidak mencukupi.
Batasan
Tugas migrasi data dapat memigrasikan data dari satu database saja. Untuk memigrasikan data dari beberapa database, Anda harus membuat tugas migrasi data untuk setiap database.
Nama database sumber tidak boleh mengandung tanda hubung (-). Sebagai contoh, dts-testdata tidak diperbolehkan.
Jika pergantian primer/sekunder dilakukan pada database sumber selama migrasi data inkremental, transmisi tidak dapat dilanjutkan.
Data mungkin tidak konsisten antara node primer dan sekunder database sumber karena latensi sinkronisasi. Oleh karena itu, Anda harus menggunakan node primer sebagai sumber data saat memigrasikan data.
CatatanKami menyarankan Anda memigrasikan data selama jam non-puncak. Anda dapat memodifikasi laju transfer migrasi data penuh berdasarkan performa baca dan tulis database sumber. Untuk informasi lebih lanjut, lihat Modifikasi Laju Transfer Migrasi Data Penuh.
Migrasi data inkremental tidak mendukung data tipe BIT.
Selama migrasi data inkremental, DTS hanya memigrasikan operasi DML termasuk INSERT, DELETE, dan UPDATE.
CatatanHanya tugas migrasi data yang dibuat setelah 1 Oktober 2020 yang dapat memigrasikan operasi DDL. Anda harus membuat pemicu dan fungsi di database sumber untuk mendapatkan informasi DDL sebelum mengonfigurasi tugas. Untuk informasi lebih lanjut, lihat Gunakan Pemicu dan Fungsi untuk Mengimplementasikan Migrasi DDL Inkremental untuk Database PostgreSQL.
Setelah beban kerja Anda dipindahkan ke database tujuan, urutan yang baru ditulis tidak bertambah dari nilai maksimum urutan di database sumber. Oleh karena itu, Anda harus menanyakan nilai maksimum urutan di database sumber sebelum memindahkan beban kerja Anda ke database tujuan. Kemudian, Anda harus menentukan nilai maksimum yang diquery sebagai nilai awal urutan di database tujuan.
DTS tidak memeriksa validitas metadata seperti urutan. Anda harus secara manual memeriksa validitas metadata.
Aturan penagihan
Jenis migrasi | Biaya konfigurasi tugas | Biaya lalu lintas internet |
Migrasi skema dan migrasi data penuh | Gratis. | Dikenakan biaya hanya ketika data dimigrasikan dari Alibaba Cloud melalui Internet. Untuk informasi lebih lanjut, lihat Ikhtisar penagihan. |
Migrasi data inkremental | Dikenakan biaya. Untuk informasi lebih lanjut, lihat Ikhtisar penagihan. |
Izin yang diperlukan untuk akun database
| Database | Migrasi skema | Migrasi data penuh | Migrasi data inkremental |
| Database PostgreSQL yang dikelola sendiri | Izin USAGE pada pg_catalog | Izin SELECT pada objek yang akan dimigrasikan | superuser |
| Instance ApsaraDB RDS for PostgreSQL | Izin CREATE dan USAGE pada objek yang akan dimigrasikan | Izin pemilik skema | Izin pemilik skema |
Untuk informasi lebih lanjut tentang cara membuat akun database dan memberikan izin kepada akun database, lihat topik-topik berikut:
Database PostgreSQL yang Dikelola Sendiri: CREATE USER dan GRANT
Instance ApsaraDB RDS for PostgreSQL: Buat Akun.
Proses migrasi data
Tabel berikut menjelaskan bagaimana DTS memigrasikan skema dan data dari database PostgreSQL sumber. Proses ini mencegah kegagalan migrasi data yang disebabkan oleh dependensi antar objek.
Untuk informasi lebih lanjut tentang migrasi skema, migrasi data penuh, dan migrasi data inkremental, lihat Istilah.
Langkah | Deskripsi |
1. Migrasi Skema | DTS memigrasikan skema tabel, tampilan, urutan, fungsi, tipe yang ditentukan pengguna, aturan, domain, operasi, dan agregat ke database tujuan. Catatan DTS tidak memigrasikan plugin. Selain itu, DTS tidak memigrasikan fungsi yang ditulis dalam bahasa pemrograman C. |
2. Migrasi Data Penuh | DTS memigrasikan semua data historis objek ke database tujuan. |
3. Migrasi Skema | DTS memigrasikan skema pemicu dan kunci asing ke database tujuan. |
4. Migrasi Data Inkremental | DTS memigrasikan data inkremental objek ke database tujuan. Migrasi data inkremental memastikan kontinuitas layanan aplikasi yang dikelola sendiri. Catatan
|
Persiapan
Masuk ke server tempat database PostgreSQL yang dikelola sendiri berada.
Atur nilai parameter
wal_leveldalam file konfigurasi postgresql.conf menjadilogical.
CatatanLewati langkah ini jika Anda tidak perlu melakukan migrasi data inkremental.
Tambahkan blok CIDR server DTS ke file konfigurasi pg_hba.conf database PostgreSQL yang dikelola sendiri. Tambahkan hanya blok CIDR server DTS yang berada di wilayah yang sama dengan database tujuan. Untuk informasi lebih lanjut, lihat Tambahkan Blok CIDR Server DTS.
CatatanUntuk informasi lebih lanjut, lihat File pg_hba.conf. Lewati langkah ini jika Anda telah mengatur alamat IP di file pg_hba.conf menjadi
0.0.0.0/0.
Opsional: Buat pemicu dan fungsi di database sumber untuk mendapatkan informasi DDL. Untuk informasi lebih lanjut, lihat Gunakan Pemicu dan Fungsi untuk Mengimplementasikan Migrasi DDL Inkremental untuk Database PostgreSQL.
CatatanLewati langkah ini jika Anda tidak perlu memigrasikan operasi DDL.
Prosedur
Masuk ke Konsol DTS.
CatatanJika Anda dialihkan ke Konsol Manajemen Data (DMS), Anda dapat mengklik ikon
di
untuk kembali ke versi sebelumnya Konsol DTS.Di panel navigasi sisi kiri, klik Data Migration.
Di bagian atas halaman Migration Tasks, pilih wilayah tempat kluster tujuan berada.
Di pojok kanan atas halaman, klik Create Migration Task.
Konfigurasikan database sumber dan tujuan.

Bagian
Parameter
Deskripsi
N/A
Nama Tugas
Nama tugas yang dihasilkan DTS secara otomatis. Kami menyarankan Anda menentukan nama deskriptif yang memudahkan identifikasi tugas. Anda tidak perlu menentukan nama tugas yang unik.
Database Sumber
Tipe Instance
Metode akses database sumber. Dalam contoh ini, User-Created Database with Public IP Address dipilih.
CatatanJika database mandiri sumber adalah tipe lain, Anda harus menyiapkan lingkungan yang diperlukan untuk database tersebut. Untuk informasi lebih lanjut, lihat Ikhtisar Persiapan.
Wilayah Instance
Jika Anda memilih User-Created Database with Public IP Address sebagai tipe instance, Anda tidak perlu mengatur parameter Instance Region.
Tipe Database
Tipe database sumber. Pilih PostgreSQL.
Nama Host atau Alamat IP
Titik akhir yang digunakan untuk terhubung ke database PostgreSQL yang dikelola sendiri. Dalam contoh ini, masukkan alamat IP publik.
Nomor Port
Nomor port layanan database PostgreSQL yang dikelola sendiri. Port tersebut harus dapat diakses melalui Internet.
Nama Database
Nama database PostgreSQL yang dikelola sendiri.
Akun Database
Akun yang digunakan untuk masuk ke database PostgreSQL yang dikelola sendiri. Untuk informasi tentang izin yang diperlukan untuk akun tersebut, lihat Izin yang diperlukan untuk akun database.
Kata Sandi Database
Kata sandi akun database.
CatatanSetelah Anda menentukan informasi tentang database sumber, Anda dapat mengklik Test Connectivity di sebelah Database Password untuk memeriksa apakah informasi tersebut valid. Jika informasi tersebut valid, pesan Passed akan muncul. Jika pesan Failed muncul, klik Check di sebelah Failed. Kemudian, ubah informasi berdasarkan hasil pemeriksaan.
Database Tujuan
Tipe Instance
Tipe database tujuan. Pilih RDS Instance.
Wilayah Instance
Wilayah tempat instance ApsaraDB RDS for PostgreSQL tujuan berada.
ID Instance RDS
ID instance ApsaraDB RDS for PostgreSQL tujuan.
Nama Database
Nama database tujuan di instance ApsaraDB RDS for PostgreSQL. Nama tersebut dapat berbeda dari nama database sumber.
CatatanDatabase tujuan harus ada di instance ApsaraDB RDS for PostgreSQL. Jika database tujuan tidak ada, buatlah database. Untuk informasi lebih lanjut, lihat Buat database.
Akun Database
Akun database instance ApsaraDB RDS for PostgreSQL tujuan. Untuk informasi tentang izin yang diperlukan untuk akun tersebut, lihat Izin yang diperlukan untuk akun database.
Kata Sandi Database
Kata sandi akun database.
CatatanSetelah Anda menentukan informasi tentang instance RDS, Anda dapat mengklik Test Connectivity di sebelah Database Password untuk memeriksa apakah informasi tersebut valid. Jika informasi tersebut valid, pesan Passed akan muncul. Jika pesan Failed muncul, klik Check di sebelah Failed. Kemudian, ubah informasi berdasarkan hasil pemeriksaan.
Di pojok kanan bawah halaman, klik Set Whitelist and Next.
PeringatanJika blok CIDR server DTS secara otomatis atau manual ditambahkan ke daftar putih database atau instance, atau ke aturan grup keamanan ECS, risiko keamanan mungkin timbul. Oleh karena itu, sebelum Anda menggunakan DTS untuk memigrasikan data, Anda harus memahami dan mengakui potensi risiko serta mengambil tindakan pencegahan, termasuk tetapi tidak terbatas pada langkah-langkah berikut: tingkatkan keamanan nama pengguna dan kata sandi Anda, batasi port yang diekspos, autentikasi panggilan API, periksa daftar putih atau aturan grup keamanan ECS secara berkala dan larang blok CIDR yang tidak sah, atau hubungkan database ke DTS dengan menggunakan Express Connect, VPN Gateway, atau Smart Access Gateway.
Pilih jenis migrasi dan objek yang ingin Anda migrasikan.

Pengaturan
Deskripsi
Pilih jenis migrasi
Untuk melakukan hanya migrasi data penuh, pilih Schema Migration dan Full Data Migration.
Untuk memastikan kontinuitas layanan selama migrasi data, pilih Schema Migration, Full Data Migration, dan Incremental Data Migration. Dalam contoh ini, pilih ketiga jenis migrasi tersebut.
CatatanJika Incremental Data Migration tidak dipilih, jangan tulis data ke database sumber selama migrasi data penuh. Hal ini memastikan konsistensi data antara database sumber dan tujuan.
Pilih objek yang ingin Anda migrasikan
Pilih satu atau beberapa objek dari bagian Source Objects dan klik ikon
untuk memindahkan objek ke bagian Selected Objects.CatatanAnda dapat memilih kolom, tabel, atau skema sebagai objek yang akan dimigrasikan.
Secara default, nama objek tetap sama seperti di database PostgreSQL yang dikelola sendiri setelah objek dimigrasikan ke instance RDS. Anda dapat menggunakan fitur pemetaan nama objek untuk mengganti nama objek yang telah dimigrasikan ke instance RDS tujuan. Untuk informasi lebih lanjut, lihat Pemetaan Nama Objek.
Jika Anda menggunakan fitur pemetaan nama objek untuk mengganti nama objek, objek lain yang bergantung pada objek tersebut mungkin gagal dimigrasikan.
Tentukan apakah akan mengganti nama objek
Anda dapat menggunakan fitur pemetaan nama objek untuk mengganti nama objek yang dimigrasikan ke database tujuan. Untuk informasi lebih lanjut, lihat Pemetaan Nama Objek.
Tentukan rentang waktu percobaan ulang untuk koneksi gagal ke database sumber atau tujuan
Secara default, jika DTS gagal terhubung ke database sumber dan tujuan, DTS mencoba lagi dalam 12 jam berikutnya. Anda dapat menentukan rentang waktu percobaan ulang berdasarkan kebutuhan bisnis Anda. Jika DTS tersambung kembali ke database sumber dan tujuan dalam rentang waktu yang ditentukan, DTS melanjutkan tugas migrasi data. Jika tidak, tugas migrasi data gagal.
CatatanDalam rentang waktu DTS mencoba menyambung kembali ke database sumber dan tujuan, Anda akan dikenakan biaya untuk instance DTS. Kami menyarankan Anda menentukan rentang waktu percobaan ulang berdasarkan kebutuhan bisnis Anda. Anda juga dapat melepaskan instance DTS sesegera mungkin setelah database sumber dan tujuan dilepaskan.
Di pojok kanan bawah halaman, klik Precheck.
CatatanSebelum Anda dapat memulai tugas migrasi data, DTS melakukan pemeriksaan awal. Anda hanya dapat memulai tugas migrasi data setelah tugas tersebut lulus pemeriksaan awal.
Jika tugas gagal lulus pemeriksaan awal, Anda dapat mengklik ikon
di sebelah setiap item yang gagal untuk melihat detailnya.Anda dapat menyelesaikan masalah berdasarkan penyebabnya dan menjalankan pemeriksaan awal lagi.
Jika Anda tidak perlu menyelesaikan masalah, Anda dapat mengabaikan item yang gagal dan menjalankan pemeriksaan awal lagi.
Setelah tugas lulus pemeriksaan awal, klik Next.
Di kotak dialog Confirm Settings, tentukan parameter Channel Specification dan pilih Data Transmission Service (Pay-As-You-Go) Service Terms.
Klik Buy and Start untuk memulai tugas migrasi data.
Hentikan tugas migrasi data
Kami menyarankan Anda menyiapkan solusi rollback untuk memigrasikan data inkremental dari database tujuan ke database sumber secara real-time. Ini memungkinkan Anda meminimalkan dampak negatif dari pemindahan beban kerja ke database tujuan. Untuk informasi lebih lanjut, lihat Pindahkan Beban Kerja ke Database Tujuan. Jika Anda tidak perlu memindahkan beban kerja, Anda dapat melakukan langkah-langkah berikut untuk menghentikan tugas migrasi data.
- Migrasi Data Penuh
Jangan hentikan tugas secara manual selama migrasi data penuh. Jika tidak, sistem mungkin gagal memigrasikan semua data. Tunggu hingga tugas migrasi berakhir secara otomatis.
- Migrasi Data Inkremental
Tugas tidak berakhir secara otomatis selama migrasi data inkremental. Anda harus menghentikan tugas migrasi secara manual.
- Tunggu hingga bilah kemajuan tugas menunjukkan Incremental Data Migration dan The migration task is not delayed. Kemudian, hentikan penulisan data ke database sumber selama beberapa menit. Dalam beberapa kasus, bilah kemajuan menunjukkan waktu penundaan incremental data migration.
- Setelah status incremental data migration berubah menjadi The migration task is not delayed, hentikan tugas migrasi secara manual.
