PostgreSQL Support Engineer

Aktif-Aktif Yedekli PostgreSQL Kurulumu

PostgreSQL Support Engineer

打开原始分享对话

用户

2 farklı cihazı nasıl aktif aktif yedekli veritabanı olarak çalıştırırım?

PostgreSQL Support Engineer

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: 1. **Ç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. 2. **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. 3. **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. 4. **Failover ve Failback Stratejileri**: Her iki sunucu arasında sorunsuz bir geçiş için failover ve failback stratejilerini belirleyin. 5. **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. 6. **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?

PostgreSQL Support Engineer

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: ### Cihaz 1 için `postgresql.conf` ```ini # 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

PostgreSQL Support Engineer

Tabii, işte `postgresql.conf` dosyasının devamı ve ikinci cihaz için örnek yapılandırma: ### Cihaz 1 için `postgresql.conf` (Devam) ```ini # 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 ``` ### Cihaz 2 için `postgresql.conf` Cihaz 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: ```ini # 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?

PostgreSQL Support Engineer

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: 1. **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. 2. **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. - Bu ayarları kontrol etmek için `sysctl vm.overcommit_memory` ve `sysctl vm.overcommit_ratio` komutlarını kullanabilirsiniz. 3. **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. - Swap alanının yeterli olup olmadığını kontrol edin. Yetersiz swap alanı, bellek yoğun işlemlerde sorunlara yol açabilir. 4. **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. 5. **Uygulama Logları ve Sistem Logları**: - Uygulamanızın log dosyaları da ek ipuçları sağlayabilir. - Sistem logları (`/var/log/messages`, `/var/log/syslog` gibi) da bellek ile ilgili hatalar içerebilir. 6. **Kernel Logları**: - `dmesg` komutu, kernel ile ilgili logları gösterir. Burada, bellek hatasıyla ilgili mesajlar olup olmadığını kontrol edin. 7. **PostgreSQL'in Çalıştığı Sunucunun Donanımını Kontrol Edin**: - Sunucunun fiziksel belleğini ve diğer donanım kaynaklarını kontrol edin. Donanım kaynaklarında bir sorun olabilir. 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.