ข้อดี / ข้อ จำกัด ของ Amazon RDS เทียบกับ EC2 กับ MySQL คืออะไร [ปิด]


132

ฉันตระหนักถึงความแตกต่างพื้นฐานสองสามประการระหว่างสองสิ่งนี้คือ

  1. EC2 จะมีราคาถูกลง

  2. RDS ฉันจะไม่ต้องทำการบำรุงรักษา

นอกเหนือจากสองข้อนี้มีข้อดีหรือไม่ในการเรียกใช้ฐานข้อมูลของฉันจาก RDS ซึ่งต่างจากเซิร์ฟเวอร์ EC2 แยกต่างหากที่ทำหน้าที่เป็นเซิร์ฟเวอร์ MySQL สมมติว่าขนาดอินสแตนซ์ใกล้เคียงกันทั้งสองจะพบข้อ จำกัด เดียวกันในแง่ของความสามารถในการรองรับโหลด

เพื่อให้ข้อมูลเพิ่มเติมเกี่ยวกับการใช้งานของฉันฉันมีฐานข้อมูลไม่มีอะไรใหญ่เกินไปหรืออะไรเลย (ตารางที่ใหญ่ที่สุด 1 ล้านแถว) มีเพียงปริมาณ SELECT ที่สูง


เพียงเพิ่มวิธีการสำรองข้อมูลที่สอดคล้องกันของ ec2 alestic.com/2009/09/ec2-consistent-snapshotฉันใช้เครื่องมือนั้นกับเซิร์ฟเวอร์ 300GB และฐานข้อมูลประมาณ 5,000 แห่ง ในเวลานี้ด้วยปริมาณ 3000 IOPS จะใช้เวลาประมาณ 1.2 ชั่วโมงในการเริ่ม mysql เนื่องจากเริ่มจากการปิดระบบที่ไม่สะอาดดังนั้น mysql จึงต้องสแกนทุกตาราง
jozwikjp

มีการทำซ้ำข้ามไซต์ที่dba.stackexchange.com/questions/34525/…ซึ่งมีคำตอบที่ดี
Mark Amery

คำตอบ:


135

นี่เป็นคำถามง่ายๆที่มีคำตอบที่ซับซ้อนมาก!

กล่าวโดยย่อ: EC2 จะให้ประสิทธิภาพสูงสุดหากคุณใช้ RAID0 EBS การทำ RAID0 EBS ต้องใช้ค่าใช้จ่ายในการบำรุงรักษาจำนวนมากตัวอย่างเช่น:

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

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

EC2 ที่ไม่มี RAID0 EBS จะให้ประสิทธิภาพ I / O ที่เส็งเคร็งจึงไม่ใช่ตัวเลือก

RDS จะให้ประสิทธิภาพที่ดีมาก (แม้ว่าจะไม่สูงสุด) นอกกรอบ คอนโซลการจัดการนั้นยอดเยี่ยมและง่ายต่อการอัปเกรดอินสแตนซ์ ความพร้อมใช้งานสูงและอ่านเฉพาะทาสเพียงไม่กี่คลิก มันยอดเยี่ยมจริงๆ

คำตอบสั้น ๆ : ไปกับ RDS ยังอยู่ในรั้ว? ไปกับ RDS !!! หากคุณสนุกกับอาการปวดหัวและปรับแต่งทุกๆเล็กน้อยเพื่อประสิทธิภาพสูงสุดคุณสามารถพิจารณา EC2 + EBS RAID 0 ได้ Vanilla EC2 เป็นตัวเลือกที่แย่มากสำหรับโฮสติ้ง MySQL


1
คำตอบที่ดี. นี่คือสิ่งที่ฉันต้องการจริงๆ : aws.typepad.com/aws/2010/10/… - ขอบคุณที่นำทางฉันไปในทิศทางที่ถูกต้อง
Macgyver

คำตอบที่ดี. คุณจัดการกับการหยุดทำงาน 4 ชั่วโมงต่อสัปดาห์อย่างไร?
Tihom

