Domanda

Ho un database mysql riempito e funzionante su un computer Windows , c'è qualche strumento per trasferire il database su un altro computer (eseguendo Ubuntu )?

Altrimenti scriverò solo uno script per portare tutti i database in SQL e inserirli sull'altro computer. Sto solo cercando di risparmiare un po 'di tempo :)

Grazie a tutti.

È stato utile?

Soluzione

Lo strumento di cui parli esiste già: mysqldump

Esegue il dump a sql, che è quindi possibile copiare su un altro computer e ricaricare.

es:

sulla fonte:

mysqldump -u username -p databasename > dumpfile.sql

Quindi usa ftp / rsync / qualunque cosa per spostare il file sul computer di destinazione, e lì crea un database vuoto da importare ed eseguire:

mysql -u username -p databasename < dumpfile.sql

Dovrai anche impostare le autorizzazioni per tutti gli utenti che potrebbero essere stati trasferiti, poiché non sono conservati nel database.

In alternativa, puoi copiare i file dalla directory dei dati mysql, ma mysqldump è il modo più semplice / affidabile.

Vale la pena notare che i nomi delle tabelle potrebbero diventare case sensitive su un sistema quando non erano sull'originale. Dipende dalla configurazione ad entrambe le estremità, in particolare dalla distinzione tra maiuscole e minuscole (o altrimenti) del filesystem.

Altri suggerimenti

Invece di esportare i database uno per uno, è possibile esportarli tutti con un singolo comando. Quindi importali. ad es.

mysqldump -u username -p --all-databases > c:\alldbs.sql

PS: il più grande vantaggio è che non perdi i privilegi dell'utente.

I file su disco sono compatibili al 100% tra tutte le edizioni di MySQL. Devi solo fare attenzione al caso dei nomi dei file perché è importante su Unix, mentre a volte lo fa solo su Windows.

E ricorda di interrompere MySQL prima di prenderne una copia. I file MyISAM possono essere copiati durante l'esecuzione, ma i file InnoDB non sono realmente sicuri e i valori predefiniti di MySQL di Windows nei file InnoDB.

Fai attenzione ai set di caratteri quando usi mysqldump, specialmente su Windows. Preferisco impostare esplicitamente il set di caratteri che il mio db usa e usare il file --result-file = invece di usare il > operatore per timore che qualcosa si rovini.

Dalla documentazione di MySQL: http://dev.mysql.com/doc/refman/5.0 /en/copying-database.html

shell> mysqldump --quick db_name | gzip > db_name.gz

Trasferisci il file contenente i contenuti del database sul computer di destinazione ed esegui questi comandi lì:

shell> mysqladmin create db_name
shell> gunzip < db_name.gz | mysql db_name

Puoi fare un backup usando qualsiasi strumento gui, come Mysql Administrator ( http: // dev.mysql.com/downloads/gui-tools/ su Windows, aptitude installa mysql-admin su Ubuntu) o phpmyadmin ( http://www.phpmyadmin.net/home_page/index.php su Windows, aptitude installa phpmyadmin su Ubuntu), quindi ripristinalo sull'altro computer.

mysqldump dovrebbe scaricarlo correttamente e preservare il set di caratteri di qualsiasi cosa nel database. Si consiglia di passare alla stessa versione di mysql se non si desidera problemi.

Il file prodotto da mysqldump NON è un file di testo, nonostante le apparenze, non modificarlo con notepad.exe ecc. o finirai nei guai.

I dump prodotti da strumenti gui di terze parti, in particolare phpmyadmin, sono generalmente imprecisi e non si ripristinano necessariamente correttamente.

Mi trovo spesso a utilizzare una variante di questo one-liner per copiare un database in rete.

mysqldump --opt --compress --user=username database | mysql --user=username2 --password=p2 --host=hostB -D database -C database

Di cui ho letto qui:

http: //www.igvita. com / 2007/10/10 / hands-on-mysql-backup-migrazione /

Con il nuovo mysql workbench (strumento gui), puoi facilmente esportare il database e importarlo nel database che desideri migrare.

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