Copia de seguridad incremental / diferencial de MySQL usando mysqldump

9

¿Hay alguna técnica para usar mysqldump (o un comando similar) para hacer copias de seguridad incrementales o diferenciales para MySQL?

Brian Boatright
fuente

Respuestas:

0

Uso binlogs pero no son una solución definitiva y también tiendo a confiar en las instantáneas.

Hay dos razones principales para esto:

  • Binlogs almacena todos los cambios. Un valor de semanas de binlogs probablemente será significativamente mayor que la diferencia entre dos instantáneas separadas por semana. El único alivio es que los binlogs tienden a comprimirse bien (generalmente muy por debajo del 10%).
  • Si alguna vez necesita hacer una auditoría o regresar, volver a reproducir el binlog contra una instantánea antigua llevará mucho tiempo y cuanto mayor sea el binlog, mayores serán las posibilidades de error, por lo que necesita instantáneas regulares.

Recientemente tuve una gran cantidad de instantáneas que no eran comprimidas ni diferenciales. Experimenté con diff y descubrí que incluso con opciones como sin contexto, los diffs resultantes eran más grandes.

Sin probar todas las alternativas, lo mejor que encontré fue rdiff. Esto los redujo a alrededor del 5% del tamaño para mí y cuando se comprimió con xz en la zona del 1%.

Aunque los archivos de firma rdiff no se comprimen bien, ya que son colecciones hash (lo mismo que los datos aleatorios), comprimirlos entre sí debería producir buenos resultados.

Muchas personas no necesitarán dicha solución, ya que en la mayoría de los casos, si hay un fallo, deberán almacenar la base de datos con la imagen más reciente y actualizarla lo más rápido posible.

Sin embargo, si tiene un sistema complejo que necesita mucha contabilidad, auditoría, depuración, etc. (cosas más críticas que un blog), entonces el almacenamiento eficiente de instantáneas se vuelve importante.

jgmjgm
fuente