sql >> Base de Datos >  >> RDS >> Mysql

Instantánea del volumen de EBS utilizado para la replicación

Aunque es una buena idea bloquear la base de datos y congelar el sistema de archivos cuando inicia la instantánea, la llamada API real para iniciar la instantánea tarda una fracción de segundo, por lo que su base de datos y sistema de archivos no están bloqueados/congelados por mucho tiempo.

Dicho esto, hay un par de otras consideraciones que no mencionaste:

  1. Cuando intente crear el bloqueo en la base de datos, es posible que deba esperar a que finalicen otras declaraciones antes de que se conceda el bloqueo. Durante este tiempo, su bloqueo pendiente puede generar más instrucciones para esperar hasta que obtenga y libere el bloqueo. Esto puede provocar interrupciones en el flujo de declaraciones en su base de datos de producción.

  2. Después de iniciar la creación de la instantánea, su aplicación/base de datos es libre de usar el sistema de archivos en el volumen, pero si tiene muchas escrituras, podría experimentar un alto iowait, a veces lo suficiente como para crear una ralentización notable de su aplicación. La razón de esto es que el proceso de instantáneas en segundo plano necesita copiar un bloque en S3 antes de permitir una escritura en ese bloque en el volumen activo.

Resuelvo el primer problema solicitando un bloqueo y un tiempo de espera si no se otorga rápidamente. Luego espero un poco y sigo intentando hasta que obtengo el candado. Los tiempos de espera apropiados y la demora de reintento pueden variar según las diferentes cargas de la base de datos.

Resuelvo el segundo problema realizando instantáneas frecuentes y consistentes en el esclavo en lugar del maestro, tal como lo propusiste. Sigo recomendando realizar instantáneas ocasionales contra el maestro simplemente para mejorar su durabilidad intrínseca (una propiedad profunda de EBS), pero esas instantáneas no necesitan realizarse con bloqueo o congelación, ya que no las usará para copias de seguridad.

También recomiendo el uso de un sistema de archivos que admita el vaciado y la congelación (XFS). De lo contrario, está tomando instantáneas de tablas bloqueadas en MySQL que es posible que aún no tengan todos sus bloques en el volumen de EBS u otras partes del sistema de archivos pueden modificarse y ser inconsistentes en la instantánea.

Si está interesado, he publicado un software de código abierto que realiza las mejores prácticas que he recopilado relacionadas con la creación de instantáneas de EBS coherentes con MySQL y XFS (ambos opcionales).

Para responder a su última pregunta, bloquear tablas en el maestro no interrumpirá la replicación. En mi software de instantáneas, también descargo las tablas con bloqueo de lectura para asegurarme de que todo esté en el disco que se está capturando y agrego la palabra clave "LOCAL" para que la descarga no se replique a ningún esclavo potencial.