8
สิ่งหนึ่งที่สำคัญที่ต้องทราบเกี่ยวกับช่วงเวลาการบำรุงรักษา 4 ชั่วโมงก็คือเซิร์ฟเวอร์ของคุณไม่ได้หยุดทำงานเป็นเวลา 4 ชั่วโมงต่อสัปดาห์! นั่นเป็นเพียงเวลาที่พวกเขาจะทำการบำรุงรักษาหากมีการบำรุงรักษาที่ต้องทำ ฉันมีเซิร์ฟเวอร์ RDS ที่ทำงานเป็นเวลาหลายเดือนโดยไม่มีเวลาหยุดทำงาน
efalcao

2
เรามีเซิร์ฟเวอร์ RDS ที่ทำงานเป็นเวลาหลายปีโดยไม่มีเวลาหยุดทำงาน ไฟดับครั้งใหญ่ครั้งหนึ่ง (ประมาณ 6 ชั่วโมง) หนึ่งครั้งทุกอย่างกลับสู่สภาวะปกติเมื่อ AWS แยกตัวออก (ฉันควรชี้ให้เห็นว่านี่เป็นอินสแตนซ์หลาย AZ แต่ล้มเหลวในการสำรองข้อมูล)
cjm2671

1
@ paulkon - เราไม่เฟลโอเวอร์ในการจำลองแบบนอกสถานที่เราใช้การเฟลโอเวอร์ RDS มิฉะนั้นการโปรโมตและอื่น ๆ กลับไปที่มาสเตอร์คนใหม่จะกลายเป็นเรื่องยุ่งยาก แบบจำลองนอกสถานที่ส่วนใหญ่มีไว้สำหรับ DR สำรองข้อมูลนอกระบบคลาวด์เช่นเดียวกับการแยกการอ่าน / เขียนสำหรับสภาพแวดล้อมการรายงาน (ระดับแอปพลิเคชันของเรารับทราบ) HTH
Ross

24

ในโพสต์นี้มีเกณฑ์มาตรฐานที่ยอดเยี่ยมระหว่าง:

  • เรียกใช้ MySql บน EC2 + EBS ขนาดเล็ก
  • เรียกใช้ MySql บน Small EC2 + EBS + ที่ปรับพารามิเตอร์ MySql
  • RDS ขนาดเล็ก

เกณฑ์มาตรฐานนั้นดีมากเนื่องจากไม่ได้เน้นเฉพาะในสภาวะที่เหมาะสมเท่านั้น (เธรดเดียว) แต่ยังอยู่ในสถานการณ์ที่สมจริงยิ่งขึ้นด้วย 50 เธรดที่กระทบฐานข้อมูล


2
เป็นเรื่องดีที่จะเผยแพร่เกณฑ์มาตรฐาน แต่โดยสุจริตผู้เขียนยอมรับในตอนท้ายว่าเขาไม่ได้ปรับแต่ง Innodb อย่างถูกต้อง (พารามิเตอร์ตัวใหญ่ที่จะเปลี่ยนคือ innodb_buffer_pool_size .... ซึ่งเขาไม่ได้ทำ)
phil_w

12

RDS ไม่ใช่ระบบความพร้อมใช้งานสูง อ่านแบบละเอียดในคำถามที่พบบ่อย RDS ในระหว่างเหตุการณ์ล้มเหลวอาจใช้เวลาถึง 3 นาทีในการเฟลโอเวอร์ Amazon เพิ่มเติมจะตัดสินใจว่าจำเป็นต้อง "อัปเกรด" อินสแตนซ์ rds ของคุณและทำการเฟลโอเวอร์ ณ จุดนั้นซึ่งจะทำให้ฐานข้อมูลของคุณล่มเป็นเวลา "ไม่เกิน 3 นาที" (ประสบการณ์ของเราคืออาจใช้เวลานานกว่านั้น)

ความพร้อมใช้งานสูงของ RDS นั้นแตกต่างจากการจำลองแบบ master - master หรือ master - slave และช้ากว่ามาก พวกเขาไม่ใช้การจำลองแบบ mysql แต่ใช้การจำลองแบบ ebs บางประเภท ดังนั้นในสถานการณ์ล้มเหลวมันจะติดตั้ง ebs บนเครื่องสำรองเริ่มต้น mysql รอให้ mysql ทำการกู้คืนความล้มเหลว (หวังว่าจะไม่มีอะไรเสียหายเกินไป) จากนั้นทำสวิตช์ DNS

ฉันหวังว่านี่จะช่วยคุณในการประเมินผล


