¿Cuál es la forma recomendada de hacer una copia de seguridad de una base de datos MySQL/Amazon RDS a S3?

dba.stackexchange https://dba.stackexchange.com/questions/11396

Pregunta

Tengo dos propósitos para esto:

  1. Tener una copia de seguridad fuera del sitio en caso de un problema en la región con los servicios web de Amazon.
  2. Copiar datos de producción de una cuenta de facturación de producción a una cuenta de facturación beta.

Actualmente no parece que Amazon admita ninguno de estos dos casos de uso fuera de la caja.

He visto mysqldump y xtrabackup (ver forma post) mencionado.

También he visto un proceso más complicado (documentado aquí)

  1. Un nuevo servidor RDS en la cuenta de facturación de origen (PROD) se gira de una copia de seguridad reciente.
  2. Se gira una nueva instancia de EC2 que tiene acceso al servidor RDS en el paso 1.
  3. MySQLDUMP se usa para hacer una copia de seguridad de esta base de datos.
  4. La copia de seguridad se copia en una ubicación fuera del sitio (¿S3?).
  5. En una cuenta y/o región separadas, se gira un nuevo servidor RDS.
  6. El volcado de la base de datos se importa.

Se agradecen consejos y sugerencias.

¿Fue útil?

Solución

La forma recomendada de hacer una copia de seguridad de RDS es con copias de seguridad automáticas y Instantáneas de DB. Las instantáneas de DB son básicamente las mismas que las instantáneas de EBS, que se almacenan en S3 detrás de escena, pero solo están disponibles dentro de la misma región.

Si necesita tolerancia a fallas de región cruzada (¡buen plan!), No hay forma de restaurar sus datos en otra región sin hacerlo "de la manera difícil" de una mysqldump. Sus alternativas son hacer una copia de seguridad del uso de MySQLDUMP (lento y terrible para cualquier conjunto de datos de tamaño razonable), o configurar su propio esclavo basado en EC2 en otra región y respaldarlo usando cualquier método disponible (Xtrabackup, instantáneas EBS, etc.). Sin embargo, entonces está de vuelta a administrar sus propias instancias de MySQL, por lo que también podría abandonar RDS por completo.

Para mi dinero, RDS no ofrece absolutamente ningún beneficio de ninguna manera y muchas desventajas en rendimiento, flexibilidad y confiabilidad. Me preguntaría qué valor te proporciona RDS.

Otros consejos

Tuve el mismo problema. Mi solución era escribir un Script Simple Bash. Sin embargo, se limita a una sola región.

Aquí está el guión en cuestión:

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

AWS RDS ahora admite la región cruzada y la cuenta cruzada Copia de instantáneas que le permitirá completar sus objetivos simplemente usando RDS.

Todavía tiene que usar un método de script de volcado para obtener copias de seguridad a S3 en este punto. La capacidad de usar S3-IA o Glacier sería buena en términos de ahorro de costos, ya que los costos de respaldo de RDS están en estándar S3 o superior (variar en db).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top