Posso condividere i file del database MySql con Windows al doppio avvio?


12

Mi piacerebbe usare sia Ubuntu che Windows (dual boot) i miei file di database MySql residenti su una partizione NTFS. Funzionerà? Qualche gotcha?


4
PER IL RECORD DELLA COMUNITÀ: L'utente chiede informazioni sulla compatibilità dei formati di dati MySQL tra Ubuntu Linux e Microsoft Windows. L'utente si chiede se i dati memorizzati nel formato Ubuntu Linux per MySQL siano compatibili con il modo in cui la versione di MySQL per Windows archivia i dati in modo che le informazioni del database possano essere modificate e ripristinate sia su Windows che su MySQL.
Thomas Ward

A: Ho appena fornito una risposta esauriente a questa domanda qui , in Unix & Linux StackExchange .
Vista ellittica

Risposte:


9

Sì, funziona ma con alcune stranezze. MySQL utilizza gli stessi formati di file su più piattaforme, quindi è sufficiente condividere la directory dei dati. Un problema è che la directory dei dati deve avere mysql come proprietario e gruppo in Ubuntu. E Windows non fa distinzione tra maiuscole e minuscole e Linux fa distinzione tra maiuscole e minuscole, quindi mantieni tutti i nomi uniformi: l'intero nome in minuscolo o maiuscolo ma non mescolarli.

Dall'inizio alla fine; se hai già impostato le cose, potrebbe essere necessario apportare alcune modifiche per adattarle alla tua configurazione:

  • Installa e configura MySQL su entrambi i sistemi.
  • Arrestare il server mysql se è in esecuzione.
  • Crea una nuova partizione NTFS. Contrassegna il nome del dispositivo (chiamiamolo sdXNper ora).
  • Spostare la directory dei dati mysql da Ubuntu nella nuova partizione.

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

    utilizzando le mvautorizzazioni di salvataggio.

  • Crea una nuova directory mysql

    sudo mkdir /var/lib/mysql
    
  • Montare la partizione NTFS su /var/lib/mysql. Cambia il nome devic in quello che ha ottenuto quando hai creato la partizione NTFS.

    sudo mount /dev/{sdXN} /var/lib/mysql -t ntfs-3g -o uid=mysql,gid=mysql,umask=0077
    
  • Per il montaggio automatico all'avvio, individuare l'UUID della partizione, le impostazioni internazionali e la modifica /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
    
  • Modificare il percorso "datadir" in /etc/mysql/my.cnfin modo che punti/var/lib/mysql/mysql_data

  • Avviare il server mysql e testarlo.

  • Modifica il file di configurazione di Windows ( my.ini) e imposta 'datadir' su X:/mysql_data(sostituisci X:per dove lo monti sotto Windows).

Compilato dall'argomento 1442148 su UF.org .

Ho fatto funzionare la versione di Ubuntu; così parzialmente non testato dal momento che non ho Windows


Risposta molto bella! Solo due commenti: ci sono già molti nomi di casi misti e il suo utilizzo lower_case_table_names=1funziona bene. Senza le tue opzioni di mount mi sono imbattuto in questo bug (che è davvero un errore di IMHO).
maaartinus,

"sudo mv / var / lib / mysql / dev / {sdXN} / mysql_data" dà un errore. Vedi unix.stackexchange.com/questions/310433/…
Vista ellittica

1

Se hai aggiunto una partizione Linux a un ambiente precedentemente solo per Windows, puoi utilizzare il database in atto con solo alcune piccole modifiche. Versione lunga qui , versione corta:

Dovrai mount --bind '/media/windows/ProgramData/MySQL/MySQL Server 5.5/data' /var/lib/mysqleseguire all'avvio (supponendo che tu monti il ​​tuo drive Windows per /media/windowsusare fstab).

Per aggirare il controllo della dimensione del registro di innodb, dovrai spostare i registri di innodb per la partizione ubuntu. In my.cnf, aggiungi in innodb_log_group_home_dir = /var/log/mysqlmodo che i log vadano accanto al log degli errori mysql.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.