Apa kelebihan / keterbatasan masing-masing dari Amazon RDS vs EC2 dengan MySQL? [Tutup]

132

Saya menyadari beberapa perbedaan mendasar antara keduanya, yaitu

  1. EC2 akan menjadi lebih murah

  2. RDS saya tidak perlu melakukan perawatan

Selain kedua, apakah ada keuntungan untuk menjalankan database saya dari RDS sebagai lawan dari server EC2 terpisah yang bertindak sebagai server MySQL. Dengan asumsi ukuran instance yang serupa, apakah keduanya akan mengalami keterbatasan yang sama dalam hal dapat menangani beban?

Untuk memberi Anda sedikit lebih banyak info tentang penggunaan saya, saya punya database, tidak ada yang terlalu besar atau apa pun (tabel terbesar 1 juta baris), volume SELECT tinggi.

Macgyver
sumber
Hanya menambahkan pada metode cadangan konsisten EC2. alestic.com/2009/09/ec2-consistent-snapshot Saya menggunakan alat itu dengan server 300GB dan sekitar 5.000 basis data. Pada saat ini dengan volume 3000 IOPS, dibutuhkan sekitar 1,2 jam untuk memulai mysql karena dimulai dari shutdown yang tidak bersih sehingga mysql harus memindai setiap tabel.
jozwikjp
Ada duplikat lintas-situs di dba.stackexchange.com/questions/34525/… yang mendapat beberapa jawaban bagus.
Mark Amery

Jawaban:

135

Ini adalah pertanyaan sederhana dengan jawaban yang sangat rumit!

Singkatnya: EC2 akan memberikan kinerja maksimum jika Anda menggunakan RAID0 EBS. Melakukan RAID0 EBS memerlukan biaya overhead perawatan yang cukup signifikan, misalnya:

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

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

EC2 tanpa RAID0 EBS akan memberikan kinerja I / O jelek, sehingga bahkan bukan pilihan.

RDS akan memberikan kinerja yang sangat baik (meskipun tidak maksimal) di luar kotak. Konsol manajemen fantastis dan mudah untuk memutakhirkan instance. Ketersediaan tinggi dan hanya budak yang dibaca hanya dengan sekali klik. Ini SANGAT mengagumkan.

Jawaban singkat: Gunakan RDS. Masih di pagar? Pergilah dengan RDS !!! jika Anda menikmati sakit kepala dan menyetel setiap bit terakhir untuk kinerja maksimum, maka Anda dapat mempertimbangkan EC2 + EBS RAID 0. Vanilla EC2 adalah opsi yang mengerikan untuk hosting MySQL.

efalcao
sumber
1
Jawaban yang bagus. Inilah yang persis saya inginkan: aws.typepad.com/aws/2010/10/... - Terima kasih telah memimpin saya ke arah yang benar
Macgyver
Jawaban yang bagus. Bagaimana Anda menangani downtime 4 jam per minggu?
Tihom
8
Satu hal yang penting untuk diketahui tentang jendela pemeliharaan 4 jam adalah server Anda tidak down selama 4 jam seminggu! Saat itulah mereka akan melakukan pemeliharaan JIKA ada pemeliharaan yang harus dilakukan. Saya sudah menjalankan server RDS selama berbulan-bulan tanpa penghentian.
efalcao
2
Kami memiliki server RDS yang berjalan selama TAHUN tanpa downtime. Satu pemadaman besar (sekitar 6 jam) sekali, semuanya kembali normal begitu AWS beres. (Saya harus menunjukkan ini adalah contoh multi-AZ tetapi gagal gagal ke cadangan).
cjm2671
1
@paulkon - kita tidak gagal ke replika di luar kantor, kita menggunakan failover RDS, kalau tidak promosi dll kembali ke master baru akan menjadi rumit. Replika luar kantor terutama untuk DR out-of-cloud dan juga pemisahan baca / tulis untuk lingkungan pelaporan (tingkat aplikasi kami menyadarinya). HTH
Ross
24

