¿Puedo compartir archivos de base de datos MySql con Windows en arranque dual?

12

Me gustaría usar tanto en Ubuntu como en Windows (arranque dual) mis archivos de base de datos MySql que residen en una partición NTFS. ¿Funcionará? ¿Alguna trampa?

maaartinus
fuente
44
PARA EL REGISTRO DE LA COMUNIDAD: El usuario pregunta sobre la compatibilidad de los formatos de datos MySQL entre Ubuntu Linux y Microsoft Windows. El usuario se pregunta si los datos almacenados en el formato Ubuntu Linux para MySQL son compatibles con la forma en que la versión de Windows de MySQL almacena datos para que la información de la base de datos pueda editarse y restaurarse tanto en Windows como en MySQL.
Thomas Ward
R: Acabo de proporcionar una respuesta extensa a esta pregunta aquí , en Unix & Linux StackExchange .
Vista elíptica

Respuestas:

9

Sí, funciona pero con algunas peculiaridades. MySQL usa los mismos formatos de archivo en todas las plataformas, por lo que todo lo que necesita es compartir el directorio de datos. Un problema es que el directorio de datos debe tener mysql como propietario y grupo en ubuntu. Y Windows no distingue entre mayúsculas y minúsculas y Linux distingue entre mayúsculas y minúsculas, así que mantenga todos los nombres uniformes: ya sea el nombre completo en minúscula o mayúscula, pero no los mezcle.

De principio a fin; Si ya tiene las cosas configuradas, es posible que necesite algunos ajustes para adaptarse a su configuración:

  • Instale y configure MySQL en ambos sistemas.
  • Detenga el servidor mysql si se está ejecutando.
  • Haga una nueva partición NTFS. Marque el nombre del dispositivo (llamémoslosdXN por ahora).
  • Mueva el directorio de datos mysql de Ubuntu a la nueva partición.

    mkdir /{mountpoint}/mysql_data
    sudo mv /var/lib/mysql /{mountpoint/mysql_data
    

    utilizando mvpermisos de guardado.

  • Hacer un nuevo directorio mysql

    sudo mkdir /var/lib/mysql
    
  • Monte la partición NTFS en /var/lib/mysql. Cambie el nombre del dispositivo a lo que obtuvo cuando creó la partición NTFS.

    sudo mount /dev/{sdXN} /var/lib/mysql -t ntfs-3g -o uid=mysql,gid=mysql,umask=0077
    
  • Para montar automáticamente en el arranque, busque el UUID de la partición y localice y edite /etc/fstab.

    ls -l /dev/disk/by-uuid
    locale -a
    sudo gedit /etc/fstab   
    UUID={number_found_with_the_ls-l} /var/lib/mysql ntfs-3g uid=mysql,gid=mysql,umask=0077,locale={your_locale}.utf8  0  0
    
  • Cambie la ruta 'datadir' /etc/mysql/my.cnfpara que apunte a/var/lib/mysql/mysql_data

  • Inicie el servidor mysql y pruébelo.

  • Edite el archivo de configuración de Windows ( my.ini) y establezca 'datadir' en X:/mysql_data(reemplace X:donde lo monta en Windows).

Compilado del tema 1442148 en UF.org .

Tengo la versión de Ubuntu funcionando; en parte no probado ya que no tengo Windows

Rinzwind
fuente
Muy buena respuesta! Solo dos comentarios: ya hay muchos nombres de casos mixtos y su uso lower_case_table_names=1funciona bien. Sin sus opciones de montaje, me encontré con este error (que en verdad es un error).
maaartinus
"sudo mv / var / lib / mysql / dev / {sdXN} / mysql_data" da un error. Ver unix.stackexchange.com/questions/310433/…
Vista elíptica el
1

Si ha agregado una partición de Linux a un entorno anterior solo para Windows, puede usar la base de datos en su lugar con solo algunos ajustes menores. Versión larga aquí , versión corta:

Tendrá mount --bind '/media/windows/ProgramData/MySQL/MySQL Server 5.5/data' /var/lib/mysqlque ejecutarse al inicio (suponiendo que monte su unidad de Windows para /media/windowsusar fstab).

Para evitar la comprobación del tamaño de registro de innodb, deberá mover los registros de innodb para la partición de ubuntu. En my.cnf, agregue innodb_log_group_home_dir = /var/log/mysqlpara que los registros vayan al lado del registro de errores mysql.

Josiah
fuente