MySQL / Amazon RDS veritabanını S3'e yedeklemenin önerilen yolu nedir?


31

Bunun için iki amacım var:

  1. Amazon Web Services ile bölge genelinde bir sorun yaşanması durumunda şirket dışında bir yedekleme yapmak.
  2. Üretim verilerini üretim fatura hesabından beta fatura hesabına kopyalamak için.

Şu anda, Amazon'un bu iki kullanım senaryosundan birini kutudan çıktığını desteklemiyor.

Mysqldump ve xtrabackup ( form yazı bakın ) belirtilen gördüm .

Ayrıca daha karmaşık bir süreç gördüm ( burada belgelenmiştir )

  1. Kaynak fatura hesabındaki (prod) yeni bir RDS sunucusu, son bir yedeklemeden başlatıldı.
  2. 1. adımda RDS sunucusuna erişimi olan yeni bir EC2 örneği başlatıldı.
  3. mysqldump bu veritabanının yedeğini almak için kullanılır.
  4. Yedekleme, çevrimdışı bir konuma (S3?) Kopyalanır.
  5. Ayrı bir hesap ve / veya bölgede, yeni bir RDS sunucusu açılır.
  6. Veritabanı dökümü alınır.

İpuçları ve önerileriniz için teşekkür ederiz.

Yanıtlar:


22

RDS'yi yedeklemenin önerilen yolu otomatik yedeklemeler ve DB anlık görüntüleridir . DB anlık görüntüleri temel olarak S3'te sahnelerin arkasında depolanan EBS anlık görüntüleri ile aynıdır, ancak yalnızca aynı bölgede kullanılabilir.

Eğer bölgeler arası hata toleransına (iyi plan!) İhtiyaç duyarsanız , bir mysqldump'tan "zor yoldan" yapmadan verilerinizi başka bir bölgeye geri yüklemenin bir yolu yoktur . Alternatifleriniz, mysqldump kullanarak (makul büyüklükteki veri kümeleri için yavaş ve korkunç) kullanarak yedekleme yapmak veya kendi EC2 tabanlı kölenizi başka bir bölgeye kurmak ve mevcut herhangi bir yöntemi (xtrabackup, EBS anlık görüntüleri, vb.) Kullanarak geri almaktır. Ancak, o zaman kendi MySQL örneklerinizi yönetmeye geri dönersiniz, bu nedenle RDS'yi tamamen bırakabilirsiniz.

Param için, RDS kesinlikle hiçbir şekilde hiçbir fayda sağlamaz ve performans, esneklik ve güvenilirlikte bir çok dezavantaj sağlar. RDS'nin size sağladığı değeri kendinize soruyorum.


Mevcut ihtiyaçlarım için mysqldump işe yarayabilir. Büyük veri kümeleri beklemiyorum ve genellikle verilerin çok hızlı bir şekilde taşınmasına gerek duymuyorum. RDS'nin başka bir hesaptaki anlık görüntüden yeni bir sunucuyu döndürme özelliğini destekleyeceğini umuyorum. Diğer bir kullanışlı özellik, anlık görüntüleri S3 veya İçe / Dışa Aktarma sunucusunu kullanarak Amazon dışına almak / dışa aktarmaktır. Neyse, cevap için teşekkürler.
Peter Stephens

4
RDS Anlık Görüntüler şimdi diğer bölgelere kopyalanabilir. Ayrıntılar için bu duyuruya ve bu dokümantasyona bakınız.
shelley

9

Ben de aynı sorunu yaşadım. Benim çözümüm basit bir bash betiği yazmaktı . Bununla birlikte, tek bir bölge ile sınırlıdır.

İşte söz konusu senaryo:

#!/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"

Tavsiye ederim
user1250

7

AWS RDS artık hedeflerinizi yalnızca RDS kullanarak tamamlamanıza izin verecek anlık görüntülerin bölgeler arası ve hesaplar arası kopyalanmasını destekliyor .

Bu noktada S3'e yedekleme yapmak için hala bir döküm betiği yöntemi kullanmanız gerekiyor. S3-IA veya Glacier'ı kullanabilme kabiliyeti, RDS yedekleme maliyetleri S3 Standard veya daha yüksek olduğu için (db'ye göre değişir) maliyet tasarrufu açısından iyi olacaktır.


1
Hesap başına, bölge başına 100 manuel anlık görüntü için yumuşak bir sınır vardır.
Jude
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.