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?
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.
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).
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).
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.
Réponses:
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:
sdXN
pour l'instant).Déplacez le répertoire de données mysql d'Ubuntu vers la nouvelle partition.
en utilisant
mv
enregistre les autorisations.Créer un nouveau répertoire 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.Pour monter automatiquement au démarrage, trouvez l'UUID et les paramètres régionaux de la partition et modifiez-les
/etc/fstab
.Modifiez le chemin «datadir»
/etc/mysql/my.cnf
pour 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' surX:/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
la source
lower_case_table_names=1
fonctionne très bien. Sans vos options de montage, j'ai rencontré ce bug (qui est à mon humble avis un bug).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/mysql
exécuter au démarrage (en supposant que vous montez votre lecteur Windows pour/media/windows
utiliser 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 deinnodb_log_group_home_dir = /var/log/mysql
sorte que les journaux se trouvent à côté du journal des erreurs mysql.la source