2008-11-30 22 views
27

He una base de datos mysql llenó y se ejecuta en un ordenadorde Windows, ¿hay alguna herramienta para transferir la base de datos a otro equipo (que se ejecuta Ubuntu )?de transferencia de datos MySQL a otro equipo

de lo contrario voy acaba de escribir un script para tomar toda la base de datos en SQL y insertar que en el otro equipo. Solo estoy tratando de ahorrar algo de tiempo :)

Gracias a todos.

Respuesta

31

La herramienta de la que hablas ya existe: mysqldump

Se vuelca a SQL, que luego se puede copiar a otra máquina y volver a la carga.

por ejemplo:

de la fuente:

mysqldump -u username -p databasename > dumpfile.sql 

A continuación, utilice FTP/rsync/lo que sea para mover el archivo a la máquina de destino, y por ahí, crear una base de datos vacía para importar en y ejecutar:

mysql -u username -p databasename < dumpfile.sql 

Usted también debe configurar los permisos de los usuarios que pueden haber sido transferidos, así, ya que no se llevan a cabo dentro de la base de datos.

Como alternativa, puede copiar los archivos desde el directorio de datos mysql, pero mysqldump es la manera más fácil/más confiable.

Vale la pena señalar que los nombres de las tablas pueden llegar a ser sensibles a mayúsculas y minúsculas en un sistema cuando no estaban en el original. Depende de la configuración en ambos extremos, en particular, la sensibilidad de mayúsculas y minúsculas (o de otro tipo) del sistema de archivos.

+1

Si ambas versiones soportan (creo que incluso 4.1 does) usando la opción "-e" debería acelerar el proceso bastante. – MBCook

+0

--opt para optimizado –

+0

¿Qué pasa con la situación en la que no se puede hacer mysqldump ya que el sistema operativo está dañado? Escuché que puedes copiar archivos .frm, .MYI y .MYD. –

2

Los archivos en el disco son 100% compatibles entre todas las ediciones de MySQL. Solo tiene que tener cuidado con el caso de los nombres de archivos porque es importante en Unix, mientras que a veces solo lo hace en Windows.

Y recuerde detener MySQL antes de tomar una copia. Los archivos MyISAM están bien para tomar una copia mientras se está ejecutando, pero los archivos InnoDB no son realmente seguros para hacer eso y MySQL de Windows se predetermina a los archivos InnoDB.

2

Tenga cuidado con los conjuntos de caracteres al usar mysqldump, especialmente en Windows. Prefiero establecer explícitamente el conjunto de caracteres que usa my db y usar el archivo --result-file = en lugar de usar el operador> para evitar que algo se altere.

0

mysqldump debe volcarlo correctamente y preservar el conjunto de caracteres de cualquier cosa en la base de datos. Es aconsejable pasar a la misma versión de mysql si no quieres problemas.

El archivo producido por mysqldump NO es un archivo de texto, a pesar de las apariencias, no lo edita con notepad.exe etc. o terminará en problemas.

Los volcados producidos por herramientas gui de terceros, especialmente phpmyadmin, son en general imprecisos y no necesariamente restaurarán correctamente.

0

A menudo me encuentro usando alguna variación de este trazador para copiar una base de datos a través de la red.

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

que originalmente leí acerca aquí:

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

17

En lugar de exportar las bases de datos uno por uno, se puede exportar a todos con un solo comando. Luego importarlos. por ej.

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

PS- La mayor ventaja es que no pierde los privilegios del usuario.

+0

Muy conveniente y funciona para mí. Gracias. – bortzmeyer

+6

Para restaurar en un comando: 'mysql -u username -p Pratyush

0

Con la nueva plataforma de trabajo mysql (herramienta gui), puede exportar fácilmente la base de datos e importarla a la base de datos que desea migrar.

1

De la documentación de MySQL: http://dev.mysql.com/doc/refman/5.0/en/copying-databases.html

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

transferencia del archivo que contiene el contenido de bases de datos a la máquina de destino y ejecutar estos comandos allí:

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