Sanal makinede veritabanı çalıştırmanın sakıncaları nelerdir? Onları nasıl aşabilirim? [kapalı]


66

Sanal bir makinede herhangi bir şeyi çalıştırmak, belirli bir performans seviyesine ulaşır, ancak bu bir veritabanı sisteminin performansını gerçekten ne kadar etkiler?

Bu akademik referans belgesini bazı ilginç kriterler ile buldum , ancak yalnızca Xen ve PostgreSQL kullanan sınırlı bir testti. Sonuç olarak, bir VM kullanmanın "performans açısından yüksek bir maliyete ulaşmadığı" sonucuna varıldı (gerçek verilerin aksi söylendiğini düşünebilseniz de).

Sanal makinede veritabanı çalıştırmayla ilgili teknik, idari ve diğer dezavantajlar nelerdir?

Lütfen objektif gerçeklerle desteklenebilecek cevapları gönderin, spekülasyonlarla ya da diğer yarı dini tartışmalarla ilgilenmiyorum (inek tutkusu birçok yönden iyidir, ama bu bize yardımcı olmaz).

Söyleniyor ki,

  • Sanal Makinede veritabanı çalıştırırken hangi sorunlar ortaya çıkıyor? (lütfen referans gönderiniz)
  • Bu konular önemli mi?
    • Sadece belirli senaryolar altında mı anlamlılar?
  • Geçici çözümler nelerdir?

+1 Öncelikle SQL Server ve Windows 2008 R2 senaryoları hakkında geri bildirimde bulunmakla ilgileniyorum
goodguys_activate

4
@Shane Madden - Kapatmayı biraz açıklar mısınız? Motivasyonun, sorunun kendisinden değil, spesifik olmayan cevaplardan (yorumlarda raydan çıktıklarını) kaynaklanmasını bekliyorum. Soruyla ilgili olarak, bir günlük ön kapanış mevcudiyetinin kabaca bir gün içindeki 44 oy ve 12 favori, bana (özellikle ServerFault soru trafiği için tipik olanla kıyaslandığında) yararlı cevaplar / bilgilerle iyi bir soru olduğunu ima ediyor. Çeşitli SE sitelerinin hedeflediği şey budur. Daha belirgin bir soru cümleciliği mi tercih ederdiniz, aksine "ne kadar kötü?".
Russ

1
@ErikA, Shane, Womble, mikeyb, Ben - Bu soruyu daha yapıcı hale getirebilecek bir topluluk düzenleme yaptım. Bunu yeniden açmayı veya yeni / temiz bir soruya benzer bir soru göndermeyi düşünün.
goodguys_activate

Yanıtlar:


41

Pek çok DB satıcısı bunu yapmak için çok yavaş olsa da, neredeyse hepsi artık resmi olarak sanallaştırılmış bir ortamda çalışan yazılımlarını destekliyor.

ESXi'nin üstüne Linux'ta birçok Oracle 11g örneği çalıştırıyoruz ve çok iyi performans elde etmek kesinlikle mümkün. Tüm donanım ölçeklendirmelerinde olduğu gibi, sanallaştırma sunucusunun çok fazla kaynağa (RAM, CPU) sahip olduğundan ve disk katmanınızın ihtiyaç duyduğunuz IO performansını sağlama görevine bağlı olduğundan emin olmanız yeterlidir .


7
+1 Belirtildiği gibi, kaynakların göreve bağlı olması konusunda kritik. Disk bizim için büyük bir tıkanıklıktı ve dikkatli bir planlama yapmak gerekiyor.
Dave M,

2
+1 Ödevinizi vaktinden önce veritabanı kullanımı ile yapmanız gerekiyor . Fiziksel kutunuz% 40 kullanım oranının üzerine çıkarsa, vm'lemenin avantajlarınız dağılmaya başlar. Bu, vm'lerde sorunsuzca çalışan, tonlarca uygulamaya özel izole edilmiş sql'lerin çalıştığını söylüyor. Ancak büyük ağır kullanım makinelerimiz, avantaj eksikliğinden dolayı özel donanımlara sahiptir.
Nate

5
Kesinlikle Disk GÇ büyük bir suçlu ve sanallaştırılmış ortamların lapa lapa olma eğiliminde olduğu.
lynxman

1
@lynxman - Kabul edildi. Tüm Oracle örneklerimizi 15k SAS olan Tier 1 SAN disklerimizde çalıştırıyoruz. Söyleyebileceğim kadarıyla, yakın yerel performansa çok yaklaşıyoruz.
EEAA

10
“Bir ons test, bir pound tahmin etmeye değer.”
Chris B. Behrens,

21

ErikA'nın dediği gibi, bu gittikçe yaygınlaşıyor. SQL Server kampındayım ve kişisel olarak VM'lerde çalışan herhangi bir üretim sistemim yok, ancak tereddüt etmem (konuyla ilgili biraz daha çalışmanın ardından). Bu yolda ilerlemeden önce mutlaka göz önünde bulundurmanız gereken bazı şeyler vardır (en azından SQL Server için). Disk IO (diğerlerinin belirttiği gibi) ve bellek ayırma sadece 2 örnektir. Farklı hipervizörler arasında da her şey farklı olacak.

