MySQL ile Amazon RDS ve EC2'nin ilgili avantajları / sınırlamaları nelerdir? [kapalı]


132

İkisi arasında birkaç temel farkın farkındayım, yani

  1. EC2 daha ucuz olacak

  2. RDS Bakım yapmam gerekmeyecek

Bu ikisi dışında, MySQL sunucusu olarak hareket eden ayrı bir EC2 sunucusunun aksine veritabanımı RDS'den çalıştırmanın herhangi bir avantajı var mı? Benzer örnek boyutlarını varsayarsak, her ikisi de bir yükün üstesinden gelme açısından aynı sınırlamalarla karşılaşacak mı?

Size kullanımım hakkında biraz daha fazla bilgi vermek gerekirse, bir veritabanım var, çok büyük hiçbir şey yok (en büyük tablo 1 milyon satır), sadece yüksek SELECT hacmi.


Sadece ec2 tutarlı yedekleme yöntemini eklemek. alestic.com/2009/09/ec2-consistent-snapshot Bu aracı 300gb bir sunucu ve yaklaşık 5.000 veritabanı ile kullanıyorum. Şu anda 3000 IOPS hacmiyle mysql'yi başlatmak yaklaşık 1,2 saat sürüyor, çünkü mysql'nin her tabloyu taraması gerekiyor.
jozwikjp

Dba.stackexchange.com/questions/34525/… adresinde iyi yanıtlar alan siteler arası bir kopya var.
Mark Amery

Yanıtlar:


135

Bu, cevabı çok karmaşık olan basit bir sorudur!

Kısaca: EC2, RAID0 EBS ile giderseniz maksimum performans sağlayacaktır. RAID0 EBS yapmak oldukça önemli miktarda bakım masrafı gerektirir, örneğin:

http://alestic.com/2009/06/ec2-ebs-raid

http://alestic.com/2009/09/ec2-consistent-snapshot

RAID0 EBS'siz EC2 berbat bir I / O performansı sağlayacaktır, bu yüzden gerçekten bir seçenek bile değildir.

RDS, kutudan çıkar çıkmaz çok iyi (maksimum olmasa da) performans sağlayacaktır. Yönetim konsolu harika ve örnekleri yükseltmek çok kolay. Yüksek kullanılabilirlik ve salt okunur slave'ler bir tık uzakta. Gerçekten harika.

Kısa cevap: RDS ile gidin. Hala çitin üzerinde mi? RDS ile gidin !!! Baş ağrısından ve maksimum performans için her küçük parçayı ayarlamaktan hoşlanıyorsanız, EC2 + EBS RAID 0'ı düşünebilirsiniz. Vanilla EC2, MySQL hosting için kötü bir seçenektir.


1
İyi cevap. Tam olarak istediğim bu: aws.typepad.com/aws/2010/10/… - Beni doğru yöne yönlendirdiğiniz için teşekkürler
Macgyver

İyi cevap. Haftada 4 saatlik aksama süresiyle nasıl başa çıkıyorsunuz?
Tihom

8
4 saatlik bakım aralığı hakkında bilmeniz gereken önemli bir şey, sunucunuzun haftada 4 saat kapalı olmamasıdır! Tam da o zaman bakım yapılacaksa bakım yapacaklar. Sıfır kesinti süresiyle aylarca çalışan RDS sunucularım var.
efalcao

2
Sıfır kesinti süresiyle YILLARDIR çalışan RDS sunucularımız var. Bir kez büyük bir kesinti (yaklaşık 6 saat), AWS kendi kendine çözüldüğünde her şey normale döndü. (Bunun bir multi-AZ örneği olduğunu, ancak yedeklemeye devretmede başarısız olduğunu belirtmeliyim).
cjm2671

1
@paulkon - site dışı replikalara yük devretmeyiz, RDS yük devretme kullanırız, aksi takdirde yeni ana bilgisayara yükseltme vb. zorlaşır. Site dışı replikalar, temelde bulut dışı yedekleme DR ve raporlama ortamları için okuma / yazma bölme içindir (uygulama seviyemiz bunların farkındadır). HTH
Ross

24