Dalam posting ini ada patokan yang sangat baik antara:

  • Menjalankan MySql di EC2 + EBS Kecil
  • Menjalankan MySql pada EC2 + EBS + parameter MySql kecil yang disesuaikan
  • A RDS Kecil

Benchmark ini sangat bagus karena tidak fokus hanya dalam kondisi ideal (hanya satu utas) tetapi juga dalam skenario yang lebih realistis, dengan 50 utas menghantam basis data.

Andres
sumber
2
Sangat menyenangkan untuk menerbitkan tolok ukur, tetapi dengan itikad baik penulis mengakui pada akhirnya ia tidak benar-benar menyempurnakan Innodb (Parameter besar yang harus diubah tentu saja adalah innodb_buffer_pool_size .... yang tidak ia lakukan)
phil_w
12

RDS sebenarnya bukan sistem ketersediaan tinggi. Baca cetakan kecil di faq RDS. Selama acara failover, butuh waktu hingga 3 menit untuk failover. Amazon tambahan akan memutuskan perlu "memutakhirkan" instance rds Anda dan melakukan failover pada saat itu yang akan menurunkan basis data Anda selama "hingga 3 menit" (pengalaman kami adalah bahwa hal itu bisa memakan waktu lebih lama dari itu).

Ketersediaan tinggi RDS sangat berbeda dari replikasi master - master atau master - slave dan jauh lebih lambat. Mereka tidak menggunakan replikasi mysql tetapi menggunakan semacam replikasi ebs. Jadi dalam situasi failover itu akan me-mount ebs pada mesin cadangan, mulai mysql, tunggu mysql untuk melakukan kegagalan memulihkan (mudah-mudahan tidak ada yang rusak terlalu buruk), kemudian lakukan dns switch.

Saya harap ini membantu Anda dengan evaluasi Anda.

Jeff Whiting
sumber
1
menambahkan slave baca pada db dengan data 40GB mengambil alih 20 menit untuk saya. Ini dan biaya serta kurangnya baca-budak di EC2 reguler dan / atau offsite tidak tersedia cukup banyak pemula untuk saya. Saya akan mengatakan RDS baik untuk toko-toko kecil yang tidak membutuhkan ketersediaan tinggi dan waktu respon yang benar. Ini lebih untuk menghilangkan DBA daripada IMHO apa pun.
Ross
Berita baik di sini (Maret 2020). Dengan Aurora segalanya menjadi jauh lebih baik. Ini masih tidak menjalankan sistem master - slave tetapi karena mereka telah membuat failover sistem penyimpanan "berbasis cloud" yang baru sekarang sangat cepat. Juga menyediakan snapshot dan backup cepat. Aurora telah benar-benar mengatasi banyak kekurangan RDS MySQL.
Jeff Whiting
6

Kami memilih untuk menggunakan instance MySQL EC2 karena kami memiliki volume baca yang tinggi dan perlu replikasi master-slave. Tentu saja, Anda dapat memutar beberapa instance RDS dan mengatur replikasi MySQL di antara mereka sendiri, tetapi kami menggunakan Scalr.net, yang mengelola itu untuk Anda menggunakan instance EC2.

Pada dasarnya, kami hanya memberi tahu Scalr berapa banyak contoh MySQL yang kami inginkan untuk mempertahankannya, mengotomatiskan pengaturan replikasi, menangani kegagalan otomatis dari promosi budak untuk dikuasai jika master dihentikan, dll. Ia melakukan backup cadangan SQL dan snapshot volume EBS dari tuan. Jadi, ketika perlu membuat budak baru, secara otomatis untuk sementara memasang volume EBS dari snapshot master terakhir untuk menginisialisasi DB budak, kemudian mulai replikasi dari titik yang sesuai. Semua point dan klik :) (dan tidak, saya tidak bekerja untuk Scalr atau apa pun. Scalr tersedia sebagai Open Source jika Anda tidak ingin menggunakan layanan mereka)

