2009-03-29 12 views

Respuesta

12

Simplemente puede copiar la carpeta completa/datos.

Tenga una mirada en High Performance MySQL - transferring large files

+0

Saludos, eso es mucho mejor. –

+0

Ese enlace parece estar muerto. Sin embargo, esto es lo que hice. Salta al terminal en la fuente y escribe 'locate my.cnf'. abra el archivo en su editor de texto favorito (vi /etc/mysql/my.cnf) y multa la línea "datadir =". Entonces todo lo que necesita hacer es repetir esto en su servidor de destino. Ahora debe comprimir el contenido de esa carpeta en la fuente y convertirlo al destino. Luego simplemente descomprímelo en el directorio de datos. – Jason

0

no tengo experiencia con hacer esto con MySQL, pero me parece que el cuello de botella es la transferencia de los datos reales?

4oo MB no es que mucho. Pero si dump -> SCP es lento, ¿no creo que conectar al servidor db desde la caja de eliminación sería más rápido?

Sugiero descargar, comprimir y luego copiar a través de la red o grabar en el disco y transferir manualmente los datos. La compresión de un vertedero de este tipo probablemente le proporcione una tasa de compresión bastante buena, ya que, probablemente, hay una gran cantidad de datos repetitivos.

4

usted puede configurar un esclavo de replicación de MySQL y dejar MySQL copiar los datos, y luego hacer el esclavo en el nuevo maestro

1

intento de importar el volcado en el nuevo servidor utilizando la consola de MySQL, no un software auxiliar

0

Si solo está copiando todas las bases de datos del servidor, copie todo el directorio /data.

Si se acaba copiando una o más bases de datos y agregarlos a un servidor MySQL existente:

  1. crear la base de datos vacía en el nuevo servidor, configurar los permisos para los usuarios, etc.
  2. copiar el carpeta de la base de datos en /data/databasename al nuevo servidor /data/databasename
2

400M no es realmente una gran base de datos; transferirlo a otra máquina solo tomará unos minutos en una red de 100Mbit. Si no tienes redes de 100M entre tus máquinas, ¡estás en un gran problema!

Si ejecutan exactamente la misma versión de MySQL y tienen my.cnf idéntico (o SUFICIENTEMENTE similar) y usted solo quiere una copia de todos los datos, es seguro copiar todo el directorio de datos del servidor (mientras que ambos las instancias se detienen, obviamente). Deberá eliminar el directorio de datos de la máquina de destino primero, por supuesto, pero probablemente no le importe eso.

La copia de seguridad/restauración normalmente se ralentiza porque la restauración tiene que reconstruir la estructura de la tabla, en lugar de la copia del archivo. Al copiar los archivos de datos directamente, evita esto (sujeto a las limitaciones indicadas anteriormente).

+0

No están en el mismo colo, por desgracia. –

+0

400 MB no es grande y SCP ofrece compresión. En la práctica, es aproximadamente 2 veces más rápido. –

6

El uso puede usar ssh para canalizar directamente sus datos a través de Internet. Primero configure las claves SSH para iniciar sesión sin contraseña.A continuación, probar algo como esto:

$ mysqldump -u db_user -p some_database | gzip | ssh [email protected] 'gzip -d | mysql -u db_user --password=db_pass some_database' 

Notas:

  • La idea básica es que se acaba volcando salida estándar directamente a un comando en el otro lado, lo cual es perfecto para SSH.
  • Si no necesita el cifrado, puede usar netcat, pero probablemente no valga la pena
  • ¡Los datos de texto SQL pasan por el cable comprimido!
  • Obviamente, cambie db_user al usuario y some_database a su base de datos. someuser es el usuario del sistema (Linux) , no el usuario de MySQL.
  • También tendrá que usar --password el camino largo porque con la indicación de mysql va a haber muchos dolores de cabeza.
+2

no necesita usar ssh. Simplemente puede hacer: mysqldump -u db_user -p some_database | mysql -u db_user -p -h newserver alguna_base de datos –

+0

Buen punto, gracias! – JasonSmith

+1

Pero es común haber inhabilitado el acceso remoto en mysql, al menos de donde soy. Mientras que SSH está disponible. En teoría, es posible con las concesiones correctas, pero la respuesta ssh es para mí el caso de uso más realista. –

2

Si va a migrar un servidor:

Los archivos de volcado puede ser muy grande, por lo que es mejor para comprimirlo antes de enviar o usar la bandera -C del SCP. Nuestra metodología de transferencia de archivos es crear un volcado completo, en el cual los registros incrementales se vacían (use --master-data = 2 --flush logs, por favor revise que no ensucie ningún host esclavo si los tiene). Luego copiamos el volcado y lo jugamos. Luego volvemos a limpiar los registros (mysqladmin flush-logs), tomamos el registro incremental reciente (que no debe ser muy grande) y solo lo jugamos. Continúe haciéndolo hasta que el último registro incremental sea muy pequeño, de modo que pueda detener la base de datos en la máquina original, copiar el último registro incremental y luego reproducirlo; debería tomar solo unos minutos.

Si lo que desea es copiar datos de un servidor a otro:

mysqldump -C --host=oldhost --user=xxx --database=yyy -p | mysql -C --host=newhost --user=aaa -p 

Usted tendrá que configurar los usuarios db correctamente y proporcionar acceso a los servidores externos.

0

Me gusta usar BigDump: Distribuidor de descarga de Mysql escalonado después de exportar mi base de datos desde el servidor anterior.

http://www.ozerov.de/bigdump/

Hay que destacar, sin embargo, si no se establece las opciones de exportación (es decir, la longitud máxima de consultas creadas) respectivas a la carga que su nuevo servidor puede manejar, sólo va a fallar y tendrá que volver a intentarlo con diferentes parámetros. Personalmente, establecí el mío en unos 25,000, pero así soy yo. Pruébalo un poco y lo entenderás.

Cuestiones relacionadas