Replikasi Logis untuk Sharding
Gunakan replikasi logis PUBLICATION/SUBSCRIPTION untuk memindahkan tabel antarklaster dan mendukung peningkatan versi mayor
Replikasi Logis untuk Sharding adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 2 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 SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.
Replikasi Logis vs Fisik
Fisik mereplikasi BYTES dari WAL—seluruh klaster dengan versi yang sama. Logis mereplikasi ROWS—tabel yang dipilih, bahkan mungkin lintas versi PG:
- Berlangganan ke tabel tertentu
- Melakukan replikasi dari PG 14 → PG 16 (untuk peningkatan versi!)
- Hubungan dua arah / multi-primer dengan hati-hati
- Skema yang berbeda diperbolehkan
Penyiapan: Publisher
Tandai primer sebagai publisher:
-- postgresql.conf
wal_level = logical
-- Create a publication:
CREATE PUBLICATION pub_orders FOR TABLE orders, order_items;
-- Or all tables in the database:
CREATE PUBLICATION pub_all FOR ALL TABLES;Penyiapan: Subscriber
Pada database target:
CREATE SUBSCRIPTION sub_orders
CONNECTION 'host=primary port=5432 user=repl dbname=mydb'
PUBLICATION pub_orders;Sinkronisasi Awal
Langganan melakukan penyalinan awal semua tabel yang sesuai, lalu mengalirkan perubahan. Skema target harus sesuai dengan sumber.
Kasus Penggunaan: Peningkatan Versi Utama
Replikasi logis adalah cara modern untuk meningkatkan versi Postgres dengan waktu henti minimal:
- Bangun klaster PG16
- Lakukan replikasi logis dari PG14 ke PG16
- Alihkan aplikasi saat PG16 sudah menyusul
- Matikan PG14
Kasus Penggunaan: Memisahkan Database
Untuk memecah satu database raksasa menjadi beberapa database yang lebih kecil:
- Publikasikan hanya tabel yang diperlukan layanan baru
- Berlangganan dari database baru
- Pindahkan penulisan setelah proses menyusul selesai
Kasus Penggunaan: Replika Heterogen
Replikasi ke replika baca dengan indeks yang berbeda, atau ke PostgreSQL gudang data dengan kolom pelaporan tambahan.
Konflik
Replikasi logis tidak menyelesaikan konflik secara otomatis. Jika baris yang sama diperbarui di kedua sisi, subscriber berhenti dengan sebuah galat. Hindari hal ini dengan:
- Menulis hanya ke satu sisi
- Menggunakan REPLICA IDENTITY FULL untuk diagnosis yang lebih baik
- Menyelesaikan konflik secara manual lalu memulai ulang langganan
Perubahan Skema
DDL TIDAK direplikasi. Terapkan perubahan skema secara manual di kedua sisi—biasanya pada subscriber terlebih dahulu, kemudian publisher. Atau gunakan ekstensi pglogical yang dapat mereplikasi DDL.
Replikasi Parsial
PG modern memungkinkan filter baris dan daftar kolom untuk setiap publikasi:
CREATE PUBLICATION us_only FOR TABLE customers
WHERE (country = 'US');
CREATE PUBLICATION compact FOR TABLE users (id, email);Sharding dengan Replikasi Logis
Pindahkan penyewa ke shard khusus:
- Publikasi pada sumber yang difilter untuk satu penyewa
- Berlangganan dari tujuan
- Alihkan aplikasi ke shard baru
- Hapus data penyewa dari sumber
Kinerja dan Keterlambatan
Replikasi logis umumnya berjalan dalam satu utas untuk setiap langganan. Sumber dengan volume tinggi mungkin memperoleh manfaat dari beberapa publikasi atau langganan, atau alat pihak ketiga seperti pglogical / Debezium.
Rangkuman
Replikasi logis memungkinkan streaming tingkat baris.
- Lintas versi dan sebagian tabel
- Peningkatan versi utama dengan waktu henti minimal
- Menangani konflik adalah tanggung jawab YOUR
- DDL tidak direplikasi
Pemeriksaan Singkat
Anda perlu meningkatkan versi dari PostgreSQL 14 ke 16 dengan waktu henti minimal. Replikasi mana yang membantu?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Replikasi Logis untuk Sharding” gratis?
Ya — teks lengkap “Replikasi Logis untuk Sharding” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Replikasi Logis untuk Sharding”?
Gunakan replikasi logis PUBLICATION/SUBSCRIPTION untuk memindahkan tabel antarklaster dan mendukung peningkatan versi mayor Kamu berlatih SQL Academy 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 SQL Academy?
Tidak diperlukan pengalaman sebelumnya. SQL Academy 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 2 dari 4.
Berapa lama pelajaran “Replikasi Logis untuk Sharding” 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 SQL Academy ini?
Ya. Setiap pelajaran SQL Academy 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
- Replikasi Streaming dan WAL
- Replikasi Logis untuk Sharding
- Failover dan Pemilihan Pemimpin (Patroni, Stolon)
- Replika Baca dan Pengarahan Koneksi