0Pricing
Advanced PostgreSQL: Indexing, Partitioning, Replication · Pelajaran

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 applies

Skipping 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

  1. Dasar-Dasar Replikasi Logis
  2. Mengonfigurasi Publikasi
  3. Mengelola Subscription
  4. Penyelesaian Konflik dalam Replikasi Logis
← Kembali ke Advanced PostgreSQL: Indexing, Partitioning, Replication