¿Cómo puedo mover una base de datos MySQL a otra unidad?

34

Estoy usando MySQL 5.5 en una máquina local para analizar una gran cantidad de datos gubernamentales. He creado una base de datos local que reside en mi unidad predeterminada (Win7 C: unidad). Me gustaría almacenar los datos en mi unidad E: una unidad externa eSATA grande.

¿Qué pasos debo tomar?


fuente
no puede exportar el dB como un archivo sql, luego guarde el archivo do e: luego, en el futuro, si desea restaurar el dB, puede importar este archivo
@tq: eso no funcionará. Quiere cambiar el directorio de datos del servidor MySQL. Si lo exporta y lo importa, ¡seguirá en el mismo disco!
Una palabra de precaución cuando mueva los archivos de la base de datos a la unidad externa, tendrá que mantenerlo conectado a su computadora; de lo contrario, su base de datos se bloqueará ya que no podrá encontrar los archivos de datos
Stephen Senkomago Musoke

Respuestas:

35
  1. Apagar mysql.
  2. Mueva todos los archivos en su directorio de datos actual a la nueva ubicación (consulte la ubicación en el paso 3 - datadirparámetro).
  3. Ubique el my.iniarchivo (está en el directorio de instalación de mysql). Cambie el datadirvalor del parámetro para apuntar a la nueva ubicación.
  4. Inicia mysql.

fuente
Esto me dio errores al intentar iniciar mysql (problemas de permisos). Me decidí por la solución que publico aquí , que espero ayude a alguien a ahorrar tiempo.
snapfractalpop
1
La pregunta de @snapfractalpop es para Windows
Adam
@adam windows se menciona en el cuerpo de la pregunta, pero no se etiqueta como una pregunta solo de windows, ni se menciona windows en el título. Publiqué el enlace en los comentarios porque es posible que otros usuarios que no sean de Windows también puedan tropezar con esta pregunta.
snapfractalpop
Descubrí que tenía que usar /y no \ como separadores de directorio en la ruta del directorio datadir. Estoy usando WAMPserver en Windows 10.
Steve
El directorio ProgramData puede estar oculto en su explorador de archivos. Pensé que no existía hasta que cambié la configuración para mostrar Archivos ocultos.
WestAce
6

Aunque está pidiendo ventanas, aquí hay algunas buenas instrucciones para aquellos que terminan aquí buscando direcciones de Linux / ubuntu:

Suposiciones

  • Tiene datos mysql en una unidad externa / usb / alternativa /mountpoint/var/lib/mysql, tal vez de una computadora que falle o de una instalación antigua
  • Desea moverlo a su nueva instalación de Ubuntu localmente /var/lib/mysql
  • Parada de MySQL con:
    sudo /etc/init.d/mysql stop.
  • Hacer una copia de seguridad del directorio de datos actual (limpia) con MySQL:
    sudo cp -Rp /var/lib/mysql /var/lib/mysql.backup.
  • Luego copie el directorio de datos anterior de la unidad anterior con:
    sudo cp -Rp /mountpoint/var/lib/mysql /var/lib/mysql
    donde mountpointestá la ruta al montaje.
  • Ahora reinicie MySQL con:
    sudo /etc/init.d/mysql start

Con suerte, MySQL debería reiniciarse y usted debería recuperar sus bases de datos anteriores.

Fuente [email protected]

Cirilo
fuente
3
(!) esto no funcionará porque config todavía apunta a la ubicación anterior
ADOConnection
4

Solución 1:

  1. En primer lugar, haga una copia de seguridad de sus datos usando `mysqldump.
  2. Si instala Mysql Server desde el paquete oficial, puede hacerlo ejecutando el programa MySQLINstanceConfig.exe desde el directorio bin de su servidor.
  3. Datos de importacion

MySQLINstanceConfig.exe

Segunda solución (no recomendado, pero funciona en la misma máquina)

  1. Detenga el servidor Mysql.
  2. Copie datos de su directorio de datos a su nuevo directorio
  3. Abra el archivo my.cnf (en mi caso "C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ my.ini")
  4. buscar fila como datadir = "C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data \" y cambiar la ruta a su nueva ubicación
  5. Inicia tu servidor

A partir de la versión 5.6 MySQLInstanceConfig.exe ya no se distribuye. Esta funcionalidad está siendo reemplazada por el instalador. http://bugs.mysql.com/bug.php?id=66306

rkosegi
fuente
¿Existe un programa de Linux equivalente para mover los datos
Ron Piggott
Después de mover los datos con el segundo enfoque, no pude iniciar MariaDB (versión 5.5). Después de otorgarle al usuario de servicio acceso al nuevo datadir, el servicio comienza y estoy listo para conectarme a la base de datos. Sin embargo el acceso a cualquier tabla sigue fallando: [ERROR] Cannot find or open table <db>/<table> from the internal data dictionary of InnoDB though the .frm file for the table exists.. ¿Cómo puedo asegurarme de que los permisos están configurados correctamente?
Bram
2

Para Windows, a partir del instalador MySQL 1.4.6 (2015-04-07) , la ubicación de los datos puede especificarse en una clave de registro que especifique la ubicación del my.iniarchivo, por lo que si los datos se instalaron inicialmente en una ubicación no predeterminada el my.iniarchivo no estará en C:\ProgramData\MySQL\MySQL Server x.x\.

La ubicación de los valores del registro son (al menos a partir de MySQL 5.6):

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MySQL AB\MySQL Server x.x\

Locationes un REG_SZque apunta a la carpeta donde se encuentran los archivos de la aplicación MySQL; por defecto:C:\Program Files\MySQL\MySQL Server x.x\

DataLocationes un REG_SZque apunta a la carpeta donde my.inise encuentra; por defecto también:C:\Program Files\MySQL\MySQL Server x.x\

Además, la my.iniruta del archivo se incluye en el comando de servicio bajo esta clave de registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MySQLXXen el ImagePath REG_EXPAND_SZvalor.

El valor predeterminado de esta cadena es: "C:/Program Files/MySQL/MySQL Server 5.6/bin\mysqld" --defaults-file="C:\Program Files\MySQL\MySQL Server x.x\my.ini" MySQLXX

Entonces, la conclusión es que para mover archivos de datos en este escenario, debe seguir los pasos publicados por @ITCuties con algunas adiciones.

Aquí están los pasos completos:

  1. Apagar mysql.
  2. Busque el DataLocationvalor de registro anterior para encontrar la my.iniubicación actual del archivo, y si desea mover también el my.iniarchivo, actualice la DataLocationruta y mueva el my.iniarchivo a esta nueva ruta.
  3. Si está cambiando la ubicación del my.iniarchivo, debe actualizar la ruta en la clave de registro del comando de servicio enumerada anteriormente.
  4. Abra el my.iniarchivo, ubique el datadirparámetro. Mueva los archivos de esta datadirruta a la ruta en la que desea que residan los datos y luego actualice el datadirparámetro con esta nueva ruta.
  5. Inicia mysql.
nextgentech
fuente