En el trabajo hacemos un volcado nocturno de nuestras bases de datos mysql. De día en día, quisiera estimar que cerca del 90-95% de los datos están duplicados, aumentando a medida que pasa el tiempo. (Diablos, en este punto, algunos son probablemente del 99%)
Estos volcados son donde una línea es una sola instrucción INSERT de mysql, por lo que las únicas diferencias son las líneas enteras y el orden en que están en el archivo. Si los ordenara, la diferencia real de un archivo a otro sería muy pequeña.
He estado buscando y no he encontrado ninguna forma de ordenar la salida en el volcado. Sin embargo, podría canalizarlo a través del sort
comando. Entonces habría largos, largos bloques de líneas idénticas.
Así que estoy tratando de encontrar una manera de almacenar solo las diferencias. Podría comenzar con un volcado maestro, y diferir en contra de eso cada noche. Pero las diferencias serían mayores cada noche. O bien, podría hacer diffs continuos, que individualmente serían muy pequeños, pero parece que tomaría más y más tiempo calcularlos, si tengo que armar un diff maestro de toda la serie cada noche.
¿Es esto factible? ¿Con que herramientas?
Editar No estoy preguntando cómo hacer copias de seguridad mysql. Olvídate de mysql por el momento. Es un arenque rojo. Lo que quiero saber es cómo hacer una serie de diferencias continuas de una serie de archivos. Cada noche tenemos un archivo (que resulta ser un archivo mysqldump ) que es 99% similar al anterior. Sí, los comprimimos a todos. Pero es redundante tener toda esa redundancia en primer lugar. Todo lo que realmente necesito son las diferencias de la noche anterior ... que es solo un 1% diferente de la noche anterior ... y así sucesivamente. Entonces, lo que busco es cómo hacer una serie de diferencias, así que solo necesito almacenar ese 1% cada noche.
fuente
Últimamente he estado intentando almacenar volcados de bases de datos en git. Esto puede ser poco práctico si los volcados de su base de datos son realmente grandes, pero me ha funcionado para bases de datos más pequeñas (sitios de Wordpress y similares).
Mi script de respaldo es aproximadamente:
fuente
Podrías hacer algo como esto (con
a.sql
tu respaldo semanal).Sus archivos diff se agrandarán al final de la semana.
Sin embargo, mi sugerencia es simplemente gzip (usar
gzip -9
para máxima compresión). Hacemos esto en este momento y eso da uso a un archivo gz de 59 MB mientras que el original es de 639 MB.fuente
Hay varios enfoques posibles que uno podría seguir, dependiendo del tamaño y la similitud textual real de los volcados de la base de datos:
fuente
(No he hecho esto en producción).
Haga una copia de seguridad completa una vez por día o semana. Los registros de retransmisión de respaldo una vez por hora o día
fuente