ฉันเป็นแฟนตัวยงของ AWS โดยทั่วไป ... แต่ RDS ก็ไม่มาก
@RolandoMySQLDBA ได้ชี้ให้เห็นว่ามีบางจุดที่ดีงามกับมัน
ข้อได้เปรียบเพียงอย่างเดียวที่ฉันเห็นใน RDS เมื่อเทียบกับ MySQL บน EC2 คือความสามารถในการทำชี้และคลิกภาพรวมโคลนและการกู้คืน ณ เวลา แต่สิ่งเหล่านี้ไม่เพียงพอที่จะชดเชยการสูญเสียการควบคุมและความยืดหยุ่น แน่นอนที่สุดไม่ได้ปรับราคาให้สูงขึ้น RDS มีความเซ็กซี่ในบางวิธี แต่ในที่สุดคุณก็ไม่สามารถไว้วางใจในสิ่งที่คุณไม่สามารถแก้ไขได้ในที่สุดเพราะคุณไม่สามารถไปยังส่วนที่เคลื่อนไหวทั้งหมดได้
ฉันไม่ชอบไม่มีSUPER
สิทธิ์ ฉันไม่ชอบที่ไม่สามารถจัดทำบันทึกข้อผิดพลาด ฉันไม่ชอบที่จะไม่สามารถเรียกใช้ "top" หรือ "iostat" บนเซิร์ฟเวอร์ฐานข้อมูลของฉันเพื่อดูว่าแกนและไดรฟ์เพลิดเพลินกับการโหลดอย่างไร ฉันไม่ชอบที่จะไม่เข้าถึงเอนจินการเก็บข้อมูลส่วนกลาง ฉันไม่ชอบความคิดที่จะจ่ายเงินให้กับเครื่องสำรองข้อมูลหลักแบบสแตนด์อะโลน (หลาย AZ) ที่ฉันไม่สามารถใช้เป็นแบบจำลองการอ่านได้ แน่นอนว่ามีคำอธิบายที่สมเหตุสมผลอย่างสมบูรณ์แบบว่าทำไมข้อ จำกัด ทั้งหมดเหล่านี้จึงต้องมีไว้เพื่อให้ MySQL สามารถทำการบรรจุและขายได้อย่างสมบูรณ์ในรูปแบบ RDBMS ในกล่อง สิ่งเดียวคือ RDBMS-in-a-box "แก้ปัญหา" ทั้งชุดที่ฉันไม่มี ... และเข้ามาทำให้เกิดปัญหาใหม่
แต่ตัวจัดการที่ดีที่สุดสำหรับฉันด้วย RDS คือการไม่สามารถเข้าถึงบันทึกและการจำลองแบบไบนารีได้อย่างสมบูรณ์ Binlogs โดยเฉพาะอย่างยิ่งแถวที่ใช้เป็นเครื่องมือการกู้คืนที่ยอดเยี่ยมสำหรับภัยพิบัติเล็ก ๆ น้อย ๆ แต่พวกเขาจะไม่ช่วยให้คุณถ้าคุณไม่สามารถเข้าถึงพวกเขา ต้องการกำหนดค่าเซิร์ฟเวอร์ในสถานที่ที่สำนักงานของคุณเป็นแบบจำลองการอ่านของฐานข้อมูลการผลิตของคุณใน RDS หรือไม่? มีบางสิ่งที่ต้องใช้การสำรองข้อมูลในท้องถิ่นจากการรายงานมีการกู้คืนระบบจากภัยพิบัติหากมีสิ่งใดที่คิดไม่ถึงเกิดขึ้นกับข้อมูลของคุณที่อาศัยอยู่ใน RDS นั่นเป็นความคิดที่ชัดเจนและยอดเยี่ยมพร้อมกัน
โอ๊ะโอขออภัยไม่สามารถเข้าถึงการจำลองแบบได้โดยตรง แน่นอนว่าคุณสามารถจ่ายสำหรับการอ่านซ้ำ ... แต่เป็นอินสแตนซ์ RDS อื่นเท่านั้น ไม่ใช่คุณค่าในหนังสือของฉัน
อัปเดต: การเปลี่ยนแปลงที่สำคัญหนึ่งใน RDS สำหรับ MySQL 5.6
ฉันยังคงต้องการใช้เซิร์ฟเวอร์ของตัวเอง (แม้ใน EC2) เมื่อเทียบกับการทำงาน RDS สำหรับจำนวนของเหตุผลรวมถึงการขาดการสนับสนุนสำหรับฟังก์ชั่นที่ผู้ใช้กำหนดไม่สามารถที่จะใช้สหพันธ์เก็บโปรแกรมและไม่สามารถที่จะมีหนึ่ง มีการเชื่อมต่อพิเศษสำหรับการเข้าถึงฉุกเฉิน ... อย่างไรก็ตาม ...
อเมซอนได้ทำการเปลี่ยนแปลงที่สำคัญใน MySQL 5.6 สำหรับ RDS ที่กำจัดหนึ่งในการคัดค้านที่สำคัญของฉัน - บางทีการคัดค้านที่ใหญ่ที่สุดของฉัน: ขณะนี้สามารถเข้าถึงบันทึกไบนารีและคุณสามารถเรียกใช้อินสแตนซ์ที่ไม่ใช่ RDS เป็นทาสหรือเชื่อมต่อสาธารณูปโภคอื่น ๆ เซิร์ฟเวอร์ที่อ่านสตรีม binlog
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Exporting.NonRDSRepl.html
เอกสารระบุอย่างเป็นทางการว่าพวกเขากำลังเปิดเผยสิ่งนี้เพื่อให้คุณสามารถตั้งค่าทาสเพื่อการโยกย้ายสด - คุณซิงโครไนซ์เซิร์ฟเวอร์หลักในอนาคตจากต่างประเทศจากอินสแตนซ์ RDS ที่มีอยู่โดยใช้mysqldump
จากนั้นเชื่อมต่อกับ RDS เพื่อรับฟีดข้อมูลสดของการอัปเดตผ่านสตรีมการจำลองแบบจนกว่าแอปพลิเคชันของคุณจะถูกย้ายไปยังต้นแบบใหม่ - แต่ไม่เป็นทางการคุณสามารถทำสิ่งนี้ได้อย่างต่อเนื่องตราบใดที่คุณไม่คาดหวังว่า สำหรับฉันดูเหมือนว่าสมเหตุสมผล
สิ่งนี้ได้รับการยืนยันในการสัมมนาผ่านเว็บเมื่อเร็ว ๆนี้ในการสนทนาที่เริ่มต้นที่ประมาณ 56:45:
"คุณสามารถเก็บไว้ในสถานะที่จำลองแบบไม่สิ้นสุด ...
"... ตราบใดที่คุณรับผิดชอบในการรักษาการจำลองแบบ ... "
"เราไม่ได้ป้องกันไม่ให้คุณทำการจำลองแบบต่อเนื่องหากนั่นคือสิ่งที่คุณต้องการ"
ความสามารถใหม่นี้ก็เพียงพอแล้วสำหรับฉันที่จะคัดค้านผ้าห่มของฉันที่จะใช้ RDS ในอินสแตนซ์ MySQL ที่สนับสนุนเว็บไซต์ของเราซึ่งเราไม่ได้ใช้FEDERATED
หรือสิ่งอื่น ๆ
ดังนั้นฉันยังคงไม่ชอบมัน แต่ฉันไม่ได้ต่อต้านอีกต่อไปเนื่องจากการมีสตรีมสดของบันทึกไบนารีทำให้ฉันกลับมาควบคุมข้อมูลในเวลาจริงและรับผิดชอบในการรับรองว่าไม่มีธุรกรรมใด ๆ การสูญเสียในเหตุการณ์ภัยพิบัติกลับมาพร้อมกับฉันเพราะฉันในฐานะ DBA กลับมาอยู่ในการควบคุม - ซึ่งเป็นสิ่งที่ฉันต้องการ มีผู้ขายบุคคลที่สามที่จะชี้นิ้วหรือยื่นฟ้องหรืออะไรก็ตามที่ไม่ได้รับข้อมูลที่หายไปของคุณกลับมาถ้ามันหายไปลงหลุมดำในกล่องดำ
ฝ่ายบริหารดูเหมือนจะชอบ "ความคิด" ของ RDS และไม่คัดค้านความแตกต่างของราคาดังนั้นเราจึงเปิดตัวเว็บไซต์ใหม่ทั้งหมดที่มี RDS อยู่ด้านหลัง
ฉันยอมรับว่าการกู้คืนจุดและการคลิกในเวลานั้นเป็นคุณสมบัติที่ดีใน RDS ... มันไม่ได้เปลี่ยนแปลงหรือรบกวนเครื่องที่คุณมีอยู่ - แต่มันจะทำให้เกิดอินสแตนซ์ใหม่ทั้งหมดโดยใช้การสำรองข้อมูล ใกล้เคียงกับเวลาที่เลือกมากที่สุดจากนั้นนำ binlogs ที่จำเป็นไปใช้เพื่อนำเครื่องใหม่ไปยังจุดที่คุณระบุไว้
เกี่ยวข้องกับสิ่งนี้ แต่ในอีกทางหนึ่งตอนนี้ก็เป็นไปได้เช่นกันที่จะใช้กลยุทธ์ที่คล้ายกันในการย้ายฐานข้อมูล MySQL แบบสดไปยัง RDS ... คุณสามารถเชื่อมต่อต้นแบบ RDS ได้ (โดยทั่วไปแล้ว อินสแตนซ์) เป็นทาสของระบบที่มีอยู่เพื่อให้อินสแตนซ์ RDS มีข้อมูลสดในขณะที่คุณย้ายข้อมูล ซึ่งแตกต่างจากการเข้าถึง RDS binlogs สำหรับการจำลองแบบขาออกซึ่งใช้งานได้เฉพาะใน 5.6 เท่านั้นการจำลองแบบขาเข้าได้รับการสนับสนุนใน RDS ที่ขึ้นต้นด้วย 5.5.33 และ 5.6.13