Replikasyon Türleri
| Tür | Açıklama | Kullanım |
|---|---|---|
| Streaming | WAL kayıtlarını gerçek zamanlı gönderir | Hot standby, failover |
| Logical | Tablo bazlı replikasyon | Seçici veri kopyalama |
| Synchronous | Yazma onayı bekler | Sıfır veri kaybı |
| Asynchronous | Onay beklemez | Performans öncelikli |
Streaming Replication Kurulumu
Primary (Master) Sunucu
# postgresql.conf
wal_level = replica
max_wal_senders = 3
wal_keep_size = 1GB
hot_standby = on
# Replikasyon kullanıcısı
CREATE USER replicator WITH REPLICATION PASSWORD 'rep_password';
# pg_hba.conf
host replication replicator standby_ip/32 scram-sha-256
Standby (Slave) Sunucu
# Veri dizinini temizle
sudo systemctl stop postgresql
sudo rm -rf /var/lib/postgresql/16/main/*
# Primary'den kopyala
sudo -u postgres pg_basebackup \
-h primary_ip \
-U replicator \
-D /var/lib/postgresql/16/main \
-P -R -X stream
# Başlat
sudo systemctl start postgresql
Replikasyon Durumu
-- Primary'de
SELECT * FROM pg_stat_replication;
-- Standby'de
SELECT * FROM pg_stat_wal_receiver;
Patroni ile Otomatik Failover
Patroni, PostgreSQL için otomatik failover ve cluster yönetimi sağlar. etcd veya Consul ile birlikte kullanılır.
# Patroni kurulumu
pip3 install patroni[etcd]
# patroni.yml örneği
scope: postgres-cluster
name: node1
restapi:
listen: 0.0.0.0:8008
connect_address: node1_ip:8008
etcd:
host: etcd_ip:2379
bootstrap:
dcs:
postgresql:
parameters:
max_connections: 100
postgresql:
listen: 0.0.0.0:5432
connect_address: node1_ip:5432
data_dir: /var/lib/postgresql/16/main
authentication:
superuser:
username: postgres
password: postgres_pass
replication:
username: replicator
password: rep_pass