Genellikle Pgpool'u arka uç sunucularına kurmazsınız. Resminizde gördüğünüz en yaygın yapılandırmadır. Pgpool, veritabanlarının önünde yer alan bağımsız bir sunucudur. İki Postgres sunucusu genellikle akış çoğaltmasıyla yapılandırılır; biri efendi diğeri köle.
Bu, Pgpool'un iki (veya daha fazla) veritabanı arasındaki tüm okunan sorguları dengelemesini sağlar. Herhangi bir yazım içeren tüm sorgular ana sunucuya yönlendirilir ve bu da slave'e kopyalanır.
As @Neil McGuigan söyledi , ayrıca daha iyi yüksek kullanılabilirlik elde etmek için birden pgpool sunucular olabilir. Teknik olarak bu yapılandırmada Pgpool'u veritabanı sunucularına kurabilirsiniz, ancak bu kötü bir uygulamadır. Birden fazla Pgpool sunucusu çalıştırmak çok daha karmaşık bir yapılandırmadır. Bu Pgpool ile ilk kez olsaydı, iki işe başlamadan önce bir Pgpool sunucusuyla başlardım.
Her iki yapılandırmada da uygulama sunucunuz yalnızca tek bir Postgres veritabanına bağlandığını düşünür.
Hakkında pgpool_regclass
, bu gerçekten ayrı bir soru olmalı, bu Pgpool SSS bölümünden :
PostgreSQL 8.0 veya üstünü kullanıyorsanız, pgpool-II tarafından dahili olarak kullanıldığı için tüm PostgreSQL'e pgpool_regclass fonksiyonunun yüklenmesi şiddetle tavsiye edilir, çünkü pgpool-II tarafından dahili olarak kullanılır. Bu olmadan, farklı şemadaki yinelenen tablo adlarının işlenmesi soruna neden olabilir (geçici tablolar sorun değildir).
PostgreSQL 9.4.0 veya üstünü ve pgpool-II 3.3.4 veya üstünü, 3.4.0 veya üstünü kullanıyorsanız, PostgreSQL 9.4 yerleşik pgpool_regclass "" to_regclass "işlevine sahip olduğundan, gerekli değildir.
Buna ihtiyacınız varsa, Pgpool'un kullandığı bir işlevi eklemek için Postgres ana sunucunuzda çalıştırılan bazı SQL kodları vardır.
Regclass ile, yapmanız gereken ek bir adım var (insert_lock'u düşünüyordum). Kaynaktan derliyorsanız (genellikle dağıtımların çoğu Pgpool'un gerçekten eski sürümlerine sahiptir), bir Postgres kütüphanesi de derlemeniz gerekecektir.
Kaynaktan derlediyseniz, .../pgpool-II-3.X.X/src/sql/pgpool-regclass
klasöre girip bir ./configure; make
.
Pgpool-regclass.so dosyasını Postgres uzantı dizinine kopyalayın. : Benim Ubuntu 14.04 sunucuda, o yer almaktadır (sadece yüklemek Postgres 9.3 paketini kullanarak) /usr/lib/postgresql/9.3/lib
. Bunu tüm Postgres sunucuları için yapmayı unutmayın .
Bu tamamlandığında, pgpool-regclass.sql
master üzerinde çalışabilirsiniz . Bu, pgpool_regclass
işlevi kopyaladığınız kitaplıkla eşleştirir .