MySQL'in tek başına kurulması gerekiyor mu


20

Sık sık "MySQL sunucu makinemiz başarısız oldu" gibi ifadeler yapan insanlar duyuyorum, bu da bana tek bir makineyi MySQL sunucusu olarak ayırma izlenimi veriyor (sanırım işletim sistemini ve sadece MySQL'i kuruyorlar). Bir geliştirici olarak sysadmin değilim, web sunucusu ve PHP ile birlikte bir LAMP yığınının bir parçası olarak yüklenen MySQL için alışkınım.

Birisi bana açıklayabilir mi:

  • MySQL'i ayrı bir sunucuya kurmanın anlamı nedir? lamba yığınını ve ek sunucuları da ekleyebileceğim zaman kaynak israfı gibi geliyor.
  • veritabanı ayrı bir makinedeyse, kullanılması gereken uygulamalar ona nasıl bağlanır?

Yanıtlar:


30

Uygulama platformunuz ve veritabanınız kaynaklar için yarışıyorsa, bu genellikle özel bir veritabanı sunucusu için hazır olduğunuzun ilk göstergesidir.

İkinci olarak, yüksek kullanılabilirlik: bir veritabanı kümesi kurma (ve genellikle de yük dengeli bir Web / uygulama sunucusu kümesi).

Ayrıca, her sunucu için ağ erişimi için farklı politikalara sahip olabileceğinizden (örneğin, LAN'da bir veritabanı sunucusuna sahip bir DMZ Web sunucusu) güvenlik, ayrı sunuculara geçişte büyük bir rol oynadığını söyleyebilirim.

Veritabanı sunucusuna erişim ağ üzerinden yapılır. yani, veritabanı ana makineniz için genellikle "localhost" belirtirseniz, veritabanı sunucunuzun ana bilgisayar / IP adresini belirtirsiniz. Not: genellikle bağlantılara izin vermek / geridöngü arabirimi dışında bir arabirimde dinlemeyi etkinleştirmek için veritabanı sunucunuzun yapılandırmasını değiştirmeniz gerekir.


Ayrıca, özel bir makine disk yapılandırmasının uygun şekilde ayarlanmasına izin verir. Veriler bir RAID 6'da yaşandığında web sunucuları oldukça mutludur; veritabanı sunucuları RAID 1'i tercih ediyor.
Simon Richter

12

Ayrı bir veritabanı sunucusu iyi, ölçeklenebilir tasarımın sadece bir parçasıdır. Trafiğinizin çok yüksek olmaması ve tek bir sunucunun gerçekten yeterli olması önemli değildir.

Ancak daha yoğun hizmetlerde, hizmetleri birbirinden izole etmek iyi bir şeydir. Birisi DDoSses web sunucunuzu yapar ve tüm kaynakları tüketirse, bu veritabanı sunucusunu zorbalık yapmaz. Paylaşılan ortamlarda muhtemelen birden fazla web sunucusu veritabanı sunucusunu kullanıyor demektir, bu nedenle veritabanı sunucusu 50 farklı web sitesi için veri içeriyorsa, DDoS nedeniyle yalnızca bir web sitesi her şeyi kaldırmaktan daha iyidir.

Ayrıca sysadmin açısından, "mysql-01.yourcompany.com" ve "webserver-01.yourcompany.com" gibi mantıklı isimlendirilmiş sunucular varsa daha açıktır. Uyarı aldıklarında, en azından "Tamam, veritabanında bir sorun var" anlamında olan biteni hemen görürler. Birkaç DNS adı tek bir sunucuya işaret edebilir, ancak yine de bu zayıf bir argüman olduğunu biliyorum.

Uygulamalarınız ağ üzerinden sorun yaşamadan uzak bir veritabanı sunucusuna bağlanır. Aieeeeeee! Web tarayıcınız uzak bir sunucuya nasıl bağlanıyor? Bu sihirdir! Eee .... daha ciddi, 'localhost' yerine sunucu adresini sadece $ programming_language_of_your_choice içinde giriyorsunuz ve hazırsınız.


2
Janne'nin yorumuna ek olarak: sysadmin bakış açısı ... Performans sorunlarınız olduğunda veya uygulamada hata ayıklamanız gerektiğinde, web sunucusu ve veritabanı sunucusu ayrı makinelerde olduğunda yapılması daha kolay bir helluva lotudur.
HTTP500

5
  • Bazı web siteleri / uygulamalar bir veritabanını o kadar yoğun kullanır ki, veritabanının kendisine ayrılmış bir veya daha fazla sunucu gerektirir.
  • Ağ üzerinden.

3

LAMP uygulama yığınıdır, ancak hepsinin aynı ana bilgisayara yüklenmesi gerekmez. Diğerlerinin performans, güvenlik veya ölçeklenebilirlik amaçları için belirttiği gibi, bunlar genellikle aynı ana bilgisayara yüklenmez. Mimarinin bir kısmı için en uygun donanımın başka bir kısmı için uygun olmadığını da görebilirsiniz.

Örneğin, veritabanlarının tamamı depolama yönetimi ile ilgilidir. Ne kadar hızlı diskten bilgi alabilirim, o zaman o kadar hızlı talep edene alabilirim. Bir disk alt sistemini bir web sunucusu gibi diğer birkaç uygulama yığını üyesiyle paylaşıyorsam, disk sürücülerinin okuma ve yazma işlemlerinin paylaşılan kaynaklarında karşılaştığım çekişme aslında performansımı engelleyebilir. Ayrıca, belirli bir ana bilgisayarda web sunucusu ve veritabanı sunucusu arasında RAM bölünmesi, en verimli şekilde çalışması için yeterli büyüklükte bir kaynak havuzu sağlamayabilir, diske gitmek zorunda kalmadan RAM'de çok fazla bilgi önbelleğe alabilir bir resim, bir sayfa veya bir sorgu sonuç kümesi.

İdari açıdan da kazanılacak verimlilikler vardır. İşletmenizi, ortak bir arka uç olarak MySQL'den yararlanan açık kaynaklı uygulamalarda çalıştırdığınızı düşünün. Her uygulamada veritabanı sunucusu çoğalmasını gerçekten ister misiniz? Bu bir DBA kabusu olabilir, "Tamam, hangi uygulama bu DB kullanıyor?" Birden çok sürümünüz, donanım / yazılımın mulotiple yapılandırmaları, çoklu veri tutma stratejileri olacaktır. Muhtemelen çok yaygın idari becerilere sahip olacaksınız. Bunun yerine, örnekleri rol için optimize edilmiş fiziksel bir donanım parçasıyla birleştirin ve sunucuyu ve verilerini yönetmek için özel kaynaklar atayın.


2

MySQL sorguları çok kaynak yoğun olma potansiyeline sahiptir, bu da LAMP sunucunuzu yavaşlatabilir.

Büyük, karmaşık, kaynak ağır bir web sitesi çalıştırırken, veritabanını başka bir özel sunucuya taşımayı düşünmek akıllıca olacaktır. Bu şekilde, biri web'e, diğeri de veritabanı sorunlarına adanmış iki sunucunuz olur. Bu, kaynakları serbest bırakma ve hem web sitesi hem de veritabanı sorgularını hızlandırma potansiyeline sahiptir.

Web sunucusunun localhostveritabanı sorguları yapmak yerine veritabanı sunucusu adresine bağlanması yeterlidir .

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.