1
การเพิ่ม read slave บน db ที่มีข้อมูล 40gb ใช้เวลามากกว่า 20 นาทีสำหรับฉัน สิ่งนี้และค่าใช้จ่ายและการขาดการอ่านทาสใน ec2 ปกติและ / หรือนอกสถานที่ที่ไม่สามารถใช้งานได้นั้นค่อนข้างไม่เหมาะสำหรับฉัน ฉันจะบอกว่า RDS นั้นดีสำหรับร้านค้าขนาดเล็กที่ไม่ต้องการเวลาตอบสนองที่มีความพร้อมใช้งานสูงและเฟลโอเวอร์ การกำจัด DBA มากกว่า IMHO
รอส

ข่าวดีที่นี่ (มี.ค. 2020) ด้วยแสงออโรราสิ่งที่ดีขึ้นมาก มันยังไม่รันระบบ master - slave แต่เนื่องจากพวกเขาได้สร้างความล้มเหลวของระบบจัดเก็บข้อมูล "บนคลาวด์" ใหม่ในตอนนี้จึงรวดเร็วมาก นอกจากนี้ยังให้ภาพรวมและการสำรองข้อมูลที่รวดเร็ว Aurora ได้กล่าวถึงข้อบกพร่องหลายประการของ RDS MySQL
Jeff Whiting

6

เราเลือกใช้อินสแตนซ์ EC2 MySQL เนื่องจากเรามีปริมาณการอ่านสูงและต้องการการจำลองแบบ Master-Slave แน่นอนคุณสามารถหมุนอินสแตนซ์ RDS หลาย ๆ อินสแตนซ์และตั้งค่าการจำลองแบบ MySQL ระหว่างกันได้ด้วยตัวเอง แต่เราใช้ Scalr.net ซึ่งจัดการให้คุณโดยใช้อินสแตนซ์ EC2

โดยพื้นฐานแล้วเราเพียงแค่บอก Scalr ว่าเราต้องการอินสแตนซ์ MySQL กี่อินสแตนซ์ที่จะช่วยให้พวกเขาตั้งค่าการจำลองแบบอัตโนมัติจัดการการเลื่อนขั้นของ Slave โดยอัตโนมัติเพื่อควบคุมหากต้นแบบถูกยกเลิกเป็นต้นมันจะทำการสำรองข้อมูลการถ่ายโอนข้อมูล SQL และภาพรวมปริมาณ EBS ของ เจ้านาย. ดังนั้นเมื่อจำเป็นต้องสร้างทาสใหม่มันจะเมานต์โวลุ่ม EBS ของสแน็ปช็อตหลักสุดท้ายโดยอัตโนมัติเพื่อเริ่มต้น DB ทาสจากนั้นเริ่มการจำลองแบบจากจุดที่เหมาะสม ชี้แล้วคลิก :) (และไม่ฉันไม่ได้ทำงานกับ Scalr หรืออะไรก็ตาม Scalr มีให้บริการเป็น Open Source หากคุณไม่ต้องการใช้บริการของพวกเขา)


โปรดทราบว่าตั้งแต่ฉันโพสต์คำตอบข้างต้น Amazon ได้แนะนำการสนับสนุนแบบจำลองการอ่านอย่างชัดเจนสำหรับอินสแตนซ์ RDS (ปัจจุบันมีเฉพาะ MySQL เท่านั้น)
DavidJ

5

เกี่ยวกับคำถามเกี่ยวกับช่วงเวลาการบำรุงรักษา หากคุณใช้ Multi-AZ RDS จะสร้างแบบจำลองสแตนด์บายในโซนความพร้อมใช้งานอื่นเพื่อให้ไม่มีเวลาหยุดทำงานในการบำรุงรักษาและคุณป้องกันตัวเองจากความล้มเหลวของโซน

นั่นคือสิ่งที่ฉันวางแผนจะทำในสัปดาห์หน้าหรือประมาณนั้น แน่นอนว่ามันจะทำให้คุณเสียค่าใช้จ่ายมากขึ้น แต่ฉันยังไม่ได้ทำอะไรเลย


4

MySQL บน EC2 เทียบกับ RDS MySQL

ข้อดีของ MySQL บน EC2 Amazon EC2 Inter Region Replication

คัดลอกสแนปชอตในภูมิภาค Amazon EC2

RAID 0 พร้อม EBS Striping ใน MySQL EC2