Brent Ozar, özellikle VMWare'de SQL Server'ı sanallaştırmakta tanınmış bir uzmandır. Materyali okumanı şiddetle tavsiye ederim.

http://www.brentozar.com/community/virtualization-best-practices/


11

Orada olabilir ve sonra gerekir . Bir corvette 150 mil gidebilir, ama halk otoyollarında mısın? Gereksiz yere kendinize zarar verebilirsiniz.

Veritabanları konuk işletim sistemleridir. Tasarım başladığında bir kaynağın bloklarını kaparlar ve performans nedenleriyle doğrudan yönetirler. Veri tabanı sunucusunun çekirdek işletim sistemini sanallaştırılmış bir barındırma ortamında misafir haline getirdiğiniz anda, hipervizör ile disk ve RAM'in ayrılmış blok elemanı ile veritabanı sunucusu arasında bir arabuluculuk katmanı yerleştiriyorsunuz. Yavaşlayacak. Sorgularınız ne kadar verimli olursa, o kadar yavaşlar. Bu verimsizlikler bugün adanmış donanıma göre maskelenebilir, ancak bağımlı kaynağınıza tahkim sağladığınız anda çok hızlı bir şekilde öğreneceksiniz.

Sanallaştırma talep eden birçok fasulye sayacının ne anlama geldiği, konuk işletim sistemleri olarak veritabanı sunucularının kendi konsolidasyon katmanlarını sunduklarıdır. Hizmetlerin bu doğal bir şekilde birleştirilmesine izin vermek için tek bir fiziksel sunucudaki birden fazla mantıksal veritabanı örneğini, hareketli IP adresleri, ek ana bilgisayar adları vb. Ve bu model ile sadece yönetimin daha az sayıda fiziksel ana bilgisayar için zorladığı maliyet tasarrufunu elde etmekle kalmaz, aynı zamanda keyfi hiper denetimcinin engellemeden fiziksel kaynaklara erişimini engellersiniz; diğerleri.

Aynı şey, Java gibi diğer konuk işletim sistemleri için de geçerlidir. Sanallaştırma çözümleri genellikle meşgul ortamlardır ve hipervizör, kaynak üzerinde "belirteç alan" konusunda çok fazla karar vermek zorundadır. İstediğin zaman bu katmanı ortadan kaldırabilirsin, daha iyi olacaksın.

Önce doğal konuk işletim sistemi katmanını kullanarak birden fazla örneği bir araya getirin. Olasılıklar platform konsolidasyonunuza ve performans hedeflerinize daha kolay ulaşabileceksiniz.


4
"Misafir işletim sistemi" nin ilginç tanımı. Saf, zahmetsiz performans konusunda amacınız dikkate alınsa da, veritabanlarınız CPU'da ne sıklıkta tıkanıyor? G / Ç çok daha muhtemeldir ve yüksek performanslı uygulamalar için zaten bir SAN'da G / Ç zamanını paylaşıyorsunuzdur. Bir uygulamadaki bir güvenlik sorunu tüm konsolide veritabanlarınızın şifre karmaşalarını tehlikeye attığında veya JVM'nizde çalışan bir işlem kullanılabilir yığın alanın her bir baytını tükettiğinde sanallaştırma felsefenizi yeniden gözden geçirmenizi umuyorum.
Shane Madden

5
Açıkçası, hassas bir şekilde ayarlanmış, çok yoğun, yüksek performanslı bir veritabanı sunucusunun kendi fiziksel donanımına sahip olması gerektiğine tamamen katılıyorum. Ancak bunlar norm değildir ve sanallaştırmanın diğer yararları, çoğu iş yüküyle ayırt edilemeyen performans vurumundan ağır basma eğilimindedir.
Shane Madden

3
Her zaman önce mevcut konsolidasyon katmanlarına gitme konusundaki amacınıza katılmıyorum. Bazen bu mantıklı. Ancak, örneğin, tek bir işletim sistemi üzerinde birden fazla veritabanını birleştirmek ve bir hipervizörün üzerinde birden fazla veritabanı / işletim sistemi kombinasyonunu birleştirmek arasında kaynakları yeniden dengelemenin maliyetindeki dengeye bakın. Birincisi daha verimli. İkincisi yeniden dengelemek için çok daha kolaydır. Yeni bir ana bilgisayara göç etmek ve işletim sistemi / veritabanı, bir veritabanını yeni bir işletim sistemine geçirmekten çok daha az rahatsız edicidir.
Jake Oshins

Yorumlarım, geçtiğimiz on yıl boyunca bir performans mühendisi olarak başarılı ve başarısız göçlerin sanallaştırma çözümlerine doğrudan sahadaki gözlemlerinden geliyor. Donanım maskeleri kullanımında performans sorunlarına yol açan kötü tonlarca kötü amaçlı yazılım uygulaması var. Sanallaştırma ekleyin ve bu konular ortaya çıkıyor. Zamanlama veya denetim için kesin bir saat isteyen bir uygulamanız varsa, o zaman saat yazılım sanallaştırmasında yüzerek avdan çıkarsınız.
James Pulley