Gelen bu yazı mükemmel bir kriter arasında vardır:

  • MySql'i Küçük EC2 + EBS'de Çalıştırma
  • MySql'i Küçük EC2 + EBS + ayarlanmış MySql parametrelerinde çalıştırma
  • Küçük bir RDS

Sadece ideal koşullara (yalnızca bir iş parçacığı) değil, aynı zamanda veritabanına giren 50 iş parçacığı ile daha gerçekçi senaryolara odaklandığı için kıyaslama çok iyidir.


2
Kriterleri yayınlamak güzel, ancak yazarın sonunda Innodb'u doğru şekilde ayarlamadığını itiraf etti (Değiştirilecek en büyük param elbette ki innodb_buffer_pool_size .... ki bunu yapmadı)
phil_w

12

RDS, gerçekten yüksek kullanılabilirlik sistemi değildir. RDS SSS bölümündeki küçük yazıları okuyun. Bir yük devretme olayı sırasında, yük devretme 3 dakikaya kadar sürebilir. Ek Amazon, rds örneğinizi "yükseltmesi" gerektiğine karar verecek ve bu noktada veritabanınızı "3 dakikaya kadar" devre dışı bırakacak bir yük devretme gerçekleştirecektir (deneyimlerimiz bundan daha uzun sürebileceğidir).

RDS yüksek kullanılabilirliği, ana-ana veya ana-bağımlı çoğaltmadan çok farklıdır ve çok daha yavaştır. Mysql replikasyonunu kullanmazlar ancak bir çeşit ebs replikasyonu kullanırlar. Bu nedenle, bir yük devretme durumunda, eb'leri yedekleme makinesine bağlar, mysql'i başlatır, mysql'nin hata kurtarma işlemini yapmasını bekler (umarım hiçbir şey çok kötü bir şekilde bozulmaz), sonra bir dns anahtarı yapar.

Umarım bu, değerlendirmenize yardımcı olur.


1
40 gb veriye sahip bir db üzerine bir okuma kölesi eklemek benim için 20 dakikadan fazla sürdü. Bu ve normal ec2'de ve / veya site dışında kullanılamayan okuma kölelerinin maliyeti ve eksikliği benim için hemen hemen başlangıç ​​değil. RDS'nin gerçek yüksek kullanılabilirlik ve yük devretme yanıt sürelerine ihtiyaç duymayan küçük mağazalar için iyi olduğunu söyleyebilirim. Her şeyden çok bir DBA'yı ortadan kaldırmak IMHO'dur.
Ross

İyi haber burada (Mart 2020). Aurora ile işler çok daha iyi hale geldi. Hala bir master - slave sistemi çalıştırmıyor, ancak yeni bir "bulut tabanlı" depolama sistemi oluşturdukları için, artık çok hızlı bir şekilde yenilendi. Ayrıca hızlı anlık görüntüler ve yedeklemeler sağlar. Aurora, RDS MySQL'in birçok eksikliğine gerçekten hitap etti.
Jeff Whiting

6

EC2 MySQL örneklerini kullanmayı seçtik çünkü okuma hacmimiz yüksek ve master-slave replikasyonuna ihtiyacımız var. Elbette, birden fazla RDS örneğini döndürebilir ve aralarında MySQL replikasyonunu kendiniz kurabilirsiniz, ancak EC2 bulut sunucuları kullanarak bunu sizin için yöneten Scalr.net'i kullanıyoruz.

Temel olarak, Scalr'a kaç MySQL örneğinin onları ayakta tutmasını istediğimizi söyleriz, replikasyon kurulumunu otomatikleştirir, master sonlandırılırsa master için slave promosyonunun otomatik yük devretmesini gerçekleştirir vb. Hem SQL döküm yedeklemeleri hem de EBS birim anlık görüntülerini yapar usta. Bu nedenle, yeni bir bağımlı oluşturması gerektiğinde, bağımlı DB'yi başlatmak için son ana anlık görüntünün bir EBS birimini otomatik olarak geçici olarak bağlar ve ardından uygun noktadan çoğaltmaya başlar. Hepsi işaretleyin ve tıklayın :) (ve hayır, Scalr veya başka bir şey için çalışmıyorum. Hizmetlerini kullanmak istemiyorsanız Scalr Açık Kaynak olarak mevcuttur)