DavidJ
sumber
Perhatikan bahwa sejak saya memposting jawaban di atas, Amazon telah memperkenalkan dukungan baca-replika eksplisit untuk instance RDS (saat ini hanya MySQL).
DavidJ
5

Mengenai pertanyaan jendela pemeliharaan. Jika Anda menggunakan Multi-AZ maka RDS akan membuat replika siaga di zona ketersediaan lain sehingga tidak ada waktu henti untuk pemeliharaan dan Anda melindungi diri terhadap kegagalan zona.

Itulah yang saya rencanakan untuk dilakukan pada minggu depan atau lebih. Tentu saja itu akan dikenakan biaya lebih banyak tetapi saya belum mengusahakannya.

Shin
sumber
4

MySQL pada EC2 vs RDS MySQL

Keuntungan MySQL di EC2 Amazon EC2 Antar Wilayah Replikasi

Salin Foto di seluruh wilayah Amazon EC2

RAID 0 dengan EBS Striping di MySQL EC2

Lebih dari 3TB ruang Disk (Anda tidak perlu ini untuk ukuran Anda) dapat dilampirkan di MySQL pada EC2.

Kerugian MySQL pada EC2

Konfigurasi, Pemantauan dan Pemeliharaan dibandingkan dengan RDS

Arahkan cadangan waktu yang tersedia dalam RDS

IOPS lebih rendah dari RDS MySQL (bahkan setelah RAID 0) saat ini, 10800 dengan 6 disk untuk MySQL pada EC2 sedangkan 12500 IOPS 16KB pada RDS MySQL

Harish Ganesan
sumber
4

Saya telah mencoba RDS selama beberapa bulan dan berikut adalah beberapa masalah yang saya miliki:

  1. Menggunakan SQL profiler itu rumit. Karena Anda tidak dapat menghubungkan profiler secara langsung ke server, Anda harus menjalankan beberapa prosedur tersimpan untuk membuat file log yang dapat Anda analisis. Meskipun mereka menawarkan beberapa saran tentang bagaimana hal itu dilakukan, itu jauh dari ramah pengguna. Saya hanya akan merekomendasikan bahwa Anda memiliki profesional SQL bersertifikat melakukan pekerjaan semacam ini.

  2. sementara Amazon mencadangkan instance Anda, Anda tidak dapat memulihkan basis data individual. Saya memiliki aplikasi web dengan beberapa database khusus pelanggan yang terpisah dan solusi saya adalah meluncurkan instance EC2 dengan SQL yang berjalan di atasnya untuk melampirkan ke database RDB produksi dan mengimpor data dan kemudian mencadangkannya pada instance EC2. Solusi lain adalah dengan menggunakan alat pihak ke-3 yang membuat skrip SQL besar-besaran (di server aplikasi) yang akan menciptakan kembali skema dan mengisi data kembali ke titik pemulihan.

Dihitung
sumber
1

Saya memiliki pertanyaan yang sama akhir pekan ini. Ada jendela downtime 4 jam per minggu untuk RDS tempat mereka melakukan pemeliharaan. RDS tampak lebih mahal jika Anda bisa lolos dengan mikro instance EC2. (Ini berlaku untuk instance uji yang memiliki lalu lintas minimum) Saya juga tidak dapat mengubah zona waktu instance RDS karena saya tidak memiliki izin.

Saya sekarang benar-benar melihat http://xeround.com/ yang merupakan mysql di EC2 oleh perusahaan lain. Mereka tidak menggunakan InnoDB, tetapi mereka memiliki mesin sendiri yang disebut IDG. Saya baru saja mulai menyelidiki itu tetapi mereka berada di BETA dan akan memberikan ruang 500MB.

Tihom
sumber
Perhatikan bahwa jendela pemeliharaan bukan downtime setiap minggu; hanya saat pemeliharaan akan dilakukan jika diperlukan: aws.amazon.com/rds/faqs/#12 Juga lihat komentar @ efalcao pada jawaban di atas.
mpdaugherty
Terlihat sangat keren tapi benar-benar $$ jika Anda memiliki jumlah data apa pun di xeround.com
csharp4me