
PostgreSQL Logical Replication, seçtiğiniz tabloları gerçek zamanlı olarak başka bir PostgreSQL sunucusuna aktarır. Bu güçlü özellik sayesinde verilerinizi esnek ve kontrollü bir şekilde çoğaltabilirsiniz. Bu yazıda, PostgreSQL’de logical replication kurulumunu adım adım açıklıyoruz. Ayrıca süreci daha anlaşılır hale getirmek için örnek SQL komutlarıyla destek sunuyoruz.
🔗 PostgreSQL Logical Replication Documentation
Logical Replication Nedir?
Logical replication, veriyi fiziksel seviyede değil; tam tersine, mantıksal düzeyde kopyalar. Özellikle tablo bazlı çoğaltma imkanı sayesinde belirli tabloları başka bir veritabanına eş zamanlı olarak taşıyabilirsiniz. Bu yöntem, yalnızca yedekleme amacıyla değil; aynı zamanda veri analitiği sunucusu kurarken veya veri dağıtımı gerçekleştirirken de oldukça faydalı olur.
Sonuç olarak, logical replication sayesinde PostgreSQL ortamınızda yüksek esneklik ve ölçeklenebilirlik elde edebilirsiniz. Üstelik bu yapılandırma, sistem kaynaklarını daha verimli kullanmanızı sağlar.
1. Kaynak Veritabanı (Publisher) Ayarları
Replikasyon Kullanıcısı Oluşturma
İlk olarak, sadece replication işlemleri için kullanılacak özel bir kullanıcı oluşturalım:
CREATE USER rep_user WITH PASSWORD 'password' REPLICATION IN ROLE pg_read_all_data;
✅ Açıklama: Bu kullanıcı, sadece belirli verileri okuma ve replikasyon işlemleri için yetkilidir. Güvenlik açısından bu tür kullanıcılar sınırlı yetkilerle oluşturulmalıdır.
Replike Edilecek Tabloyu Oluşturma
CREATE TABLE atfatmc_1 (
id SERIAL,
value CHAR(33),
PRIMARY KEY(value)
);
❗ Not: Replikasyon yapılacak tablo mutlaka bir primary key içermelidir. Aksi takdirde replication çalışmaz.
Test Verisi Ekleme
INSERT INTO atfatmc_1
SELECT generate_series(1,1000), md5(md5(random()::text));
Publication Oluşturma
CREATE PUBLICATION test_pub FOR TABLE public.atfatmc_1;
Alternatif olarak, önce boş bir publication oluşturup tabloyu sonradan da ekleyebilirsiniz:
CREATE PUBLICATION test_pub;
ALTER PUBLICATION test_pub ADD TABLE public.atfatmc_1;
✅ Publication Kontrolleri:
SELECT * FROM pg_catalog.pg_publication;
SELECT * FROM pg_catalog.pg_publication_tables WHERE pubname='test_pub';
2. Hedef Veritabanı (Subscriber) Ayarları
Hedef Tablonun Oluşturulması
Hedef veritabanında da birebir aynı tabloyu oluşturmanız gerekir:
CREATE TABLE atfatmc_1 (
id SERIAL,
value CHAR(33),
PRIMARY KEY(value)
);
⚠️ Dikkat: Tablonun yapısı birebir aynı olmalıdır. Aksi takdirde duplicate veya yapı uyuşmazlığı hataları alırsınız.
Subscription Oluşturma
CREATE SUBSCRIPTION test_subscription
CONNECTION 'dbname=project host=192.168.116.131 port=5432 user=rep_user password=password'
PUBLICATION test_pub;
Bu komutla hedef veritabanı artık kaynak veritabanındaki yayınlanan veriyi almaya başlayacak.
Publication Güncellenince Subscription Yenileme
Eğer yeni tablolar publication’a eklendiğinde aşağıdaki komutla subscription’ı güncellemelisiniz:
ALTER SUBSCRIPTION test_subscription REFRESH PUBLICATION;
Subscription Durumu Kontrol:
SELECT * FROM pg_catalog.pg_subscription;
3. Replikasyon Slot ve Durum Kontrolleri
SELECT * FROM pg_catalog.pg_replication_slots;
Ayrıca aktif replikasyon oturumlarını görmek için:
SELECT * FROM pg_catalog.pg_stat_replication;
Sık Yapılan Hatalar ve İpuçları
- Şifreleme & Güvenlik: Replikasyon kullanıcısının şifresi güçlü olmalı, bağlantılar SSL ile yapılmalı.
- Tablo Eşleşmesi: Tabloların yapısı birebir aynı olmalı.
- Primary Key Zorunluluğu: Replikasyon yapılacak tablolarda primary key olmalıdır.
- Subscription Güncelleme: Yeni tablo eklenirse
REFRESH PUBLICATION
unutulmamalıdır.
Sonuç
PostgreSQL Logical Replication, esnek yapısı ve gerçek zamanlı veri çoğaltma kabiliyetiyle oldukça güçlü bir özelliktir. Bu rehberde öğrendiğiniz adımlarla farklı veritabanları arasında veri senkronizasyonunu kolayca gerçekleştirebilirsiniz.
Diğer yazılar için PostgreSQL kategorimize göz atabilirsiniz. Tıklayın
Leave a Comment