2010-02-21 10 views
7

¿es posible llevarlo? Investigué en Google, encontré pocos artículos, pero en alemán y otros idiomas, así que no entendí bien.Mysql Backup con Mercurial

Sería fantástico si pudiéramos obtener una copia de seguridad de mysql del servidor al servidor local con Mercurial [en el servidor local]. tal vez con Remote Mysql Connection, etc. ¿Conoces alguna forma de hacerlo? ¿Es posible?

Gracias! Saludos ...

+0

No estoy del todo claro en esta pregunta. ¿Desea volcar su base de datos MySQL de vez en cuando en un repositorio de Mercurial? –

+0

para tomar la copia de seguridad de mis sitios web en línea, siempre me conecto a phpmyadmin en el servidor, escribiendo el pase de inicio de sesión, etc. que seleccione tablas, backup-saveas file, bla bla ... proceso muy largo. ps, tengo sitios web en diferentes servidores, hosts. así que estaba pensando, si es posible tomar copias de seguridad de mysql de servidores con mercurial de alguna manera, y en rep mercurial. –

+0

¿Qué ventaja está trayendo hg aquí? ¿No crearías simplemente un cronograma de copias de seguridad y marcas de tiempo del archivo? El espacio en disco no es realmente un factor limitante en estos días. – CurtainDog

Respuesta

5

presumiendo que desea guardar una copia de seguridad periódica en un repositorio de control de versiones hay tres pasos:

  1. de configuración del repositorio mercurial en la que desea almacenar las instantáneas de bases de datos.

    mkdir db-backup 
    hg init db-backup 
    
  2. Obtenga la base de datos en un formato de archivo. La forma más simple es a través de mysqldump. Simplemente haciendo una copia de seguridad de los archivos de la tabla de la base de datos en bruto no funcionará, ya que pueden estar en un estado incoherente.

    cd db-backup 
    mysqldump -u username -p -h dbhost databasename > databasename.sql 
    
  3. cometer el volcado de la base de datos en el repositorio de control de versiones, en su caso mercurial.

    hg commit -A -m "committing database snapshot as at `date`" 
    

Los 2 últimos pasos son lo que es probable que desee automatizar.

+0

Sí, pero ¿qué ventaja o información le proporciona esto? – PurplePilot

+2

Al almacenar instantáneas de los datos a lo largo del tiempo, puede comparar y contrastar el estado de la base de datos en diferentes momentos. La ventaja sobre el almacenamiento de archivos de copia de seguridad con sellos de tiempo incluiría el uso de menos espacio de disco debido a las diferencias de almacenamiento de manera eficiente, la capacidad de compartir la historia completa de la base de datos a través de la clonación repositorio. – BenM

2

Creo que esto sería un ejercicio inútil y peligroso en una serie de niveles. Pero si piensa en cómo funciona un sistema VCS, hace la diferencia entre la versión actual y la versión anterior (o la referencia) y luego, si vuelve a una revisión anterior, (el VCS) escribe los archivos en el directorio. En la primera instancia, si hiciste esto con una base de datos y luego hiciste un diff, ¿qué verías? La vista que obtienes de los datos en una base de datos se filtra a través del DBMS, por lo que los archivos brutos difusos serían inútiles. En la segunda instancia, si restauró una revisión a una base de datos en funcionamiento, no creo que obtenga mucho, excepto una base de datos en la papelera. ¿Qué pasaría con vistas, procedimientos almacenados, activadores, etc.?

La única vez que consideré algo como esto fue volcar la estructura de la base de datos solamente, sin datos, y VCS así que pude distinguir para ver qué cambios estructurales se habían realizado. Sin embargo, el aumento de las comunicaciones en el equipo resolvió este problema.

La forma de manejar las bases de datos es utilizar un conjunto adecuado de programas y procedimientos de respaldo, sin olvidar un conjunto de programas y procedimientos de restauración y un régimen de prueba para garantizar que todas las copias de seguridad funcionen.