una respaldar por datos crear consola como automaticamente mysql git backup mysqldump database-backups

por - respaldar base de datos mysql automaticamente



¿Es viable manejar las copias de seguridad de MySQL con git? (4)

En teoría, esto funcionará, pero empezará a tener problemas cuando los volcados de la base de datos sean más grandes.

Git no tiene límites de tamaño de archivos rígidos, pero diferenciará el contenido de su último volcado con el almacenado previamente en el repositorio, que requerirá al menos tanta memoria como el tamaño de los dos archivos que se agregaron juntos. Me imagino que comenzará a ser muy lento, muy rápidamente con archivos de más de 100 MB (o incluso de 10 MB).

Git no fue creado para tratar con archivos de este tipo (es decir, archivos de datos grandes en lugar de código fuente), por lo que creo que esto es fundamentalmente una mala idea. Sin embargo, podría usar algo como Dropbox para almacenar los volcados, que aún guardarán el historial de versiones para usted, pero se adaptará más a los archivos que no se pueden modificar de manera efectiva.

Hoy tuve una idea realmente clara para hacer una copia de seguridad de mi base de datos: coloque el archivo de volcado en un repositorio de git, luego realice una copia de seguridad en cada volcado para tener la copia más reciente, pero puedo revertir fácilmente a cualquier copia de seguridad anterior. También puedo extraer fácilmente una copia del repositorio con regularidad para guardar una copia en mi propia computadora como copia de seguridad de las copias de seguridad. Definitivamente suena inteligente.

Sin embargo, soy consciente de que las soluciones inteligentes a veces tienen defectos fundamentales. ¿Qué tipo de problemas puedo solucionar al almacenar mysqldump diffs en git? ¿Vale la pena? ¿Qué hace la mayoría de las personas para tener múltiples copias de seguridad de bases de datos en el servidor y mantener copias redundantes en otros lugares?


Este enfoque me suena bien. Uso Git para hacer una copia de seguridad de mis propios datos importantes.

Tenga en cuenta que no está almacenando diffs: Git almacena efectivamente instantáneas del estado del directorio con cada confirmación. Puede generar el diff de dos confirmaciones, pero el mecanismo de almacenamiento real no tiene nada que ver con diff.


Si está usando MySQL (y posiblemente otros) y tiene habilitado el registro binario, puede considerar configurar un repositorio git para el directorio de su registro de bin y desarrollar una estrategia para confirmar actualizaciones regularmente al binlog.

En MySQL, el binlog almacena las consultas que cambian los datos a cualquier tabla en la base de datos. Si sincroniza sus confirmaciones con volcados regulares de la base de datos, debe tener una forma versionada de restaurar datos.

Honestamente, creo que usar las herramientas nativas de MySQL probablemente sería una mejor solución, pero lo que he descrito aquí le ayuda a actualizar sus datos MySQL, que es lo que buscaba en primer lugar.


Normalmente no mantienes cada copia de seguridad (o instantánea) para siempre. Un repositorio de git mantiene todos los registros que realice. Si alguna vez decide eliminar las revisiones antiguas (digamos las revisiones de un mes hasta una vez por semana, desde un año hasta una vez por mes, etc.) tendrá que hacerlo con git filter-branch que reescribirá todo el historial. Luego git gc para eliminar las revisiones no deseadas.

Dado que los puntos fuertes de git son el control de versión distribuido y los flujos de trabajo complejos de parches / ramificaciones (ninguno de los cuales se aplica a instantáneas o copias de seguridad) consideraría usar un VCS diferente con un historial más maleable.