Yukarıdaki cevabı yayınladığımdan beri, Amazon'un RDS örnekleri için açık bir okuma-çoğaltma desteği sunduğunu unutmayın (şu anda yalnızca MySQL).
DavidJ

5

Bakım dönemi sorusuyla ilgili olarak. Multi-AZ kullanırsanız, RDS başka bir kullanılabilirlik bölgesinde bir bekleme kopyası oluşturur, böylece bakım için kesinti süresi olmaz ve kendinizi bir bölge arızasına karşı korursunuz.

Önümüzdeki hafta falan yapmayı planladığım şey bu. Elbette size daha pahalıya mal olacak ama henüz o kadar çalışmadım.


4

EC2'de MySQL vs RDS MySQL

EC2 Amazon EC2 Bölgeler Arası Replikasyonda MySQL'in Avantajları

Anlık Görüntüleri Amazon EC2 bölgelerinde kopyalayın

MySQL EC2'de EBS Şeritli RAID 0

EC2'de MySQL'e 3 TB'tan fazla Disk alanı (boyutunuz için buna ihtiyacınız olmayacak) eklenebilir.

EC2'de MySQL'in dezavantajları

RDS'ye kıyasla Yapılandırma, İzleme ve Bakım

RDS'de bulunan zaman noktası yedeklemeleri

RDS MySQL'den daha düşük IOPS (RAID 0'dan sonra bile) şu anda EC2'de MySQL için 10800, RDS MySQL'de 12500 IOPS 16KB


4

Birkaç aydır RDS'yi deniyorum ve işte yaşadığım bazı sorunlar:

  1. SQL profil oluşturucuyu kullanmak zordur. Profilleyiciyi doğrudan sunucuya bağlayamayacağınız için, analiz edebileceğiniz bir günlük dosyası oluşturmak için bazı saklı yordamları çalıştırmanız gerekir. Bunun nasıl yapılacağına dair bazı öneriler sunsalar da, kullanıcı dostu olmaktan uzaktır. Bu tür işleri yalnızca sertifikalı bir SQL uzmanına yaptırmanızı tavsiye ederim.

  2. Amazon örneğinizi yedeklerken, tek bir veritabanını geri yükleyemezsiniz. Birkaç ayrı müşteriye özgü veritabanına sahip bir web uygulamam var ve benim çözümüm, üretim RDB veritabanına eklemek ve verileri içe aktarmak ve ardından EC2 örneğine yedeklemek için üzerinde SQL çalışan bir EC2 örneği başlatmaktı. Diğer çözüm, şemayı yeniden oluşturacak ve verileri bir geri yükleme noktasına geri yerleştirecek devasa bir SQL komut dosyası (uygulama sunucusunda) oluşturan üçüncü taraf bir araç kullanmaktı.


1

Bu hafta sonu aynı soruyu sormuştum. Bakım yaptıkları RDS için haftada 4 saatlik bir kesinti penceresi vardır. Mikro bir EC2 örneğinden kurtulabilirseniz RDS daha pahalı görünüyordu. (Bu, minimum trafiğe sahip test örnekleri için geçerlidir) İznim olmadığı için RDS örneğinin saat dilimini de değiştiremedim.

Şimdi aslında başka bir şirket tarafından EC2'de mysql olan http://xeround.com/'a bakıyorum . InnoDB kullanmıyorlar, bunun yerine IDG adında kendi motorları var. Bunu araştırmaya yeni başlıyorum ama bunlar BETA'da ve 500MB alan verecekler.


Bakım aralığının her hafta kesinti olmadığını unutmayın; Bu, gerektiğinde herhangi bir bakımın yapılacağı zamandır: aws.amazon.com/rds/faqs/#12 Ayrıca @ efalcao'nun yukarıdaki cevabına ilişkin yorumuna bakın.
mpdaugherty

Xeround.com'da herhangi bir miktarda veriniz varsa gerçekten harika görünüyor ama gerçekten harika görünüyor
csharp4me
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.