1
Vay, sadece vay James. Cevabınızda verdiğiniz tüm puanları ve sonraki yorumları çöpe atmaya vaktim ya da sabrım yok, ancak bu cevabın başına gelebilecek herhangi biri için bir yorum bırakmam gerektiğini hissettim. James'in görüşleri, kendi düşünceleridir ve gerçekte neyin mümkün olduğunu yansıtmaz. Aboneliğinizi aboneliğinizde elbette düşük performansınız olur. Yani abonelikten çıkma. Çok yüksek performanslı bir sanallaştırma ortamına sahip olmak mükemmel bir şekilde mümkün. “Kötü bir performans sergilediği için” battaniye önerisi yapmak aptalca.
EEAA

6

Burada gerçekleştirilmesi gereken iki şey var:

  • Donanım birimi başına DB performans birimi sanallaştırılmış bir db için biraz daha düşüktür. Bu, aynı performans seviyesini elde etmek için biraz daha fazla donanım satın almanız gerektiği anlamına gelir.
  • Bu aynı seviye anlamına gelmez veya istenen performans seviyesinin elde edilemez olduğu anlamına gelmez. Genellikle gelişmiş yönetim ve (daha kolay HA) gibi diğer faydalarından Alacağınız kazançlar yolu marjinal artış donanım maliyetlerini izale etti.

Sql Server kurulumumun çalıştığı yerde, yakın zamanda herhangi bir zamanda sanallaştırma niyetimde bulunmadığım sadece iki sunucudan biri (diğeri birincil DC).


4

SQL Server'ı çalıştırmak, VM'nizi uygulamanızı çalıştırmak için yeterli kaynak sağlayabilmeniz koşuluyla iyi olacaktır. Fiziksel dünyada 24 çekirdeğe ve 256 GIG RAM'e ihtiyacınız varsa, sanal dünyada 24 vCPU'ya ve 256 GIG RAM'e ihtiyacınız olacaktır.

Sadece geçen ay SQL Server dergisi VMware'in vSphere yazılımı altında SQL Server'ın çalıştırılmasıyla ilgili bir makale yazdım .


2

Bir PostgreSQL ve diğer MySQL olmak üzere iki veritabanını dom0'ların yüksek oranda bulunduğu sanal bir ortamda (Xen) çalıştırıyorum. domU dosya sistemlerinin tümü, LVM2 mantıksal birimleri ile oyulmuş bir iSCSI SAN LUN'da bulunur. MySQL veritabanı yalnızca Cacti'ye yöneliktir ve bu nedenle çok fazla kullanım görmez ve iSCSI LUN'da da bulunur.

PostgreSQL veritabanı, evreleme ortamımızın veri tabanıdır ve bu nedenle MySQL db'den daha yüksek yararlanmaktadır. Bu nedenle, veritabanı yerel bir RAID10 setinde bulunur ve DRBD ikinci küme düğümüne çoğaltılır. Ancak, gerçek yük açısından, bu evreleme veritabanı hiç çok yüksek bir yük görmüyor. Bu bence, sanallaştırmayı iyi / harika bir aday yapıyor.

Kuruluşumuzun yararlarından bazıları, düşük güç tüketimi, daha az raf alanı ve daha az donanım idari masrafı idi.

Ana üretim veritabanımız ise sanal olmayı hayal edemiyorum.


2

MSSQL ve MySQL sunucularında çok sayıda sunucu üzerinde çalışıyorum. Birkaç yıl önce, VM'lerde SQL sunucularını kurmakta tereddüt ettim çünkü bir VM'de bir SQL sunucusunu çalıştırmanın performans sorunlarını duymuştum. Bununla birlikte, ilk SQL serverlarımı kurduktan ve performansta bir değişiklik olmadığını gördükten sonra şaşırdım. Çalıştığım sunucuların çoğu ve daha fazlası VM'de ve çalıştığım büyük kurumsal istemcilerin neredeyse hepsinde SQL sunucularına neredeyse erişildi.

Evet, VM bir miktar ek maliyet ekler ve tek bir kutuda birden fazla VM barındırıyorsanız, güzel bir etli sunucuya ihtiyacınız olacaktır. Dikkat edilmesi gereken genel bir kaynak sorunu, ek VM'ler eklemek ve mevcut kaynakları incelemek. Bazı büyüme planlaması yaygın bir uygulamadır, ancak sunucunuzu 2 veya 3 VM'yi barındırmak için satın aldıysanız ve şimdi çalışan 10 VM'yi çalıştırıyorsanız, muhtemelen bir performans hitini göreceksiniz.

VM'de bir SQL sunucusunda çalışan performans sorunlarını hiç görmediğimi söylersem yalan söylemiş olurum. Ancak, düşük performans görüyorsanız, çevre ile ilgili muhtemelen bir sorun olduğunu öğrendim.

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.