วิธีที่แนะนำในการสำรองฐานข้อมูล MySQL / Amazon RDS ไปยัง S3 คืออะไร


31

ฉันมีสองวัตถุประสงค์นี้:

  1. หากต้องการสำรองข้อมูลนอกสถานที่ในกรณีที่เกิดปัญหาในระดับภูมิภาคกับ Amazon Web Services
  2. เพื่อคัดลอกข้อมูลการผลิตจากบัญชีการเรียกเก็บเงินการผลิตไปยังบัญชีการเรียกเก็บเงินเบต้า

ขณะนี้ยังไม่ปรากฏว่า Amazon รองรับกรณีใช้งานทั้งสองกรณีนี้นอกกรอบ

ฉันได้เห็น mysqldump และ xtrabackup (ดูโพสต์แบบฟอร์ม ) ที่กล่าวถึง

ฉันได้เห็นกระบวนการที่ซับซ้อนมากขึ้น (เอกสารที่นี่ )

  1. เซิร์ฟเวอร์ RDS ใหม่ในบัญชีการเรียกเก็บเงินต้นทาง (prod) จะถูกปั่นออกจากการสำรองข้อมูลล่าสุด
  2. อินสแตนซ์ EC2 ใหม่จะหมุนขึ้นที่มีการเข้าถึงเซิร์ฟเวอร์ RDS ในขั้นตอนที่ 1
  3. mysqldump ใช้เพื่อสำรองข้อมูลของฐานข้อมูลนี้
  4. สำรองข้อมูลถูกคัดลอกไปยังตำแหน่งนอกสถานที่ (S3?)
  5. ในบัญชีแยกต่างหากและ / หรือภูมิภาคเซิร์ฟเวอร์ RDS ใหม่จะหมุนตัว
  6. ดัมพ์ฐานข้อมูลถูกอิมพอร์ต

เคล็ดลับและคำแนะนำได้รับการชื่นชม

คำตอบ:


22

วิธีที่แนะนำการสำรอง RDS อยู่กับการสำรองข้อมูลอัตโนมัติและภาพรวม DB DB snapshots นั้นโดยทั่วไปเหมือนกับ EBS snapshots ซึ่งถูกเก็บไว้ใน S3 เบื้องหลัง แต่มีเฉพาะในภูมิภาคเดียวกันเท่านั้น

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

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


สำหรับความต้องการในปัจจุบันของฉัน mysqldump อาจใช้ได้ ฉันไม่ได้คาดหวังชุดข้อมูลขนาดใหญ่และโดยทั่วไปฉันไม่ต้องการข้อมูลที่ย้ายเร็วเกินไป ฉันหวังว่า RDS จะสนับสนุนคุณสมบัติในการปั่นเซิร์ฟเวอร์ใหม่ออกจากภาพรวมในบัญชีอื่น อีกคุณสมบัติที่มีประโยชน์คือการนำเข้า / ส่งออกสแน็ปช็อตออกจากอเมซอนโดยใช้ S3 หรือเซิร์ฟเวอร์นำเข้า / ส่งออก อย่างไรก็ตามขอขอบคุณสำหรับคำตอบ
Peter Stephens

4
สามารถคัดลอก RDS Snapshots ไปยังภูมิภาคอื่นได้แล้ว ดูประกาศนี้และเอกสารนี้สำหรับรายละเอียด
เชลลีย์

9

ฉันมีปัญหาเดียวกัน วิธีการแก้ปัญหาของฉันคือการเขียนสคริปต์ง่ายทุบตี อย่างไรก็ตามมีข้อ จำกัด เพียงภูมิภาคเดียว

นี่คือสคริปต์ในคำถาม:

#!/bin/bash
NOWDATE=`date +%Y-%m-%d`
BACKUPNAME="$NOWDATE.sql.gz"

echo "Creating backup of database finances to $BACKUPNAME"
mysqldump user=user password=password database_name | gzip -9 > $BACKUPNAME

echo "Succesfully created database backup"

echo "Uploading backup to Amazon S3 bucket…"
s3cmd put $BACKUPNAME s3://path/to/file/$BACKUPNAME

echo "Successfully uploaded backup to S3"

echo "Deleting backup file…"
rm $BACKUPNAME

echo "Done"

ฉันขอแนะนำ - ธุรกรรมเดียวเมื่อใช้ mysqldump
1250

7

ขณะนี้ AWS RDS สนับสนุนการคัดลอกสแนปชอตข้ามภูมิภาคและข้ามบัญชีซึ่งจะช่วยให้คุณสามารถบรรลุเป้าหมายของคุณโดยใช้ RDS

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


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