MySQL için Amazon RDS vs Amazon EC2 örneğine MySQL kurulumu vs


31

İş yerimizde, tüm web sunucularımızı Amazon EC2'de barındırıyoruz ve genellikle Apache web sunucumuzla aynı kutuya kurulmuş ve onlarla iletişim kurmuş MySQL veritabanlarını kullandık localhost. Artık sistemlerimizden biri için veritabanımızı kendi sunucusuna geçirme ihtiyacımız var. İki çözüm arasında bir seçeneğim var: Amazon RDS kullanın veya yeni bir Amazon EC2 kutusu açın ve MySQL'i yükleyin.

EC2 ile aynı şirket tarafından sağlanan özel bir veritabanı hizmeti olan RDS, açıkça daha iyi bir seçenek olması gerektiği gibi görünüyor . Ancak, iki seçeneğin fiyatlandırmasına baktığımda (bkz. Http://aws.amazon.com/ec2/pricing ve http://aws.amazon.com/rds/pricing ) bir RDS sunucusunun neredeyse maliyeti olduğu görünüyor aynı özelliklere sahip bir kutu için EC2 sunucusunun iki katı.

Kendimi yedekleyebildiğime ve EC2'nin, RDS'nin gerektirdiği gibi örneği ölçeklendirme yeteneğini sunduğuna göre, EC2 yerine RDS kullanmak için hiçbir neden göremiyorum. Muhtemelen büyük bir şeyi kaçırmışım gibi görünüyor, çünkü eğer haklı olsaydım, kimse RDS kullanmazdı. Tam olarak neyi özlüyorum ve bir EC2 örneğinde kendi veritabanınızı kurmaktan RDS'nin avantajları nelerdir?


Bu soruyu sorduğumdan beri EC2 ve RDS arasındaki fiyat oranının önemli ölçüde değiştiğini belirtmekte fayda var. EC2'deki örnek çalışma süresi hala daha ucuz, ancak RDS fiyatının üçte ikisinden fazla; EC2'den RDS'ye (ya da tam tersi) geçmek, artık sunucu faturanızın iki katına (ya da yarısına kadar) demek değildir. (Tabii ki, koşullarınıza bağlı olarak, dikkat etmeye değer bir fark olabilir.)
Mark Amery

Yanıtlar:


20

Ben genel olarak büyük bir AWS hayranıyım ... ama RDS, çok değil.

@RolandoMySQLDBA, buna karşı oldukça iyi noktalar olduğuna dikkat çekti.

RDS'de EC2'deki MySQL'e kıyasla gördüğüm tek avantaj, anlık görüntüleri, klonları ve zaman içinde kurtarma işlemlerini gösterme ve tıklatma yeteneğidir, ancak bunlar kontrol ve esneklik kaybını telafi etmek için yeterli değildir ve bunlar kesinlikle fiyatın daha yüksek olmasını haklı çıkarmayın. RDS bazı yönlerden seksidir, fakat nihayetinde düzeltemeyeceğiniz şeye güvenemezsiniz, çünkü tüm hareketli parçalara erişemezsiniz.

SUPERAyrıcalıktan hoşlanmıyorum . Hata günlüğünü yerleştirememekten hoşlanmıyorum. Çekirdeklerin ve sürücülerin yükten nasıl zevk aldığını görmek için veritabanı sunucumda "top" veya "iostat" komutunu çalıştırmayı sevmem. Federal depolama motoruna erişememekten hoşlanmıyorum. Sıcak bir standyby (multi-AZ) yedek ana makine için bir okuma kopyası olarak bile kaldıramadığım bir ödeme yapma fikrini sevmiyorum. Elbette, MySQL'in başarılı bir şekilde paketlenmesi ve bir kutuda RDBMS olarak satılması için tüm bu kısıtlamaların neden olması gerektiğine dair makul makul açıklamalar var. Tek şey şu; RDBMS bir kutuda sahip olmadığım bir dizi problemi “çözüyor” ... ve yoluma giriyor ve yeni sorunlara yol açıyor.

Ancak, RDS ile benim için mutlak anlaşma kırıcı ikili günlükleri ve çoğaltma için tam erişim eksikliği. Özellikle satır tabanlı olan Binloglar, küçük felaketler için harika bir kurtarma aracıdır, ancak bunlara erişemiyorsanız size yardımcı olmaz. Ofisinizde bir şirket içi sunucuyu, RDS'deki üretim veritabanınızın bir kopyası olarak yapılandırmak ister misiniz? Yerel yedeklemeler alacak bir şey, raporlama yapmak, felaket kurtarma için elinizde bulundurulması gereken bir şey var mı? Bu aynı anda açık ve mükemmel bir fikir.

Hata! Üzgünüz, çoğaltma işlemine doğrudan erişilemiyor. Tabii ki, okuma kopyaları için ödeme yapabilirsiniz ... ancak yalnızca diğer RDS örnekleri için. Kitabımda bir değer teklifi değil.

Güncelleme: MySQL 5.6 için RDS'de Bir Önemli Değişiklik

Hala, bir takım nedenlerden ötürü için RDS çalıştırmak için destek eksikliği de dahil olmak üzere karşıt olarak (hatta EC2) kendi sunucusunu çalıştıran tercih Kullanıcı Tanımlı Fonksiyonlar , kullanımı yetersizlik Federe Depolama Engine ve yetersizlik olması birini Acil erişim için ekstra bağlantı mevcut ... ancak ...

Amazon, benim büyük itirazlarımdan birini ortadan kaldıran RDS için MySQL 5.6’da önemli bir değişiklik yaptı - belki de en büyük itirazım: ikili günlükler artık erişilebilir durumda ve RDS’li olmayan bir örneği köle olarak çalıştırabilir veya diğer yardımcı programları binlog akışını okuyan sunucu.

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Exporting.NonRDSRepl.html

Resmi olarak, belgeler canlı yayını gerçekleştirme amacıyla bir köle ayarlayabilmeniz için bunu açığa çıkardıklarını gösterir - yabancı geleceğin ana sunucusunu varolan RDS örneğinden eşzamanlı hale getirir mysqldump, sonra onu köle olarak RDS'ye bağlarsınız Başvurunuz yeni yöneticiye aktarılıncaya kadar çoğaltma akışı aracılığıyla canlı bir güncelleme yayını almak için - ancak gayri resmi olarak, sizi desteklemelerini beklemediğiniz sürece bunu sürekli olarak yapabilirsiniz ... bana göre makul görünüyor.

Bu, yeni bir Web Semineri'nde , yaklaşık 56:45'te başlayan bir konuşmada onaylandı:

“Süresiz çoğaltılmış bir durumda tutabilirsiniz ...

“... çoğaltmayı sürdürme sorumluluğunu üstlendiğin sürece ...”

“İstediğin buysa, devam eden çoğaltmayı yapmanı engellemiyoruz.”

Bu yeni özellik, benim karşı karşıya olduğum Web sitesi destekli MySQL örneklerimizde, bizim kullanmadığımız FEDERATEDya da bazı şeyleri çok fazla ya da hiç kullanmadıkça, RDS'i kullanmaya yönelik battaniye itirazımı bırakmam için yeterliydi .

Bu yüzden hala onun lehine değilim, ancak artık buna karşı değilim, çünkü ikili kütüklerin canlı yayınına sahip olmak beni gerçek zamanlı olarak verilerin kontrolüne ve işlemlerin olmamasını sağlama sorumluluğuna sokuyor. felaketle sonuçlanan bir kesintide benimle geri döndüm, çünkü ben, DBA olarak kontrole geri döndüm - tam olarak istediğim gibi. Bir üçüncü taraf satıcının parmakları işaret etmesi veya dava açması veya neye karşı dava açması, kara bir kutu içindeki bir kara delikten kaybolursa kaybolan verilerinizi geri almaz.

Yönetim, RDS’nin “fikri” gibi gözüküyor ve maliyet farkına itiraz etmiyor, bu nedenle artık tüm yeni web sitelerini RDS’nin ardında başlatıyoruz.

İşaretle ve tıkla ve anında kurtar, kabul ediyorum, RDS’de hoş bir özellik ... var olan makinenizi değiştirmiyor ya da bozmuyor - bunun yerine, tamamen yeni bir örneği çalıştırıyor, yedeklemeyi kullanarak zaman içinde seçilen noktaya en yakın zamandır ve daha sonra bu yeni makineyi belirttiğiniz zaman noktasına getirmek için gerekli binlogları uygular.

Bununla ilgili, ancak diğer yönde, şimdi, canlı bir MySQL veritabanını RDS'ye geçirmek için benzer bir strateji kullanmak da mümkün ... bir RDS yöneticisini bağlayabilirsiniz (muhtemelen, bu genellikle yeni dağıtılmış olur) örneğin) mevcut bir sistemin kölesi olarak, RDS örneği, içine taşıdığınız anda verinin canlı sürümüne sahip olacak. Yalnızca 5.6'da çalışan dışa doğru çoğaltma için RDS binloglarına erişimin aksine, içe doğru çoğaltma 5.5.33 ve 5.6.13 ile başlayan RDS'de desteklenir .


Federasyon Depolama Motorunu nasıl kullandığınızı bilebilir miyim ?
Bharat Khatri,

11

DB Sunucularını ölçeklendirmek sizin çayınız değilse, tüm çan ve ıslıklarla birlikte gelen Amazon RDS'nin kullanımı tamamdır. Sadece ılımlı HA, yedekleme ve ölçeklendirme yapmak isteyenler büyük yarar sağlıyorlar.

Kapak tarafında, donanımı büyütmek istiyorsanız, bu RDS için söz konusu değil. Ya MySQL'in yeteneklerini arttırmak istiyorsanız? Ne yazık ki, bu kişinin isteyeceği birçok konu için söz konusu değil.

Örneğin, yedi alanın (7) RDS sunucu modelinin tamamında iki alanın kapatıldığını biliyor muydunuz?

Bu iki seçenek hakkında aşağıdaki tabloya dikkat edin:

MODEL      max_connections innodb_buffer_pool_size
---------  --------------- -----------------------
t1.micro   34                326107136 (  311M)
m1-small   125              1179648000 ( 1125M,  1.097G)
m1-large   623              5882511360 ( 5610M,  5.479G)
m1-xlarge  1263            11922309120 (11370M, 11.103G)
m2-xlarge  1441            13605273600 (12975M, 12.671G)
m2-2xlarge 2900            27367833600 (26100M, 25.488G)
m2-4xlarge 5816            54892953600 (52350M, 51.123G)

SÜPER ayrıcalık verilmez ve doğrudan erişiminiz yoktur my.cnf. Bunun ışığında, my.cnfbaşlangıç ​​seçeneklerini değiştirmek için önce MySQL tabanlı bir DB Parametre Seçenek Listesi oluşturmalı ve RDS CLI (Command Line Interface)istediğiniz Seçenekleri değiştirmek için düğmelerini kullanmalısınız . Ardından, yeni seçenekleri almak için bunu yapmanız gerekir:

  • Özel Bir DB Parametre Grubu Oluşturun (arayın MySettings)
  • RDS CLI'yi indirin ve AWS Kimlik Bilgilerinizle bir yapılandırma dosyası oluşturun
  • Aşağıdakileri yürütün: ./rds-modify-db-parameter-group MySettings --parameters "name=whateveroption,value=whatevervalue,method=immediate"
  • DB Parametre Seçenek Listesini kullanarak değiştirin MySettings
  • MySQL RDS Örneğini Yeniden Başlatın

Tek değişkeni güncellemek için bir API kullanmak ve değişikliği uygulamak için RDS örneğini zorunlu olarak yeniden başlatmak mı istiyorsunuz? Bu, herhangi bir seçeneği araştırmak için oldukça acı verici bir işlem.

MySQL'i büyütmek istiyorsanız, lütfen EC2'yi kullanın. Daha sonra, my.cnfher zaman yaptığınız ve alıştığınız gibi, beğeninize cevap alabilirsiniz .

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.