Penyelesaian Konflik dalam Replikasi Logis
Pelajari cara konflik muncul dalam replikasi logis serta strategi yang ditawarkan PostgreSQL untuk mendeteksi dan menyelesaikannya.
Penyelesaian Konflik dalam Replikasi Logis adalah pelajaran Advanced PostgreSQL: Indexing, Partitioning, Replication gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Advanced PostgreSQL: Indexing, Partitioning, Replication, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Advanced PostgreSQL: Indexing, Partitioning, Replication mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
Why Conflicts Happen
Unlike physical replication, logical replication applies changes as SQL-level operations on the subscriber. If local data diverges from the incoming change, a conflict occurs and apply stops.
Common Conflict Types
Typical conflicts include:
- Unique violation — a row with the same key already exists
- Missing row — an UPDATE or DELETE targets a row not present on the subscriber
- Type or constraint mismatch
Apply Worker Stalls
When a conflict hits, the subscription's apply worker errors out and retries the same transaction repeatedly, so replication lag grows until you intervene.
Finding the Conflict
The PostgreSQL log records the failing transaction and its LSN. You can also inspect subscription stats.
SELECT subname, last_error_time, last_error_message
FROM pg_stat_subscription_stats;Resolving by Fixing Data
One option is to make the local data consistent so the change can apply: delete the conflicting row, then let replication retry.
DELETE FROM products WHERE id = 42;
-- the incoming INSERT for id 42 now appliesSkipping a Transaction
If the offending change should be ignored, skip it by LSN. Use this carefully because it abandons that data.
ALTER SUBSCRIPTION my_sub SKIP (lsn = '0/14A0B30');Disabling on Error
Set the subscription to disable itself on error so it stops retrying and waits for an operator.
ALTER SUBSCRIPTION my_sub SET (disable_on_error = true);Preventing Conflicts
Reduce conflicts by:
- Using a single writer per logical dataset
- Avoiding overlapping primary key ranges across nodes
- Ensuring the subscriber schema matches the publisher
Replica Identity Matters
UPDATE and DELETE need a replica identity to locate the target row. A table without a primary key needs REPLICA IDENTITY FULL or replication will fail.
ALTER TABLE logs REPLICA IDENTITY FULL;Monitoring Lag
Watch pg_replication_slots on the publisher; a stalled subscriber holds back WAL and grows the slot, risking disk exhaustion.
SELECT slot_name, active, pg_size_pretty(
pg_wal_lsn_diff(pg_current_wal_lsn(), confirmed_flush_lsn))
FROM pg_replication_slots;Document a Runbook
Because conflicts need manual judgement, teams keep a runbook: how to identify, whether to fix-data or skip, and how to verify consistency afterward.
Quick Check
An incoming INSERT hits a unique violation on the subscriber. What is the safest resolution?
Recap
You learned how logical replication conflicts arise, how to find them via stats and logs, and how to resolve them by fixing data, skipping an LSN, or using disable_on_error. Proper replica identity and single-writer design prevent most conflicts.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Penyelesaian Konflik dalam Replikasi Logis” gratis?
Ya — teks lengkap “Penyelesaian Konflik dalam Replikasi Logis” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Advanced PostgreSQL: Indexing, Partitioning, Replication, upgrade ke CoddyKit PRO. Kursus Advanced PostgreSQL: Indexing, Partitioning, Replication mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Penyelesaian Konflik dalam Replikasi Logis”?
Pelajari cara konflik muncul dalam replikasi logis serta strategi yang ditawarkan PostgreSQL untuk mendeteksi dan menyelesaikannya. Kamu berlatih Advanced PostgreSQL: Indexing, Partitioning, Replication dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Advanced PostgreSQL: Indexing, Partitioning, Replication?
Tidak diperlukan pengalaman sebelumnya. Advanced PostgreSQL: Indexing, Partitioning, Replication di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Penyelesaian Konflik dalam Replikasi Logis” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Advanced PostgreSQL: Indexing, Partitioning, Replication ini?
Ya. Setiap pelajaran Advanced PostgreSQL: Indexing, Partitioning, Replication menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Dasar-Dasar Replikasi Logis
- Mengonfigurasi Publikasi
- Mengelola Subscription
- Penyelesaian Konflik dalam Replikasi Logis