2009-03-05 23 views
9

¿Cuáles son sus experiencias al utilizar las funciones de instantáneas de Amazon EBS para las copias de seguridad en caliente de MySql?Uso de EBS de Amazon para la copia de seguridad en caliente

Tengo una base de datos que ejecuta un trabajo de procesamiento por lotes en ec2. Copio de respaldo con una instantánea de EBS. Hasta ahora, las copias de seguridad se ven consistentes. Pero me temo que "dejarán de ser constantes tan pronto como deje de controlar" (Principio de incertidumbre).

¿Cuál es su experiencia con el respaldo de bases de datos relacionales (y mysql en particular) con ebs snapshot?

Respuesta

11

He estado usando instantáneas de EBS para hacer una copia de seguridad de mi directorio de datos MySQL durante más de un año. Ha estado funcionando perfectamente. Nunca tuve un problema al utilizar estas instantáneas como base para una configuración de MySQL de reemplazo (o clonado).

La mejor práctica es formatear el volumen de EBS con un sistema de archivos que permite la congelación, como XFS. Esto le permite obtener una instantánea consistente: vacíe la memoria de MySQL en el disco, congele el sistema de archivos, la instantánea y luego descongele. Todo el proceso lleva menos de 10 segundos (pero puede llevar más tiempo cuando el DB está en uso intensivo).

Ver this article por Eric Hammond para una secuencia de comandos que hace todo esto para usted.

1

La principal preocupación que tengo al depender de las instantáneas de EBS para las copias de seguridad de la base de datos en el nivel en el que operan. Las instantáneas funcionan en un nivel muy bajo en el disco y toman una imagen independientemente del estado de las aplicaciones que escriben en ella. Teóricamente, su imagen de copia de seguridad podría estar en el medio de una transacción o algo así, lo que haría que resulte un poco incómodo restaurarlo si llegara ese momento.

3

MySQL tiene una reputación de recuperación insuficiente de estados de disco inconsistentes, XFS esencialmente pausa IO en el sistema de archivos mientras se lleva a cabo la instantánea. Normalmente, una base de datos realiza un flush() una vez que se ha creado una entrada de registro de transacciones completa que indica esencialmente un punto de control para el sistema de archivos. En el caso de un sistema de archivos de diario, esto es importante, y en su mayor parte, el sistema de archivos se recuperará hasta la última entrada de diario válida una vez montado, esto no es 100%, pero es mejor que nada. La mayoría de los sistemas de bases de datos usan el archivo de registro de transacciones para "avanzar" en la recuperación si los archivos de la base de datos están detrás de los registros de transacciones, y el motor de base de datos solo avanzará tanto como sea posible dado el contenido de los registros de transacciones. No intentará avanzar a través de una transacción parcialmente escrita. El problema aquí es que MySQL no es el mejor para lograr eso, por lo que puede ser un problema. No he encontrado una solución sólida para esto, me imagino que ejecutar un espejo, pausar MySQL mientras haces la instantánea y luego reanudar la sincronización podría funcionar, pero no sé si el espejo de MySQL puede hacer frente a un espejo que no está parcialmente disponible para un tiempo y luego ser capaz de ponerse al día sin un re-mirror completo, en cuyo caso, también podría hacer un mysqldump de todas las bases de datos ya que tendría el mismo efecto en la base de datos que ejecutar un mirror completo. Esa es la otra opción que se ejecuta mientras se me ocurre, para ejecutar un mysqldump de todas las bases de datos a una partición de respaldo y una instantánea. No le da copias de seguridad en ejecución, por lo que no puede hacerlo a menudo, y si tiene 24 horas al día, 7 días a la semana, mysqldump pone una gran carga en la base de datos mientras se ejecuta, lejos de ser óptima.

Otro motor de base de datos es mucho mejor en esto. PostgreSQL es muy bueno para recuperarse de un estado de disco incosistente hasta el punto de que no recomiendan ejecutarlo en un sistema de archivos en conjunto. También tiene la opción de archivar los registros de transacciones para que pueda avanzar desde la última copia de seguridad completa hasta cualquier punto en el que existan los registros archivados. Mucho más fácil hacer copias de seguridad consistentes con esto. Oracle le permitirá tener múltiples conjuntos de registros de transacciones que cambian entre discos físicos/particiones EBS, lo que le brinda ventanas frecuentes para tomar una instantánea consistente y la capacidad de indicar al motor de la base de datos que desea hacer esto, y no voltear de vuelta hasta que lo diga.

A lo largo de la línea de pensamiento diario, LVM tiene la capacidad de capturar instantáneamente todo el sistema de archivos en menos de un segundo. No sé si la funcionalidad de instantáneas de EBS se aprovechará de esto, aunque podría hacerlo manualmente. LVM es un poco más complicado que XFS, pero he tenido problemas con XFS en el pasado creando gran cantidad de archivos en un solo directorio donde ext3 estaba bien. LVM también tiene otros beneficios, y definitivamente vale la pena considerarlos de cualquier manera.

-1

Puede considerar el uso de Amazon RDS para gestionar sus bases de datos, funciona como un servidor MySQL estándar y, a continuación, puede culpar a Amazon si se bloquea (no lo hará). Además, hacen copias de seguridad y parchean el servidor regularmente. Moví mis instalaciones de Wordpress y vBulletin y tardé aproximadamente una hora.

¡Solo mi 2 ¢!

+0

-1 . No responde la pregunta. – talonx

1

Sugeriría usar LVM como capa abstracta para el sistema de archivos DB. como Esto obtendrá los beneficios de instantáneas locales que es como una copia de seguridad en caliente. Las instantáneas LVM tienen el beneficio de obtener resultados similares a EBS con la ventaja de usarlo en cualquier máquina (no solo en Amazon).

Otra ventaja, es que LVM puede utilizar cambio de tamaño caliente, especialmente útil cuando necesita un mínimo de tiempo y la necesidad de ampliar su espacio de disco sobre la marcha (no se recomienda , pero posible en escenarios específicos)

Cuestiones relacionadas