PostgreSQL yerel çoğaltması MySQL ile nasıl karşılaştırılır?
Eşzamansız çoğaltma, yakın zamanda eşitleme daha uzun süredir desteklenmektedir biliyorum. Senkronize gerçek projelerde kullanmak güvenilir midir?
PostgreSQL yerel çoğaltması MySQL ile nasıl karşılaştırılır?
Eşzamansız çoğaltma, yakın zamanda eşitleme daha uzun süredir desteklenmektedir biliyorum. Senkronize gerçek projelerde kullanmak güvenilir midir?
Yanıtlar:
Evet, üretime hazır ve yaygın olarak kullanılıyor. Heroku takipçileri, örneğin AWS RDS standbys ve okuma kopyaları gibi PostgreSQL'in yerleşik asenkron çoğaltmasını temel alır. Akış çoğaltma PostgreSQL ile neredeyse evrensel olarak kullanılır.
Çoğaltma kurulumu tam olarak hoş değildir, ancak repmgr gibi araçlar buna biraz yardımcı olur ve her büyük sürümle yavaş yavaş gelişir. Pg_basebackup'ın akış çoğaltmasını kullanarak sistemin bir kopyasını alma (ve bunu başka bir bekleme modundan alma) yeteneği büyük bir yardımcıdır.
Genel olarak, bir özellik üretime hazır olana kadar PostgreSQL'de yayınlanmayacaktır. Hatalar, herhangi bir yazılımdaki gibi olur, ancak genellikle tanımlandıktan kısa bir süre sonra düzeltilir. Gerçekten büyük yeni özellikler bazen .0 sürümünden sonra keşfedilen hatalara ve sorunlara sahip olabilir, ancak öyleyse bunları düzeltmek yüksek bir önceliktir; böcek sadece etrafında kalmaz.
Akış çoğaltmasıyla ilgili herhangi bir ciddi sorunun farkında değilim - senkronizasyon veya asenkron - ne de bir süredir rapor aldım. Piyasaya sürüldükleri ana sürümlerin .0 sürümlerinde Pg'nin normal standardından daha az kararlıydılar, ancak her ikisi de hızla olgunlaştı ve üretime hazırdı.
(Güncelleme: 9.3.4 sürümünden önce yeni 9.3 sürümünde bazı durumlarda çoğaltma sorunlarına neden olan belirli bir hata vardı; 9.3 kullanıcıları hemen 9.3.4 sürümüne güncellenmelidir. Daha eski sürümler etkilenmez.)
Bahsetmek istediğim tek uyarı, eşzamanlı çoğaltma ile küçük bir ayrıntıdır: Master'ı taahhüt ederseniz, çoğaltmanın onaylanmasını beklerken sorguyu tamamladıktan sonra iptal edin, çoğaltılmadan önce master üzerinde taahhütlü olarak kabul edilir. Çoğaltmanın yanıt vermesini beklerken master'ı yeniden başlatarak da aynı etkiyi elde edersiniz. Pratikte bu bir ilgisizlik, ama düşünebildiğim tek sorunla ilgili.
Pg'nin yerel replikasyonu MySQL'lerden oldukça farklıdır.
MySQL, tablo verilerine, tablo yapısına vb. Yapılan mantıksal değişiklikleri gönderdiği mantıksal çoğaltmayı kullanır ve çoğaltma bu değişiklikleri uygular.
PostgreSQL'in replikasyonu daha düşük seviyededir (9.5 ve altı; gelecekteki versiyonlar da mantıksal replikasyon ekleyebilir). Tablolarda değişen blokları gönderir. Daha basit, doğru şekilde daha kolay ve çoğaltma sunucusuna daha düşük yük bindirir, ancak daha fazla ağ bant genişliği tüketir ve henüz çoğaltılmamış değişiklikleri tutmak için ana bilgisayarda daha fazla depolama alanı gerektirir. WAL arşivleme yedeklemesi ile akış çoğaltmasını kullanmak için en iyi yapılandırılmış olması, yapılandırmayı MySQL'lerden daha karmaşık hale getirir. Çoğaltmanın diskteki durumunu master'la aynı tutarak yalnızca değişiklikleri değil, VACUUM etkinliği gibi düşük düzeyli değişiklikleri çoğaltır. Yalnızca bir veritabanını çoğaltma yetkisi yoktur; tüm sistem çoğaltılmalıdır; büyük, yüksek karmaşalı ve önemsiz bir veritabanınız ve küçük, düşük karmaşalı ve hayati bir veritabanınız varsa sinir bozucu olabilir.
Sonuçta, onunla ne yapmak istediğinize bağlı.
PostgreSQL'in çoğaltmasını yedekleme, yüksek kullanılabilirlik ve olağanüstü durum kurtarma için kullanılan kopyalar için oldukça iyi görüyorum. Özellikle zaman geri kazanımı (PITR) ile birleştirildiğinde .
Öte yandan, salt okunur raporlama kopyaları için iyi değildir, çünkü uzun işlemler çalıştırırken çoğaltılmış verilerin uygulanmasını geciktirme ihtiyacı, çok uzun süre çalışan sorguları iptal etmesine izin vermeniz veya ana verilerin çok gerisinde kalmanız anlamına gelir. master üzerinde daha fazla disk alanı ve kalmasını sağlamak için daha fazla çalışmaya zorlar.
Tablo yapısında, tablo içeriklerinde vb. Mantıksal değişikliklerin disk üstü durumlarından ziyade çoğaltıldığı PostgreSQL'de mantıksal çoğaltmayı etkinleştirmek için devam eden çalışmalar vardır . Pg'nin katalog tasarımı ve kullanıcı tanımlı her şey için destek, bunu oldukça karmaşık bir görev haline getirir. Bazı temel çalışmalar 9.4 için uygulamaya konulmuştur, ancak tam mantıksal çoğaltmanın 9.6 veya daha önce kullanılmayacağı muhtemeldir.