ユーザー
2 farklı cihazı nasıl aktif aktif yedekli veritabanı olarak çalıştırırım?
PostgreSQL Support Engineer
2 farklı cihazı nasıl aktif aktif yedekli veritabanı olarak çalıştırırım?
Aktif-aktif yedekli bir veritabanı kurulumu için iki cihaz arasında verilerin sürekli olarak senkronize edilmesi gerekmektedir. PostgreSQL'de bu, genellikle çoğaltma (replication) yoluyla yapılır. İki cihazın da aktif olarak veritabanı işlemlerini işleyebilmesi için bazı ek adımlar ve dikkat edilmesi gereken hususlar vardır. İşte temel adımlar:
Çoğaltma Yapılandırması: Her iki cihazda da PostgreSQL çoğaltma yapılandırmasını yapın. Bu, genellikle birincil ve ikincil (master-slave) yapılandırma olarak başlar.
Senkron Çoğaltma: Veri tutarlılığını sağlamak için senkron çoğaltmayı kullanabilirsiniz. Senkron çoğaltma, verilerin her iki sunucuda da aynı anda güncellenmesini sağlar.
Yük Dengeleme: Her iki sunucuya da eşit yük dağılımı sağlamak için bir yük dengeleyici kullanın. Bu, her iki sunucunun da aktif olarak kullanılmasını sağlar.
Failover ve Failback Stratejileri: Her iki sunucu arasında sorunsuz bir geçiş için failover ve failback stratejilerini belirleyin.
Uygulama Seviyesi Desteği: Uygulamanızın aktif-aktif yapıyı desteklediğinden emin olun. Bazı durumlarda uygulama seviyesinde özel düzenlemeler yapmanız gerekebilir.
Test ve İzleme: Kurulumu test edin ve sürekli olarak performansı ve sağlığı izleyin.
Bu işlemler karmaşık ve detaylıdır, dolayısıyla spesifik PostgreSQL sürümünüze ve ağ yapınıza göre özelleştirmeler yapmanız gerekebilir. Ayrıca, bu tür bir yapılandırma yüksek kullanılabilirlik sağlasa da, veritabanı tasarımınızı ve uygulama mantığınızı bu yapıya uygun hale getirmeniz önemlidir.
Eğer daha detaylı bilgiye ihtiyacınız varsa, PostgreSQL sürümünüzü belirtirseniz size daha spesifik yardımcı olabilirim. Ayrıca, yüklenen PostgreSQL kaynaklarından da ek bilgiler sağlayabilirim.
Her iki cihaz için conf dosyası örneği verir misin?
Aktif-aktif PostgreSQL yapılandırması için postgresql.conf dosyaları hazırlarken dikkate almanız gereken bazı anahtar ayarlar vardır. Ancak, unutmayın ki bu ayarlar genel bir rehber niteliğindedir ve özgün ihtiyaçlarınıza göre ayarlanmalıdır. İki cihaz için de ayarlar benzer olacak, fakat bazı parametreler cihaza özgü olabilir.
Aşağıda, her iki cihaz için genel bir postgresql.conf yapılandırma örneği verilmiştir. Bu yapılandırma, çoğaltma ve yüksek kullanılabilirlik için bazı temel ayarları içerir:
postgresql.conf# Replication Settings
wal_level = replica # replication için gerekli
max_wal_senders = 10 # maksimum eş zamanlı WAL gönderen işlem sayısı
max_replication_slots = 10 # maksimum replikasyon slot sayısı
synchronous_commit = on # senkron commit işlemleri için
synchronous_standby_names = '*' # senkron replikasyon için standby isimleri
# Network Settings
listen_addresses = '*' # hangi IP adreslerinden bağlantı kabul edileceği
port = 5432 # dinlenen port
# Resource Usage
shared_buffers = 4GB # sistem belleğinin ne kadarının kullanılacağı
effective_cache_size = 8GB # PostgreSQL'in tahmini önbellek boyutu
maintenance_work_mem = 512MB # bakım işlemleri için ayrılan maksimum bellek
Devam lütfen
Tabii, işte postgresql.conf dosyasının devamı ve ikinci cihaz için örnek yapılandırma:
postgresql.conf (Devam)# Write Ahead Log
wal_buffers = 16MB # WAL için ayrılan bellek boyutu
checkpoint_timeout = 10min # checkpoint aralığı
max_wal_size = 2GB # maksimum WAL dosya boyutu
# Logging
logging_collector = on # log toplama işlemini etkinleştir
log_directory = 'pg_log' # log dosyalarının saklanacağı dizin
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log dosyası adı formatı
log_min_messages = warning # loglanacak minimum mesaj seviyesi
# Client Connection Defaults
client_encoding = utf8 # varsayılan karakter seti
postgresql.confCihaz 2 için yapılandırma, Cihaz 1 ile büyük ölçüde benzerdir. Ancak, bazı ayarlar, özellikle ağ ayarları ve kaynak kullanımı, farklılık gösterebilir. Örneğin:
# Replication Settings
wal_level = replica
max_wal_senders = 10
max_replication_slots = 10
synchronous_commit = on
synchronous_standby_names = '*'
# Network Settings
listen_addresses = '*' # değişiklik yapılabilir
port = 5432 # değişiklik yapılabilir
# Resource Usage
shared_buffers = 4GB # sunucunuzun belleğine bağlı olarak değişebilir
effective_cache_size = 8GB
maintenance_work_mem = 512MB
# Write Ahead Log
wal_buffers = 16MB
checkpoint_timeout = 10min
max_wal_size = 2GB
# Logging
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_min_messages = warning
# Client Connection Defaults
client_encoding = utf8
Her iki sunucu için de pg_hba.conf dosyasının, ağ üzerinden güvenli bağlantıları destekleyecek şekilde yapılandırılması gerekecektir. Ayrıca, bu yapılandırmaların her iki sunucuda da test edilmesi ve gerektiğinde ayarlanması önemlidir.
Aktif-aktif yapılandırma karmaşık olduğundan, bu ayarları uygulamadan önce detaylı bir şekilde test etmenizi ve yedekleme stratejilerinizi gözden geçirmenizi öneririm.
Yaptım ama bir cihaz memory hatası verdi. Linux kernel ile ilgili olabilir. Nelere bakayım?
Bir PostgreSQL sunucusu bellek hatası verdiğinde, bu genellikle sunucunun ayrılan belleği aşması veya işletim sistemi düzeyinde bir sınırlamayla karşılaşması anlamına gelir. Linux kernel ile ilgili bellek sorunlarını gidermek için aşağıdaki adımları takip edebilirsiniz:
PostgreSQL Log Dosyalarını Kontrol Edin: PostgreSQL log dosyaları, bellek hatasıyla ilgili spesifik mesajlar içerebilir. Bu mesajlar, sorunun kaynağını belirlemenize yardımcı olabilir.
Kernel Parametrelerini Kontrol Edin:
vm.overcommit_memory: Bu ayar, kernel'in bellek tahsisatı için nasıl bir strateji izleyeceğini belirler. 2 olarak ayarlanırsa, kernel tahsisatları daha sıkı bir şekilde kontrol eder.vm.overcommit_ratio: overcommit_memory 2 olarak ayarlandıysa, bu parametre ne kadar belleğin overcommit edileceğini belirler.sysctl vm.overcommit_memory ve sysctl vm.overcommit_ratio komutlarını kullanabilirsiniz.Sistem Belleği ve Swap Kullanımını Kontrol Edin:
free -m komutu, sistem belleği ve swap kullanımınızı kontrol etmek için kullanışlıdır.PostgreSQL Bellek Ayarlarını Gözden Geçirin:
shared_buffers, work_mem, maintenance_work_mem gibi bellek ile ilgili parametrelerin değerlerini kontrol edin. Bu ayarlar çok yüksekse ve sunucunuzun toplam belleğini aşıyorsa, bellek sorunlarına neden olabilirler.postgresql.conf dosyasındaki bu ayarları sistem belleğinize uygun şekilde düzenleyin.Uygulama Logları ve Sistem Logları:
/var/log/messages, /var/log/syslog gibi) da bellek ile ilgili hatalar içerebilir.Kernel Logları:
dmesg komutu, kernel ile ilgili logları gösterir. Burada, bellek hatasıyla ilgili mesajlar olup olmadığını kontrol edin.PostgreSQL'in Çalıştığı Sunucunun Donanımını Kontrol Edin:
Bu adımlar, sorunun kökenini bulmanıza ve çözüm yollarını belirlemenize yardımcı olabilir. Bellek yönetimi karmaşık bir konu olabilir, bu nedenle her adımı dikkatlice değerlendirmeniz önemlidir. Sorun devam ederse, daha ayrıntılı bir inceleme yapmak ve daha spesifik bilgiler sağlamak üzere sistem yapılandırmanız ve loglarınız hakkında daha fazla bilgi vermeniz gerekebilir.