Puis-je partager des fichiers de base de données MySql avec Windows au double démarrage?

12

J'aimerais utiliser à la fois Ubuntu et Windows (double démarrage) mes fichiers de base de données MySql résidant sur une partition NTFS. Est-ce que ça marchera? Des accrochages?

maaartinus
la source
4
POUR LE DOSSIER DE LA COMMUNAUTÉ: L'utilisateur pose des questions sur la compatibilité des formats de données MySQL entre Ubuntu Linux et Microsoft Windows. L'utilisateur se demande si les données stockées au format Ubuntu Linux pour MySQL sont compatibles avec la façon dont la version Windows de MySQL stocke les données afin que les informations de la base de données puissent être éditées et restaurées à la fois sous Windows et MySQL.
Thomas Ward
R: Je viens de fournir une réponse détaillée à cette question ici , dans Unix et Linux StackExchange .
Vue elliptique du

Réponses:

9

Oui, cela fonctionne mais avec quelques bizarreries. MySQL utilise les mêmes formats de fichiers sur toutes les plateformes, il vous suffit donc de partager le répertoire de données. Un problème est que le répertoire de données doit avoir mysql comme propriétaire et groupe dans ubuntu. Et Windows est insensible à la casse et Linux est sensible à la casse, donc gardez tous les noms uniformes: le nom entier en minuscules ou en majuscules mais ne les mélangez pas.

Du début à la fin; si vous avez déjà des choses configurées, cela pourrait nécessiter quelques ajustements pour s'adapter à votre configuration:

  • Installez et configurez MySQL sur les deux systèmes.
  • Arrêtez le serveur mysql s'il est en cours d'exécution.
  • Créez une nouvelle partition NTFS. Marquez le nom de l'appareil (appelons-le sdXNpour l'instant).
  • Déplacez le répertoire de données mysql d'Ubuntu vers la nouvelle partition.

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

    en utilisant mvenregistre les autorisations.

  • Créer un nouveau répertoire mysql

    sudo mkdir /var/lib/mysql
    
  • Montez la partition NTFS sur /var/lib/mysql. Remplacez le nom de périphérique par ce qu'il a obtenu lorsque vous avez créé la partition NTFS.

    sudo mount /dev/{sdXN} /var/lib/mysql -t ntfs-3g -o uid=mysql,gid=mysql,umask=0077
    
  • Pour monter automatiquement au démarrage, trouvez l'UUID et les paramètres régionaux de la partition et modifiez-les /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
    
  • Modifiez le chemin «datadir» /etc/mysql/my.cnfpour pointer vers/var/lib/mysql/mysql_data

  • Démarrez le serveur mysql et testez-le.

  • Modifiez le fichier de configuration Windows ( my.ini) et définissez 'datadir' sur X:/mysql_data(remplacez l' X:endroit où vous le montez sous Windows).

Compilé à partir du sujet 1442148 sur UF.org .

J'ai fait fonctionner la version Ubuntu; donc en partie non testé car je n'ai pas Windows

Rinzwind
la source
Très belle réponse! Juste deux commentaires: il existe déjà de nombreux noms de cas mixtes et son utilisation lower_case_table_names=1fonctionne très bien. Sans vos options de montage, j'ai rencontré ce bug (qui est à mon humble avis un bug).
maaartinus
"sudo mv / var / lib / mysql / dev / {sdXN} / mysql_data" donne une erreur. Voir unix.stackexchange.com/questions/310433/…
Vue elliptique du
1

Si vous avez ajouté une partition Linux à un environnement précédemment uniquement Windows, vous pouvez utiliser la base de données en place avec seulement quelques ajustements mineurs. Version longue ici , version courte:

Vous devrez mount --bind '/media/windows/ProgramData/MySQL/MySQL Server 5.5/data' /var/lib/mysqlexécuter au démarrage (en supposant que vous montez votre lecteur Windows pour /media/windowsutiliser fstab).

Afin de contourner la vérification de la taille des journaux d'innodb, vous devrez déplacer les journaux d'innodb pour la partition ubuntu. Dans my.cnf, ajoutez de innodb_log_group_home_dir = /var/log/mysqlsorte que les journaux se trouvent à côté du journal des erreurs mysql.

Josiah
la source