DTS mendukung sinkronisasi data dua arah secara real-time antara dua database PostgreSQL, seperti ApsaraDB RDS for PostgreSQL dan Database PostgreSQL yang dikelola sendiri. Fitur ini mendukung kasus penggunaan seperti redundansi geo-aktif (arsitektur berbasis sel) dan pemulihan bencana geo. Topik ini menggunakan sinkronisasi dua arah antar instans ApsaraDB RDS for PostgreSQL sebagai contoh untuk memandu Anda melalui langkah-langkah konfigurasi. Proses konfigurasi untuk sumber data lainnya serupa.
Prasyarat
-
Instans ApsaraDB RDS for PostgreSQL sumber dan tujuan harus telah dibuat. Untuk petunjuknya, lihat Buat instans ApsaraDB RDS for PostgreSQL.
CatatanUntuk versi database sumber dan tujuan yang didukung, lihat ikhtisar solusi sinkronisasi.
-
Atur parameter
wal_levelkelogicaluntuk instans ApsaraDB RDS for PostgreSQL sumber dan tujuan. Untuk petunjuknya, lihat Atur parameter instans.
Batasan
Jenis | Deskripsi |
Batasan database sumber dan tujuan |
|
Batasan lainnya |
|
Kasus khusus |
|
Penagihan
Jenis sinkronisasi | Harga |
Sinkronisasi skema dan sinkronisasi data penuh | Gratis. |
Sinkronisasi data inkremental | Dikenai biaya. Untuk informasi lebih lanjut, lihat Ikhtisar penagihan. |
Topologi sinkronisasi dua arah
DTS hanya mendukung sinkronisasi data dua arah antara dua database PostgreSQL.
Detect konflik yang didukung
Untuk memastikan konsistensi data, pastikan catatan data dengan primary key, business primary key, atau unique key yang sama hanya diperbarui di salah satu instans database dalam sinkronisasi dua arah. Jika catatan data diperbarui di kedua instans database, sistem DTS akan menerapkan kebijakan resolusi konflik yang dikonfigurasi dalam tugas.
DTS memeriksa dan memperbaiki konflik untuk memaksimalkan stabilitas tugas sinkronisasi dua arah. DTS dapat mendeteksi jenis konflik berikut:
-
Konflik keunikan yang disebabkan oleh operasi INSERT
Dalam sinkronisasi dua arah, jika catatan dengan primary key yang sama dimasukkan ke kedua instans database secara bersamaan (atau berurutan dekat), konflik kendala keunikan akan dipicu. Saat pernyataan INSERT disinkronkan ke instans pasangan, operasi tersebut akan gagal karena catatan dengan nilai primary key yang sama sudah ada.
-
Catatan yang tidak cocok dalam operasi UPDATE
-
Jika catatan yang akan diperbarui tidak ada di instans tujuan, DTS mengubah operasi UPDATE menjadi operasi INSERT. Namun, konflik keunikan dapat terjadi.
-
Catatan yang akan diperbarui oleh operasi UPDATE menyebabkan konflik primary key atau unique key.
-
-
Catatan yang tidak ada untuk dihapus
Catatan yang akan dihapus tidak ada di instans tujuan. Dalam hal ini, DTS mengabaikan operasi DELETE terlepas dari kebijakan resolusi konflik yang Anda tentukan.
-
Karena perbedaan waktu dan latensi, DTS tidak dapat menjamin pencegahan konflik 100%. Untuk memastikan konsistensi, perbarui catatan dengan primary key atau unique key yang sama hanya di satu instans database dalam satu waktu.
-
DTS menyediakan berbagai strategi resolusi konflik untuk konflik data tersebut, yang dapat Anda pilih saat mengonfigurasi sinkronisasi data dua arah.
Objek yang didukung
-
skema dan tabel
CatatanIni mencakup primary key, unique key, foreign key, DATATYPE (tipe data bawaan), dan kendala default.
-
view, procedure (untuk PostgreSQL 11 atau lebih baru), function, rule, sequence, extension, trigger, aggregate, index, operator, dan domain
Operasi SQL yang didukung
|
Jenis operasi |
Pernyataan SQL |
|
DML |
|
|
DDL |
|
Hanya tugas maju (dari database sumber ke database tujuan) yang mendukung sinkronisasi DDL. Tugas balik (dari database tujuan ke database sumber) tidak mendukung sinkronisasi DDL dan secara otomatis menyaring operasi DDL.
Prosedur
-
Beli instans sinkronisasi data dua arah. Untuk informasi lebih lanjut, lihat Beli tugas sinkronisasi data.
PentingDi halaman pembelian, pilih PostgreSQL untuk PostgreSQL dan PostgreSQL, serta pilih Two-way Synchronization untuk Two-way Synchronization.
Login ke halaman Tugas Sinkronisasi DTS baru.
CatatanAnda juga dapat login ke Data Management (DMS). Di bilah menu atas, pilih Data + AI. Di panel navigasi kiri, pilih .
-
Di pojok kiri atas halaman, pilih wilayah tempat instans tujuan berada.
-
Temukan instans sinkronisasi data yang telah Anda beli dan klik Configure Task untuk tugas sinkronisasi pertamanya.
-
Konfigurasikan database sumber dan tujuan.
PeringatanSetelah memilih instans sumber dan tujuan, baca dengan cermat batasan yang ditampilkan di bagian atas halaman. Jika Anda tidak mengikuti batasan tersebut, tugas dapat gagal atau terjadi ketidakkonsistenan data.
Kategori
Parameter
Deskripsi
N/A
Task Name
DTS secara otomatis menghasilkan nama tugas. Kami sarankan Anda menentukan nama deskriptif untuk memudahkan identifikasi. Nama tersebut tidak harus unik.
Source Database
Database Type
Pilih PostgreSQL.
Connection Type
Pilih Alibaba Cloud Instance.
Instance Region
Wilayah instans sumber yang Anda pilih saat pembelian. Parameter ini tidak dapat diubah.
Instance ID
Pilih ID instans ApsaraDB RDS for PostgreSQL sumber.
Database Name
Masukkan nama database yang berisi objek yang akan disinkronkan di instans ApsaraDB RDS for PostgreSQL sumber.
Database Account
Masukkan akun berhak tinggi untuk instans ApsaraDB RDS for PostgreSQL sumber. Akun tersebut harus merupakan pemilik database yang dipilih. Untuk informasi lebih lanjut tentang cara membuat akun dan memberikan izin, lihat Buat akun dan Buat database.
Database Password
Masukkan password yang sesuai dengan akun database.
Encryption
Pilih metode koneksi. Dalam contoh ini, Non-encrypted dipilih.
Jika Anda perlu menghubungkan ke database menggunakan enkripsi SSL, pilih SSL-encrypted, lalu unggah CA Certificate, Client Certificate, dan Private Key of Client Certificate sesuai kebutuhan. Lalu, masukkan Private Key Password of Client Certificate.
Catatan-
Jika Anda memilih SSL-encrypted untuk database PostgreSQL yang dikelola sendiri, Anda harus mengunggah CA Certificate.
-
Jika Anda perlu menggunakan sertifikat klien, Anda harus mengunggah Client Certificate dan Private Key of Client Certificate, lalu masukkan Private Key Password of Client Certificate.
-
Untuk informasi tentang fitur enkripsi SSL untuk instans RDS for PostgreSQL, lihat Enkripsi koneksi SSL.
Destination Database
Database Type
Pilih PostgreSQL.
Connection Type
Pilih Alibaba Cloud Instance.
Instance Region
Wilayah instans tujuan yang Anda pilih saat pembelian. Parameter ini tidak dapat diubah.
Instance ID
Pilih ID instans ApsaraDB RDS for PostgreSQL tujuan.
Database Name
Masukkan nama database yang berisi objek yang akan disinkronkan di instans ApsaraDB RDS for PostgreSQL tujuan.
Database Account
Masukkan akun berhak tinggi untuk instans ApsaraDB RDS for PostgreSQL tujuan. Akun tersebut harus merupakan pemilik database yang dipilih. Untuk informasi lebih lanjut tentang cara membuat akun dan memberikan izin, lihat Buat akun dan Buat database.
Database Password
Masukkan password yang sesuai dengan akun database.
Encryption
Pilih metode koneksi. Dalam contoh ini, Non-encrypted dipilih.
Jika Anda perlu menghubungkan ke database menggunakan enkripsi SSL, pilih SSL-encrypted, lalu unggah CA Certificate, Client Certificate, dan Private Key of Client Certificate sesuai kebutuhan. Lalu, masukkan Private Key Password of Client Certificate.
Catatan-
Jika Anda memilih SSL-encrypted untuk database PostgreSQL yang dikelola sendiri, Anda harus mengunggah CA Certificate.
-
Jika Anda perlu menggunakan sertifikat klien, Anda harus mengunggah Client Certificate dan Private Key of Client Certificate, lalu masukkan Private Key Password of Client Certificate.
-
Untuk informasi tentang fitur enkripsi SSL untuk instans RDS for PostgreSQL, lihat Enkripsi koneksi SSL.
-
Setelah menyelesaikan konfigurasi, klik Test Connectivity and Proceed di bagian bawah halaman.
CatatanPastikan blok CIDR alamat IP server DTS telah ditambahkan ke pengaturan keamanan database sumber dan tujuan untuk mengizinkan akses dari server DTS. Hal ini dapat dilakukan secara otomatis atau manual. Untuk informasi lebih lanjut, lihat Tambahkan blok CIDR alamat IP server DTS ke daftar putih.
Jika database sumber atau tujuan adalah database yang dikelola sendiri (di mana Access Method bukan Alibaba Cloud Instance), Anda juga harus mengklik Test Connectivity di kotak dialog CIDR Blocks of DTS Servers.
-
Konfigurasikan objek tugas.
-
Di halaman Configure Objects, konfigurasikan objek yang akan disinkronkan.
Parameter
Deskripsi
Synchronization Types
Incremental Data Synchronization dipilih. Secara default, Anda juga harus memilih Schema Synchronization dan Full Data Synchronization. Setelah pemeriksaan awal selesai, DTS melakukan sinkronisasi data penuh objek yang dipilih dari instans sumber ke klaster tujuan. Hal ini berfungsi sebagai data garis dasar untuk sinkronisasi data inkremental berikutnya.
CatatanJika Anda memilih Schema Synchronization, DTS menyinkronkan skema tabel yang akan disinkronkan, termasuk foreign keys, dari database sumber ke database tujuan.
Processing Mode of Conflicting Tables
Precheck and Report Errors: Memeriksa apakah tabel dengan nama yang sama ada di database tujuan. Jika tabel dengan nama yang sama tidak ada, pemeriksaan awal lolos. Jika tabel dengan nama yang sama ada, pemeriksaan awal gagal dan tugas sinkronisasi data tidak dimulai.
CatatanJika 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 lebih lanjut, lihat Petakan nama tabel dan kolom.
Ignore Errors and Proceed: Melewati pemeriksaan nama tabel duplikat di database tujuan.
PeringatanMemilih Ignore Errors and Proceed dapat menyebabkan ketidakkonsistenan data dan membahayakan bisnis Anda. Misalnya:
Jika skema tabel sama dan catatan di database tujuan memiliki nilai primary key atau unique key yang sama dengan catatan di database sumber:
Selama sinkronisasi penuh, DTS mempertahankan catatan di klaster 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 dapat gagal. Hal ini dapat mengakibatkan hanya data kolom parsial yang disinkronkan atau kegagalan sinkronisasi total. Lakukan dengan hati-hati.
Synchronization Topology
Pilih Two-way Synchronization.
Exclude DDL Operations
-
Yes: Operasi DDL tidak disinkronkan.
-
No: Operasi DDL disinkronkan.
PentingUntuk memastikan stabilitas tautan sinkronisasi dua arah, Anda dapat memilih apakah akan menyinkronkan operasi DDL hanya untuk tugas sinkronisasi maju (dari database sumber ke database tujuan). Untuk tugas sinkronisasi balik (dari database tujuan ke database sumber), operasi DDL secara otomatis disaring.
Conflict Resolution Policy
Jika Anda menghadapi jenis konflik tersebut, pilih kebijakan resolusi konflik berdasarkan kebutuhan bisnis Anda.
TaskFailed (If a conflict occurs, an error is reported and the task is stopped)
Jika terjadi konflik data selama sinkronisasi, tugas melaporkan kesalahan dan berhenti. Tugas masuk ke status Gagal dan memerlukan intervensi manual.
Ignore (If a conflict occurs, the conflicting record in the destination instance is used)
Jika terjadi konflik data selama sinkronisasi, pernyataan sinkronisasi saat ini dilewati dan proses berlanjut. Catatan yang bertentangan di database tujuan dipertahankan.
Overwrite (If a conflict occurs, the conflicting record in the destination instance is overwritten)
Jika terjadi konflik data selama sinkronisasi, catatan yang bertentangan di database tujuan ditimpa.
CatatanJika tugas sinkronisasi mengalami latensi setelah dijeda atau dimulai ulang, kebijakan ini tidak berlaku selama periode latensi. Data di database tujuan ditimpa secara default.
Capitalization of Object Names in Destination Instance
Anda dapat mengonfigurasi kebijakan sensitivitas huruf besar/kecil untuk nama objek database, tabel, dan kolom yang disinkronkan ke instans tujuan. Secara default, DTS default policy dipilih. Anda juga dapat memilih untuk menggunakan kebijakan default database sumber dan tujuan. Untuk informasi lebih lanjut, lihat Kebijakan sensitivitas huruf besar/kecil untuk nama objek tujuan.
Source Objects
Di kotak Source Objects, klik objek yang akan disinkronkan, lalu klik
untuk memindahkannya ke kotak Selected Objects.Catatan-
Anda dapat memilih objek untuk disinkronkan pada tingkat skema atau tabel. Jika Anda memilih tabel sebagai objek sinkronisasi, objek lain seperti view, trigger, dan stored procedure tidak disinkronkan ke database target.
-
Jika tabel yang akan disinkronkan berisi bidang bertipe SERIAL dan Synchronization Types dipilih untuk Schema Synchronization, kami sarankan juga memilih Sequence atau seluruh skema.
Selected Objects
Untuk mengganti nama satu objek sinkronisasi di instans tujuan, klik kanan objek tersebut di kotak Selected Objects. Untuk informasi selengkapnya tentang penggantian nama objek, lihat Memetakan satu database, tabel, atau kolom.
Untuk mengubah nama beberapa objek sinkronisasi di instans tujuan secara batch, klik Batch Edit di pojok kanan atas kotak Selected Objects. Untuk informasi lebih lanjut, lihat Petakan database, tabel, dan kolom secara batch.
Catatan-
Untuk memilih operasi SQL yang akan disinkronkan untuk skema atau tabel tertentu, klik kanan objek di kotak Selected Objects. Di kotak dialog yang muncul, pilih operasi SQL yang diinginkan.
-
Untuk menentukan kondisi WHERE untuk memfilter data, klik kanan tabel di kotak Selected Objects. Di kotak dialog yang muncul, tentukan kondisi filter. Untuk informasi lebih lanjut, lihat Gunakan kondisi SQL untuk memfilter data.
-
Jika Anda menggunakan fitur pemetaan nama objek untuk mengganti nama objek, objek lain yang bergantung pada objek yang diganti nama tersebut mungkin gagal disinkronkan.
-
Klik Next: Advanced Settings untuk mengonfigurasi parameter lanjutan.
Parameter
Deskripsi
Dedicated Cluster for Task Scheduling
Secara default, DTS menjadwalkan tugas pada klaster bersama, dan Anda tidak perlu memilih klaster. Untuk performa yang lebih stabil, Anda dapat membeli klaster khusus untuk menjalankan tugas sinkronisasi DTS. Untuk informasi lebih lanjut, lihat Apa itu klaster khusus DTS?.
Retry Time for Failed Connections
Setelah tugas sinkronisasi dimulai, jika koneksi ke database sumber atau tujuan gagal, DTS melaporkan kesalahan dan segera mulai mencoba menghubungkan kembali. Durasi percobaan ulang default adalah 720 menit. Anda juga dapat menentukan durasi percobaan ulang kustom dari 10 hingga 1.440 menit. Kami sarankan Anda mengatur durasi minimal 30 menit. Jika DTS berhasil terhubung kembali ke database dalam durasi yang ditentukan, tugas sinkronisasi secara otomatis dilanjutkan. Jika tidak, tugas gagal.
CatatanJika Anda memiliki beberapa instans DTS (misalnya, Instans A dan Instans B) yang berbagi sumber atau tujuan yang sama, dan Anda mengatur waktu percobaan ulang jaringan menjadi 30 menit untuk Instans A dan 60 menit untuk Instans B, durasi yang lebih pendek yaitu 30 menit digunakan untuk keduanya.
Karena DTS mengenakan biaya untuk waktu proses tugas selama periode percobaan ulang koneksi, kami sarankan Anda menyesuaikan durasi percobaan ulang berdasarkan kebutuhan bisnis Anda atau segera merilis instans DTS setelah instans database sumber dan tujuan dirilis.
Retry Time for Other Issues
Setelah tugas sinkronisasi dimulai, jika terjadi masalah non-konektivitas lainnya pada database sumber atau tujuan (seperti pengecualian eksekusi DDL atau DML), DTS melaporkan kesalahan dan segera mulai melakukan operasi percobaan ulang berkelanjutan. Durasi percobaan ulang default adalah 10 menit. Anda juga dapat menyesuaikan durasi percobaan ulang dalam rentang 1 hingga 1.440 menit. Kami sarankan Anda mengaturnya minimal 10 menit. Jika operasi terkait berhasil dalam durasi percobaan ulang yang ditetapkan, tugas sinkronisasi secara otomatis dilanjutkan. Jika tidak, tugas gagal.
PentingNilai Retry Time for Other Issues harus lebih kecil daripada Retry Time for Failed Connections.
Enable Throttling for Full Data Synchronization
Selama tahap sinkronisasi penuh, DTS mengonsumsi sumber daya baca dan tulis dari database sumber dan tujuan, yang dapat meningkatkan beban database. Untuk mengurangi beban pada database sumber dan tujuan, Anda dapat mengatur batas laju untuk tugas sinkronisasi penuh dengan mengonfigurasi parameter Queries per second (QPS) to the source database, RPS of Full Data Migration, dan Data migration speed for full migration (MB/s).
CatatanItem konfigurasi ini hanya tersedia saat Synchronization Types diatur ke Full Data Synchronization.
Anda juga dapat menyesuaikan laju sinkronisasi penuh setelah instans sinkronisasi sedang berjalan.
Enable Throttling for Incremental Data Synchronization
Anda juga dapat mengatur batas laju untuk tugas sinkronisasi inkremental. Untuk mengurangi tekanan pada database tujuan, atur RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s).
Environment Tag
Anda dapat memilih tag lingkungan untuk mengidentifikasi instans berdasarkan kebutuhan bisnis Anda. Dalam contoh ini, Anda tidak perlu memilih tag.
Configure ETL
Pilih apakah akan mengaktifkan fitur ekstrak, transformasi, dan muat (ETL). Untuk informasi lebih lanjut, lihat Apa itu ETL? Nilai yang valid:
-
Yes: Mengaktifkan fitur ETL. Masukkan pernyataan pemrosesan data di editor kode. Untuk informasi lebih lanjut, lihat Konfigurasikan ETL dalam tugas migrasi data atau sinkronisasi data.
-
No: Menonaktifkan fitur ETL.
Monitoring and Alerting
Tentukan apakah akan mengonfigurasi peringatan. Jika sinkronisasi gagal atau latensi melebihi ambang batas yang ditentukan, notifikasi dikirim ke kontak peringatan.
No: Tidak ada peringatan yang dikonfigurasi.
Yes: Konfigurasikan peringatan dengan mengatur ambang batas peringatan dan menentukan notifikasi peringatan. Untuk informasi lebih lanjut, lihat Konfigurasikan pemantauan peringatan selama konfigurasi tugas.
Klik Next: Data Validation untuk mengonfigurasi tugas validasi data.
Jika Anda ingin menggunakan fitur validasi data, lihat Konfigurasikan validasi data untuk petunjuk konfigurasi.
-
Simpan tugas dan jalankan pemeriksaan awal.
Untuk melihat parameter API untuk mengonfigurasi instans ini, arahkan kursor ke tombol Next: Save Task Settings and Precheck dan klik Preview OpenAPI parameters di gelembung.
Jika Anda telah selesai melihat parameter API, klik Next: Save Task Settings and Precheck di bagian bawah halaman.
CatatanSebelum pekerjaan sinkronisasi dimulai, DTS menjalankan pemeriksaan awal. Pekerjaan hanya dapat dimulai setelah semua item pemeriksaan awal lolos.
Jika pemeriksaan awal gagal, klik View Details untuk item yang gagal. Perbaiki masalah sesuai petunjuk, lalu jalankan kembali pemeriksaan awal.
Jika pemeriksaan awal mengembalikan peringatan:
Jika item pemeriksaan gagal dan tidak dapat diabaikan, klik View Details di sebelah item tersebut. Ikuti petunjuk untuk memperbaiki masalah, lalu jalankan kembali pemeriksaan awal.
Untuk item pemeriksaan yang dapat diabaikan, Anda dapat mengklik Confirm Alert Details, Ignore, OK, dan Precheck Again secara berurutan untuk melewati peringatan dan menjalankan kembali pemeriksaan awal. Jika Anda memilih untuk menyembunyikan item peringatan, hal ini dapat menyebabkan masalah seperti ketidakkonsistenan data dan menimbulkan risiko bagi bisnis Anda.
-
Saat Success Rate mencapai 100%, klik Back.
-
Konfigurasikan tugas sinkronisasi balik.
-
Tunggu hingga Status tugas sinkronisasi maju berubah menjadi Running.
-
Temukan tugas sinkronisasi balik dan klik Configure Task.
-
Konfigurasikan tugas sinkronisasi balik dengan mengikuti Langkah 5 hingga Langkah 9.
Penting-
Saat mengonfigurasi tugas sinkronisasi balik, pastikan instans sumber dan tujuan ditukar: tujuan tugas maju menjadi sumber tugas balik, dan sebaliknya. Pastikan juga semua informasi instans lainnya, seperti nama database, akun, dan password, benar dan konsisten.
-
Instance Region untuk database sumber dan tujuan tugas sinkronisasi balik tidak dapat diubah. Lebih sedikit parameter yang diperlukan dibandingkan tugas sinkronisasi maju. Konfigurasikan parameter yang ditampilkan di konsol.
-
Pengaturan Processing Mode of Conflicting Tables untuk tugas sinkronisasi balik tidak memeriksa tabel yang disinkronkan ke instans tujuan oleh tugas sinkronisasi maju.
-
Tugas sinkronisasi balik tidak mendukung penyinkronan objek yang ditentukan dalam daftar Selected Objects tugas sinkronisasi maju.
-
Kami sarankan Anda tidak menggunakan fitur pemetaan nama objek saat mengonfigurasi tugas sinkronisasi balik. Jika tidak, ketidakkonsistenan data dapat terjadi.
-
-
-
Setelah tugas sinkronisasi balik dikonfigurasi, tunggu hingga Status kedua tugas berubah menjadi Running. Sinkronisasi data dua arah telah sepenuhnya dikonfigurasi.
