it-swarm.asia

Apa cara yang disarankan untuk membuat cadangan database MySQL / Amazon RDS ke S3?

Saya memiliki dua tujuan untuk ini:

  1. Untuk memiliki cadangan di luar kantor jika terjadi masalah dengan Amazon Web Services di seluruh wilayah.
  2. Untuk menyalin data produksi dari akun penagihan produksi ke akun penagihan beta.

Saat ini tampaknya Amazon tidak mendukung salah satu dari dua kasus penggunaan ini di luar kotak.

Saya telah melihat mysqldump dan xtrabackup (lihat form posting) disebutkan.

Saya juga melihat proses yang lebih rumit (didokumentasikan di sini )

  1. Server RDS baru di akun penagihan sumber (prod) diputarkan dari cadangan baru-baru ini.
  2. Contoh EC2 baru diputar yang memiliki akses ke server RDS di langkah 1.
  3. mysqldump digunakan untuk membuat cadangan dari basis data ini.
  4. Cadangan disalin ke lokasi di luar lokasi (S3?).
  5. Di akun dan/atau wilayah terpisah, server RDS baru diputar.
  6. Database dump diimpor.

Kiat dan saran sangat dihargai.

32
Peter Stephens

Cara yang disarankan untuk membuat cadangan RDS adalah dengan backup otomatis dan snapshots DB . Snapshots DB pada dasarnya sama dengan snapshot EBS, yang disimpan dalam S3 di belakang layar, tetapi hanya tersedia di wilayah yang sama.

Jika Anda memerlukan toleransi kesalahan lintas wilayah (rencana yang baik!), Tidak ada cara untuk mengembalikan data Anda di wilayah lain tanpa melakukannya "dengan cara yang sulit" dari mysqldump. Alternatif Anda adalah mencadangkan menggunakan mysqldump (lambat dan mengerikan untuk setiap dataset berukuran wajar), atau mengatur budak berbasis EC2 Anda sendiri di wilayah lain dan mendukungnya menggunakan metode apa pun yang tersedia (xtrabackup, snapshot EBS, dll.). Namun, kemudian Anda kembali untuk mengelola instance MySQL Anda sendiri, sehingga Anda mungkin juga meninggalkan RDS sepenuhnya.

Untuk uang saya, RDS sama sekali tidak memberikan manfaat dalam cara apa pun dan banyak kelemahan dalam kinerja, fleksibilitas, dan keandalan. Saya akan bertanya pada diri sendiri apa nilai RDS berikan kepada Anda.

23
Aaron Brown

Saya memiliki masalah yang sama. Solusi saya adalah menulis skrip bash sederhana . Namun terbatas pada satu wilayah saja.

Berikut skrip yang dimaksud:

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

AWS RDS sekarang mendukung lintas-wilayah dan lintas-akun menyalin foto-foto yang akan memungkinkan Anda untuk menyelesaikan tujuan Anda hanya menggunakan RDS.

Anda masih harus menggunakan metode skrip dump untuk mendapatkan cadangan ke S3 pada saat ini. Kemampuan untuk menggunakan S3-IA atau Gletser akan baik dalam hal penghematan biaya karena biaya cadangan RDS berada pada Standar S3 atau lebih tinggi (bervariasi menurut db).

7
Mike Lapinskas