2008-09-02 11 views
6

Tengo una base de datos MySQL bastante pequeña (una instalación de Textpattern) en un servidor al que no tengo acceso SSH (solo tengo acceso FTP). Necesito descargar regularmente la base de datos en vivo a mi servidor de desarrollo local bajo demanda; es decir, me gustaría ejecutar una secuencia de comandos y/o ejecutar una tarea cron. ¿Cuáles son algunas buenas formas de hacer esto?¿Cómo descargar un db MySQL en vivo en un db de prueba local bajo demanda, sin SSH?

Algunos puntos a destacar:

  • directo del servidor está ejecutando Linux, Apache 2.2, PHP 5.2 y MySQL 4.1
  • servidor local se está ejecutando la misma (así que usar PHP es una opción), pero el sistema operativo es de Windows
  • servidor local tiene Rubí en ella (por lo que usar Ruby es una opción válida)
  • El MySQL vivo db puede aceptar conexiones remotas desde diferentes direcciones IP
  • No puedo habilitar la replicación en el servidor remoto

Actualización: He aceptado la respuesta de Blam; es maravillosamente simple. No puedo creer que no haya pensado en eso. Sin embargo, había un problema: quería automatizar el proceso, pero la solución propuesta solicita al usuario una contraseña. Aquí es una versión ligeramente modificada del comando mysqldump que pasa en la contraseña:

mysqldump -u USER --password=MYPASSWORD DATABASE_TO_DUMP -h HOST > backup.sql

Respuesta

5

Como puede acceder a su base de datos de forma remota, puede usar mysqldump desde su máquina de Windows para obtener la base de datos remota. Desde la línea de comandos:

cd "into mysql directory" 
mysqldump -u USERNAME -p -h YOUR_HOST_IP DATABASE_TO_MIRROR >c:\backup\database.sql 

El programa le pedirá la contraseña de la base de datos y luego generar un archivo c: \ backup \ database.sql que se puede ejecutar en su máquina Windows para insertar los datos.

Con una pequeña base de datos que debería ser bastante rápida.

1

¿La replicación MySQL es una opción? Incluso podría encenderlo y apagarlo si no quisiera que se repita constantemente.

Esto fue good article en la replicación.

0

me gustaría crear un guión (Rubí) para hacer un SELECT * FROM ... en todas las bases de datos del servidor y luego hacer un DROP DATABASE ... seguido de una serie de nuevos INSERT s en la copia local. Puede hacer una consulta SHOW DATABASES para listar las bases de datos dinámicamente. Ahora, esto supone que la estructura de la tabla no cambia, pero si desea admitir cambios en la tabla también podría agregar una consulta SHOW CREATE TABLE ... y una declaración correspondiente CREATE TABLE para cada tabla en cada base de datos. Para obtener una lista de todas las tablas en una base de datos, realice una consulta SHOW TABLES.

Una vez que tenga el script, puede configurarlo como un trabajo programado para que se ejecute con la frecuencia que necesite.

0

@ Marcos Biek

¿La replicación MySQL es una opción? Incluso podría encenderlo y apagarlo si no quisiera que se repita constantemente.

Gracias por la sugerencia, pero no puedo habilitar la replicación en el servidor. Es un servidor compartido con muy poco margen de maniobra. He actualizado la pregunta para tomar nota de esto.

0

Dependiendo de la frecuencia con la que deba copiar los datos en tiempo real y la rapidez con que debe hacerlo, la instalación de phpMyAdmin en ambas máquinas podría ser una opción. Puede exportar e importar bases de datos, pero tendría que hacerlo manualmente. Si se trata de una pequeña base de datos (y suena como si fuera), y no necesita datos en vivo copiados con demasiada frecuencia, podría funcionar bien para lo que necesita.

2

Esto es lo que uso. Esto vacía la base de datos del servidor en vivo mientras la carga en el servidor local. mysqldump -hlive_server_addresss -ulive_server_user -plive_server_password --opt --compress live_server_db | mysql -ulocal_server_user -plocal_server_password local_server_db

Puede ejecutar esto desde un archivo bat. Puedes usar una tarea programada.