พื้นที่ดิสก์มากกว่า 3TB (คุณไม่จำเป็นต้องใช้สิ่งนี้สำหรับขนาดของคุณ) สามารถแนบกับ MySQL บน EC2 ได้

ข้อเสียของ MySQL บน EC2

การกำหนดค่าการตรวจสอบและการบำรุงรักษาเทียบกับ RDS

การสำรองข้อมูลจุดเวลาที่มีอยู่ใน RDS

IOPS น้อยกว่า RDS MySQL (แม้หลังจาก RAID 0) ในปัจจุบัน 10800 พร้อม 6 ดิสก์สำหรับ MySQL บน EC2 ในขณะที่ 12500 IOPS 16KB บน RDS MySQL


4

ฉันได้ทดลองใช้ RDS มาสองสามเดือนแล้วและนี่คือปัญหาบางประการที่ฉันมี:

  1. การใช้ SQL profiler นั้นยุ่งยาก เนื่องจากคุณไม่สามารถเชื่อมต่อ profiler กับเซิร์ฟเวอร์ได้โดยตรงคุณจึงต้องรันโพรซีเดอร์ที่เก็บไว้เพื่อสร้างไฟล์บันทึกที่คุณสามารถวิเคราะห์ได้ แม้ว่าพวกเขาจะให้คำแนะนำเกี่ยวกับวิธีการทำ แต่ก็ยังห่างไกลจากความเป็นมิตรต่อผู้ใช้ ฉันอยากจะแนะนำให้คุณมีผู้เชี่ยวชาญด้าน SQL ที่ได้รับการรับรองเท่านั้นที่ทำงานประเภทนี้

  2. ในขณะที่ Amazon สำรองอินสแตนซ์ของคุณคุณไม่สามารถกู้คืนฐานข้อมูลแต่ละฐานข้อมูลได้ ฉันมีแอปพลิเคชันเว็บที่มีฐานข้อมูลเฉพาะสำหรับลูกค้าหลายตัวและวิธีแก้ปัญหาของฉันคือเปิดใช้อินสแตนซ์ EC2 ที่มี SQL ทำงานอยู่เพื่อแนบกับฐานข้อมูล RDB ที่ใช้งานจริงและนำเข้าข้อมูลจากนั้นสำรองข้อมูลในอินสแตนซ์ EC2 วิธีแก้ปัญหาอื่น ๆ คือการใช้เครื่องมือของบุคคลที่สามที่สร้างสคริปต์ SQL ขนาดใหญ่ (บนเซิร์ฟเวอร์แอป) ซึ่งจะสร้างสคีมาใหม่และเติมข้อมูลกลับไปที่จุดคืนค่า


1

ฉันมีคำถามเดียวกันในสุดสัปดาห์นี้ มีช่วงเวลาหยุดทำงาน 4 ชั่วโมงต่อสัปดาห์สำหรับ RDS ที่พวกเขาทำการบำรุงรักษา RDS ดูเหมือนจะแพงกว่าถ้าคุณสามารถใช้ EC2 ขนาดเล็กได้ (นี่เป็นความจริงของอินสแตนซ์ทดสอบที่มีปริมาณการใช้งานขั้นต่ำ) ฉันไม่สามารถเปลี่ยนเขตเวลาของอินสแตนซ์ RDS ได้เนื่องจากฉันไม่มีสิทธิ์

ตอนนี้ฉันกำลังดูhttp://xeround.com/ซึ่งเป็น mysql บน EC2 โดย บริษัท อื่น พวกเขาไม่ได้ใช้ InnoDB แต่มีเอ็นจิ้นของตัวเองที่เรียกว่า IDG ฉันเพิ่งเริ่มตรวจสอบสิ่งนั้น แต่พวกเขาอยู่ในเบต้าและจะให้พื้นที่ 500MB


โปรดทราบว่าช่วงเวลาการบำรุงรักษาไม่ใช่การหยุดทำงานทุกสัปดาห์ เป็นเพียงช่วงเวลาที่ต้องทำการบำรุงรักษาหากจำเป็น: aws.amazon.com/rds/faqs/#12 นอกจากนี้โปรดดูความคิดเห็นของ @ efalcao ในคำตอบของเขาด้านบน
mpdaugherty

ดูดีมาก แต่ $$ จริงๆถ้าคุณมีข้อมูลจำนวนมากที่ xeround.com
csharp4me
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.