Domanda

Ho un database MySQL abbastanza piccolo (un'installazione Textpattern) su un server a cui non ho accesso SSH (ho solo accesso FTP).Devo scaricare regolarmente il database live sul mio server di sviluppo locale su richiesta;cioè, vorrei eseguire uno script e/o eseguire un processo cron.Quali sono alcuni buoni modi per farlo?

Alcuni punti da notare:

  • Il server live esegue Linux, Apache 2.2, PHP 5.2 e MySQL 4.1
  • Il server locale funziona allo stesso modo (quindi l'uso di PHP è un'opzione), ma il sistema operativo è Windows
  • Il server locale ha Ruby (quindi usare Ruby è un'opzione valida)
  • Il db MySQL live Potere accettare connessioni remote da IP diversi
  • Non riesco ad abilitare la replica sul server remoto

Aggiornamento: Ho accettato la risposta di BlaM;è meravigliosamente semplice.Non posso credere di non averci pensato.C'era un problema, però:Volevo automatizzare il processo, ma la soluzione proposta richiede all'utente una password.Ecco una versione leggermente modificata del comando mysqldump che passa la password:

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

È stato utile?

Soluzione

Poiché puoi accedere al tuo database da remoto, puoi utilizzare mysqldump dal tuo computer Windows per recuperare il database remoto.Dalla riga di comando:

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

Il programma ti chiederà la password del database e quindi genererà un file c:\backup\database.sql che puoi eseguire sul tuo computer Windows per inserire i dati.

Con un piccolo database che dovrebbe essere abbastanza veloce.

Altri suggerimenti

Ecco cosa uso.Questo scarica il database dal server live mentre lo carica sul server locale.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

Puoi eseguirlo da a pipistrello file.Puoi sempre utilizzare un'attività pianificata.

La replica MySQL è un'opzione?Potresti anche accenderlo e spegnerlo se non vuoi che si replichi costantemente.

Questo era un buon articolo sulla replica.

Vorrei creare uno script (Ruby) per fare a SELECT * FROM ... su tutti i database sul server e quindi eseguire a DROP DATABASE ... seguito da una serie di novità INSERTè sulla copia locale.Puoi fare un SHOW DATABASES query per elencare i database in modo dinamico.Ora, ciò presuppone che la struttura della tabella non cambi, ma se vuoi supportare anche le modifiche della tabella puoi aggiungere un file SHOW CREATE TABLE ... query e una corrispondente CREATE TABLE istruzione per ogni tabella in ogni database.Per ottenere un elenco di tutte le tabelle in un database fai a SHOW TABLES domanda.

Una volta ottenuto lo script, puoi configurarlo come lavoro pianificato da eseguire tutte le volte che desideri.

@Mark Biek

La replica MySQL è un'opzione?Potresti anche accenderlo e spegnerlo se non vuoi che si replichi costantemente.

Grazie per il suggerimento, ma non riesco ad abilitare la replica sul server.È un server condiviso con pochissimo spazio di manovra.Ho aggiornato la domanda per notare questo.

A seconda della frequenza con cui è necessario copiare i dati in tempo reale e della velocità con cui farlo, l'installazione phpMyAdmin su entrambe le macchine potrebbe essere un'opzione.Puoi esportare e importare DB, ma dovresti farlo manualmente.Se si tratta di un piccolo DB (e sembra che lo sia) e non hai bisogno che i dati live vengano copiati troppo spesso, potrebbe funzionare bene per ciò di cui hai bisogno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top