PostgreSQL yük devretme ve çoğaltma


14

PostgreSQL 9.1'i değerlendiriyorum ve yük devretme ve çoğaltma ayrıntıları ile ilgili birkaç sorum var.

Birkaç test senaryom var. Birincisi bir Ana sunucu ve birkaç Köleye sahip. Üstat'ın çökmesi durumunda Kölelerden birinin Üstat olmasını istiyorum. Master normal duruma döndükten sonra, kümedeki diğer sunucularla senkronize edilmeli (kapalıyken yapılan tüm değişiklikleri uygulamalıdır) ve Master rolünü geri almalı veya Slave olmalıdır.

PostgreSQL ve mevcut senaryo ile ilgili gördüğüm sorunlar şunlardır.

1) Ana sunucu kesintisini tespit etmek için yerleşik araçlar görmüyorum. Pgpool'un üstesinden gelebileceğini ve tetikleyici dosya oluşturabileceğini okudum, ayrıca insanların bunun için Linux kalp atışı veya benzer araçlar kullandığını da okudum. Tamam, yük devretmeyi tespit edebilir ve kümede yeni bir Master atayabilirim. Diğer Köleler yeni bir Üstat olduğunu anlayacaklar mı ve şimdi onu yedeklemeliler mi?

2) Yeniden çalışma prosedürünü anlamıyorum. Ana ve Bağımlı ana bilgisayar yapılandırmaları farklıdır. Peki, çökmüş Üstat başarısızlığından sonra iki Üstatım olacak mı? Sunucular nasıl senkronize olacak? Yalnızca "veri klasörünü sunucuya aktar ve yeniden başlat" gibi manuel çözümler gördüm. Öyleyse çözüm ya da en iyi uygulama ya da en azından burada kilit prensip nedir?

3) İstemci tarafında sunucu kesintisini nasıl ele almalıyım? Bağlantı oluşturduğumda sunucu IP'sini açıkça belirtiyorum. Master-Slave yapımı tanıyacak bir tür ConnectionManager geliştirmeli miyim, sadece Master'a istek göndermeli ve bağlantı kaybı durumunda yedek sunuculara geçilecekse vb. Pgpool'un uygulamalar için bir giriş noktası olabileceğini ve bağlantıları doğru bir şekilde yönetebileceğini okudum. Pgpool buradaki tek çözüm mü? Yük devretme ve geri dönmeyi iyi ele alıyor mu?

4) (Ticari olarak da) herhangi bir çözüm var mı, bu yüzden verileri manuel olarak kopyalamaktan, PostgreSQL örneklerini ve eller tarafından yapılması gereken diğer şeyleri yeniden yapılandırmaktan kaçınabilir miyim? Öyleyse herkes senkronize olduğunda küme yapılandırması, Master'ın kim olduğu ve her şeyin operatörün ilgisi olmadan otomatik olarak değiştiği açık mı?

Bu konu ve makalelere göre

PostgreSQL'de çoğaltma ve yük devretme

PostgreSQL 9.1'de yük devretmeyi otomatikleştirme

http://denishjpatel.blogspot.com/2010/11/possibility-of-graceful-switchover.html

bu soruları çözmek için tek bir tam otomatik çözüm yoktur. Haklı mıyım?

Teşekkürler!


Muhtemelen ilgili 9.2 dokümana işaret etmeye değer .
Mike Sherrill 'Cat Recall'

Yanıtlar:


4
  1. köleler yeni efendiyi anlamayacak. manuel olarak yapmalısınız.
  2. evet onlar farklı ve eski master için yenilerini oluşturmanız gerekir. her ne kadar eski bekleme master olarak çalışmaya devam edecek, ancak bu düğümde max_wal_senders ayarlamanız gerekir. yük devretme işleminden sonra yeni master'ın pg_hba.conf dosyasını da ayarlamanız gerekir. yük devretme sonrasında (düğümler master-> slave slave-> master rollerini değiştirdiğinde), yeni wal dosyalarını recovery.conf dosyasında ayarladığınız yeni bekleme klasörleri veri dizinine aktarmalısınız. ya da rsync'i kullanabilirsiniz.

  3. pgbouncer kullanabilirsiniz. bu şekilde pgbouncer server adresini yeni master olarak değiştireceksiniz.

  4. EnterpriseDB'nin bazı ticari araçları vardır. belki onları kontrol edebilirsiniz.

ve son olarak evet haklısın. bu soruları çözmek için tek bir tam otomatik çözüm yoktur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.