Est-il possible de changer mon répertoire de données MySQL par défaut vers un autre chemin? Pourrai-je accéder aux bases de données à partir de l'ancien emplacement?
Ce qui précède n'a pas réussi à résoudre le problème pour moi sur Ubuntu 12.04 (précis). J'ai découvert qu'il fallait éditer le fichier /etc/apparmor.d/tunables/alias pour inclure une ligne "alias / var / lib / mysql / -> / newpath /", avec ceci en place, je n'avais pas besoin de modifications dans l'un des autres fichiers AppArmor. Cela a fonctionné immédiatement après le redémarrage d'AppArmor avec "/etc/init.d/apparmor restart" et MySQL avec "restart mysql".
sur l'édition de mak (ce qui est nécessaire) n'oubliez pas la virgule à la fin de la lignealias /var/lib/mysql/ -> /newpath/,
Michael
4
Je ne saurais trop insister sur l'importance du commentaire de Michel ci-dessus: AJOUTER UN COMMA DE TRAILING et sauver quelques neurones. Désolé pour les casquettes.
alx
2
Ça ne marche pas pour moi. J'obtiens Job pour mysql.service a échoué. Voir 'systemctl status mysql.service' et 'journalctl -xn' pour plus de détails lorsque vous essayez de redémarrer mysqld, et l'erreur est que le disque est plein. Il a 500 Go d'espace libre ...
Frank H.
17
Rapide et facile à faire:
#Create new directory for MySQL data
mkdir /new/dir/for/mysql
#Set ownership of new directory tomatch existing one
chown --reference=/var/lib/mysql /new/dir/for/mysql#Set permissions on new directory tomatch existing one
chmod --reference=/var/lib/mysql /new/dir/for/mysql# Stop MySQL before copying over files
service mysql stop
# Copy all files indefault directory,to new one, retaining perms (-p)
cp -rp /var/lib/mysql/* /new/dir/for/mysql/
Modifiez le /etc/my.cnffichier, et sous [mysqld]ajoutez cette ligne:
datadir=/new/dir/for/mysql/
Si vous utilisez CageFS (avec ou sans CloudLinux) et souhaitez changer le répertoire MySQL, vous DEVEZ ajouter le nouveau répertoire à ce fichier:
Un grand merci, et pour ajouter si vous voulez écrire complètement ceci comme je l'ai fait, vous pouvez utiliser ceci: sed -i 's | datadir = / var / lib / mysql | datadir = / data / var / lib / mysql | g' / etc / my.cnf
berimbolo
Cela n'a pas fonctionné pour moi. J'ai essayé ceci et beaucoup d'autres alternatives différentes. J'arrive à la même conclusion que user3338098 quand il dit que c'est la seule façon qui fonctionne: serverfault.com/questions/503887/…
Volksman
@Volksman tout ce que le lien dit, c'est qu'il a dû supprimer et réinstaller ... il y a de fortes chances que vous ayez tous les deux un autre problème spécifique au serveur, car MySQL et MariaDB prennent tous deux en charge la configuration de datadir, et je l'ai récemment fait (il y a 6 mois) sur un autre serveur sans problèmes
sMyles
@sMyles oui, il a été supprimé et installé mais après avoir monté / var / lib / mysql ailleurs, c'est à dire une méga partition contrairement à celle sur laquelle / var était précédemment montée. S'il y a un problème spécifique avec nos systèmes, ce serait formidable de comprendre que c'est le cas. Il s'agissait d'une nouvelle installation standard du système d'exploitation Centos 7 avec RAID 10 avec disque dur 8x, mais généralement ces détails de la matrice de disques sont transparents pour le logiciel.
Volksman
15
vous devrez copier les données actuelles dans le nouveau répertoire et changer my.cnfvotre MySQL.
Eh bien, c'est ce que je ne peux pas faire. Je veux changer de répertoire mais je veux créer de nouvelles bases de données dans un nouveau répertoire. Et vous voulez accéder à la fois à l'ancien répertoire et aux nouvelles bases de données de répertoire.
MySQL DBA
1
@MySQL DBA: si vous utilisez du ln -slynx symbolique statique, cela ne le fera-t-il pas?
RageZ
Eh bien, je suis un peu confus avec l'utilisation de cette commande. Comme je l'ai expliqué précédemment, je souhaite créer de nouvelles bases de données dans un nouveau répertoire. Est-ce possible avec un lien symbolique.
MySQL DBA
1
vous pouvez créer un nouveau répertoire, utiliser un lien symbolique pour faire apparaître le fichier dans le nouveau my.cnf
Si comme moi vous êtes sur debian et que vous souhaitez déplacer le répertoire mysql vers votre domicile ou un chemin sur / home / ..., la solution est:
Arrêtez mysql par "sudo service mysql stop"
remplacez la variable "datadir" par le nouveau chemin dans "/etc/mysql/mariadb.conf.d/50-server.cnf"
Faites une sauvegarde de / var / lib / mysql: "cp -R -p / var / lib / mysql / path_to_my_backup"
supprimer ce répertoire: "sudo rm -R / var / lib / mysql"
Déplacer les données vers le nouveau répertoire: "cp -R -p / path_to_my_backup / path_new_dir
Modifier l'accès par "sudo chown -R mysql: mysql / path_new_dir"
Remplacez la variable "ProtectHome" par "false" sur "/etc/systemd/system/mysqld.service"
Recharger systemd par "sudo systemctl daemon-reload"
Redémarrez mysql par "service mysql restart"
Un jour pour trouver la solution pour moi sur la documentation mariadb. J'espère que cela aidera certains gars!
Le fichier /etc/systemd/system/mysqld.service n'est pas ici. Une idée de l'endroit où je dois regarder?
Ron Piggott
1
Pour ceux qui utilisent MariaDB, le fichier de service se trouve à /lib/systemd/system/[email protected]
Ron Piggott
5
Je voulais garder une base de données sur ma machine, mais aussi avoir une donnée sur mon disque dur externe, et basculer entre l'utilisation des deux.
Si vous êtes sur un Mac et que vous avez installé MySQL à l'aide de Homebrew, cela devrait fonctionner pour vous. Sinon, il vous suffira de remplacer les emplacements appropriés pour MySQL datadirsur votre machine.
#cd to my data dir location
cd /usr/local/var/#copy contents of local data directory to the new location
cp -r mysql//Volumes/myhd/mydatadir/#temporarily move the old datadir
mv mysql mysql.local
#symlink to the new location
ln -s /Volumes/myhd/mydatadir mysql
Ensuite, pour revenir en arrière, faites simplement:
mv mysql mysql.remote
mv mysql.local mysql
et vous utilisez à nouveau votre base de données locale. J'espère que cela pourra aider.
cela ne répond pas exactement à la question comme indiqué - cependant c'était exactement ce que je recherchais - et c'est une manière élégante de gérer un cas / bogue limite que my.cnf ne gère pas bien les espaces: bugs.mysql.com /bug.php?id=26033 . Je vais lier cette solution de contournement à ce rapport de bogue.
Puis changez datadir dans votre /etc/mysql/my.cnf
démarrage mysqld
Remarques:
# 1: vous devez probablement ajuster vos paramètres SELinux (essayez avec SELinux désactivé en cas de problèmes), Apparmor (Ubuntu) peut également être un problème.
peut-être que cela ne fonctionne pas pour une autre distribution, mais si vous utilisez ubuntu, cela fonctionne très bien pour moi et je change de chemin pour chaque nouveau serveur ubuntu installé pour activer raid0.
naddame
2
Je sais que les gens votent contre cela, mais je tiens à vous dire que cela m'a sauvé la journée. Merci!
Daniel Loureiro
3
Cette solution fonctionne sous Windows 7 à l'aide de Workbench. Vous aurez besoin des privilèges d'administrateur pour ce faire. Il crée une jonction (comme un raccourci) vers l'endroit où vous voulez vraiment stocker vos données
Ouvrez Workbench et sélectionnez INSTANCE - Startup / Shutdown Arrêtez le serveur
Accédez à C: \ ProgramData \ MySQL \ MySQL Server 5.6
Cliquez avec le bouton droit de la souris sur Données et sélectionnez «DÉPLACER, puis LIER le dossier vers ...» Acceptez l'avertissement Pointez la destination vers «Votre nouveau répertoire de données ici sans les guillemets» Cliquez sur DÉPLACER ET LIER
Allez maintenant dans "Votre nouveau répertoire de données ici sans les guillemets"
Cliquez avec le bouton droit sur Données Allez dans l'onglet de sécurité Cliquez sur Modifier Cliquez sur Ajouter un type de SERVICE RÉSEAU puis sur Vérifier les noms Cliquez sur OK Cliquez sur la case à cocher Autoriser le contrôle total, puis sur OK
Revenez à Workbench et démarrez le serveur
Cette méthode a fonctionné pour moi en utilisant MySQL Workbench 6.2 sur Windows 7 Entreprise.
Vous feriez mieux de ne pas changer /etc/mysql/my.cnf
Au lieu de cela, vous voulez créer un nouveau fichier /etc/mysql/conf.d/ext.cnf(n'importe quel nom, mais l'extension devrait être cnf)
Et mettez-y votre monnaie:
[mysqld]
datadir=/vagrant/mq/mysql
De cette façon
Vous n'avez pas besoin de modifier le fichier existant (plus facile pour les scripts d'automatisation)
Aucun problème avec la mise à jour de la version MySQL (et c'est configs!).
Si vous êtes un utilisateur Windows et que vous atterrissez ici pour découvrir que toutes les réponses sont destinées aux utilisateurs Linux, ne soyez pas déçu! Je ne vous laisserai pas perdre votre temps comme je l'ai fait.
Un peu de conneries avant la solution:
MySQL utilise un répertoire de données pour stocker les données des différentes bases de données que vous créez. Eh bien, à la fin, il doit les stocker sous la forme de fichiers avec un peu de jonglerie supplémentaire dans l'application et le format de fichier pour s'assurer que les promesses de base de données que vous avez apprises dans les classes de bases de données sont intactes.
Maintenant, vous voulez vous assurer qu'il y a suffisamment d'espace pour stocker de grandes bases de données que vous pourriez créer à l'avenir, et vous vous êtes donc dit, Hey! Je veux le mettre dans un autre lecteur qui a plus d'espace.
Alors vous faites ce qui suit.
Étape - 1 : Arrêt du service MySQL.
Window Key+ R - will open Run
servies.msc - will open services manager
Locate MySQL80 (80isfor version 8.0, look for the one you've).
Stop it.(Right click, Stop)
Étape - 2 : recherche du répertoire de données actuel
Goto C:\ProgramData\MySQL\MySQL Server 8.0
Par défaut, il devrait y avoir un dossier nommé ici Data , c'est celui qui est utilisé par MySQL dans les paramètres par défaut (à condition qu'ils n'aient pas trouvé un autre meilleur emplacement), mais vérifions cela.
Trouver le my.inifichier, devrait être là.
Ouvrez-le dans un éditeur (Notepad ++ peut-être).
Faites un CTRL + F pour le découvrir datadirdans le fichier.
Tout ce qui est mentionné ici est l'emplacement réel actuellement utilisé par MySQL pour le répertoire de données. C'est ce que vous voulez changer.
Étape - 3 : Remplacement par un nouveau répertoire de données.
Supposons que vous souhaitiez que votre nouveau répertoire de données soit W: __ MySQL_Data. Modifions la
datadirvaleur du my.inifichier en cette valeur. Gardez la valeur précédente commentée afin que vous n'ayez pas à vous en souvenir.
# Path to the database root
# datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Data
datadir=W:/__MySQL_Data
Maintenant, utilisez xcopypour copier la valeur par défaut datadirdans W:\. Lancez l'invite de commande (Fenêtre + R, cmd, Entrée)
>> xcopy "\C:\ProgramData\MySQL\MySQL Server 8.0""W:\"/E /H /K /O /X
Et renommez le dossier copié avec la nouvelle datadirvaleur que vous avez modifiée. Ici:W:/__MySQL_Data
Pourquoi ne pas simplement copier? Eh bien, parce que ce n'est pas COOL !, cela vous aide à ne pas perdre les autorisations sur le dossier copié, de sorte que lorsque vous redémarrez MySQL80, cela ne donnera pas une erreur stupide: "Le service MySQL80 sur l'ordinateur local a démarré puis arrêté. Certains services s'arrêtent automatiquement si ils ne sont pas utilisés par d'autres services ou programmes. " - Gracieuseté: Microsoft
Étape - 4 : Redémarrage du service
Well, go back to the Services Manager toStart again,"MySQL80" that you stopped,to restart it again.
Étape - 5 : Terminé! Maintenant remets-toi au travail !!
Merci qui a été utile mais avertissement: my.ini n'est pas accessible en écriture par un utilisateur normal à moins que vous ne modifiiez ses autorisations. Oh et ProgramData est un dossier caché, vous devez donc modifier les paramètres du dossier Explorer pour le voir.
JonP
1
J'ai souvent besoin de le faire lors de la mise à niveau des machines, en passant d'une boîte à l'autre. En plus de déplacer / var / lib / mysql vers un meilleur emplacement, j'ai souvent besoin de restaurer d'anciennes tables de base de données à partir d'une ancienne installation MySQL. Pour ce faire ...
Arrêtez mysql. Suivez les instructions ci-dessus, si nécessaire.
Copiez les répertoires de la base de données - il y en aura un pour chacune des bases de données de votre ancienne installation - vers le nouvel emplacement DATADIR. Mais omettez les répertoires "mysql" et "performance_schema".
Corrigez les autorisations parmi les répertoires de base de données copiés. La propriété doit être mysql: mysql, les répertoires doivent être 700 et les fichiers 660.
Redémarrez mysql. En fonction de votre installation, les anciens fichiers de base de données doivent être mis à jour.
désolé pour le vote négatif, cette solution est peut-être correcte, je ne l'ai pas essayée.
user3338098
1
Nous avons dû déplacer MySQL dans le /homerépertoire car il était mappé à partir d'un autre disque physique. Afin de simplifier le live, au lieu de changer de répertoire dans my.cnf, nous avons mappé le nouveau répertoire /home/mysqlà la place du répertoire d'origine/var/lib/mysql . Cela fonctionne pour nous comme un charme (testé sur CentOS 7.1).
Créez le nouveau répertoire et définissez les autorisations appropriées.
Si vous souhaitez le faire par programme (pas de saisie de texte manuelle avec gedit), voici une version pour un Dockerfile basée sur la réponse de user1341296 ci-dessus:
FROM spittet/ruby-mysql
MAINTAINER you@gmail.com
RUN cp -R -p /var/lib/mysql /dev/shm &&\
rm -rf /var/lib/mysql &&\
sed -i -e 's,/var/lib/mysql,/dev/shm/mysql,g'/etc/mysql/my.cnf &&\/etc/init.d/mysql restart
Sous SuSE 13.1, cela fonctionne très bien pour déplacer le répertoire de données mysql ailleurs, par exemple vers / home / example_user /, et pour lui donner un nom plus informatif:
Dans / var / lib /:
# mv -T mysql /home/example_user/mysql_datadir
# ln -s /home/example_user/mysql_datadir ./mysql
J'ai redémarré mysql:
# systemctl restart mysql.service
mais soupçonnez que même cela n'était pas nécessaire.
Pour l'un des environnements, j'ai changé le répertoire de données mysql vers un nouvel emplacement mais lors du redémarrage du serveur mysql, cela prenait du temps. J'ai donc vérifié le port et j'ai trouvé qu'un autre processus écoutait sur le port mysql. J'ai donc tué le processus et redémarré le serveur mysql et cela a bien fonctionné.
Bienvenue dans Stack Overflow! Bien que cela puisse théoriquement répondre à la question, il serait préférable d'inclure ici les parties essentielles de la réponse et de fournir le lien pour référence.
Tim Diekmann
0
Les étapes ci-dessus sont fondamentales et élémentaires. Je les ai suivis et j'ai toujours l'erreur de "mysql n'a pas réussi à démarrer".
Pour que le nouveau dossier stocke les données mysql, vous devez vous assurer que le dossier dispose des autorisations et de la propriété mysql: mysql.
En plus de cela, il doit vérifier les autorisations et la propriété du répertoire parent de mysql s'il a, par exemple, / data / mysql /. Ici, le répertoire / data / doit être root: root. J'ai corrigé l'erreur "mysql n'a pas réussi à démarrer" après avoir changé la propriété du répertoire parent de / mysql. Le système d'exploitation de ma machine virtuelle est RHEL 7.6.
J'ai essayé selinux dans RHEL7.6 en changeant SELINUX = enforcing en SELINUX = permissive, cela n'a pas fonctionné pour moi.
user3325137William
0
Il est également possible de créer un lien symbolique sur le datadir. Au moins dans macOS, environnement de développement.
(homebrew) par exemple
# make sure you're not overwriting anything important,backup existing data
mv /usr/local/var/mysql [your preferred data directory]
ln -s [your preferred data directory]/usr/local/var/mysql
Réponses:
Arrêtez MySQL à l'aide de la commande suivante:
Copiez le répertoire de données existant (situé par défaut dans
/var/lib/mysql
) à l'aide de la commande suivante:éditez le fichier de configuration MySQL avec la commande suivante:
Recherchez l'entrée
datadir
et modifiez le chemin d'accès (qui devrait être/var/lib/mysql
) vers le nouveau répertoire de données.Dans le terminal, entrez la commande:
Recherchez les lignes commençant par
/var/lib/mysql
. Changez/var/lib/mysql
les lignes avec le nouveau chemin.Enregistrez et fermez le fichier.
Redémarrez les profils AppArmor avec la commande:
Redémarrez MySQL avec la commande:
Connectez-vous maintenant à MySQL et vous pourrez accéder aux mêmes bases de données que vous aviez auparavant.
la source
alias /var/lib/mysql/ -> /newpath/,
Rapide et facile à faire:
Modifiez le
/etc/my.cnf
fichier, et sous[mysqld]
ajoutez cette ligne:Si vous utilisez CageFS (avec ou sans CloudLinux) et souhaitez changer le répertoire MySQL, vous DEVEZ ajouter le nouveau répertoire à ce fichier:
Et puis exécutez cette commande:
la source
vous devrez copier les données actuelles dans le nouveau répertoire et changer
my.cnf
votre MySQL.Vous devez copier la base de données lorsque le serveur n'est pas en cours d'exécution .
la source
ln -s
lynx symbolique statique, cela ne le fera-t-il pas?my.cnf
Vous devez d'abord arrêter le serveur mysql. par exemple
Après cela, vous devez copier l'ancien répertoire de données (par exemple / var / lib / mysql) incl. privilèges sur votre nouveau répertoire via
maintenant vous pouvez modifier
/etc/mysql/my.cnf
les nouvelles données et redémarrer le serveurla source
Si comme moi vous êtes sur debian et que vous souhaitez déplacer le répertoire mysql vers votre domicile ou un chemin sur / home / ..., la solution est:
Un jour pour trouver la solution pour moi sur la documentation mariadb. J'espère que cela aidera certains gars!
la source
Je voulais garder une base de données sur ma machine, mais aussi avoir une donnée sur mon disque dur externe, et basculer entre l'utilisation des deux.
Si vous êtes sur un Mac et que vous avez installé MySQL à l'aide de Homebrew, cela devrait fonctionner pour vous. Sinon, il vous suffira de remplacer les emplacements appropriés pour MySQL
datadir
sur votre machine.Ensuite, pour revenir en arrière, faites simplement:
et vous utilisez à nouveau votre base de données locale. J'espère que cela pourra aider.
la source
Premier arrêt mysqld
Puis changez datadir dans votre
/etc/mysql/my.cnf
démarrage mysqld
Remarques:
# 1: vous devez probablement ajuster vos paramètres SELinux (essayez avec SELinux désactivé en cas de problèmes), Apparmor (Ubuntu) peut également être un problème.
# 2: voir MySQL Install DB Reference
la source
Arrêtez d'abord votre mysql
copiez les données mysql vers le nouvel emplacement.
si vous utilisez apparmor, modifiez le fichier suivant et procédez comme suit
Remplacez where / var / lib / par / yourdirectory / puis ajoutez le suivant s'il n'y en a pas au fichier
Enregistrez le fichier avec la commande
Editez le fichier my.cnf
Remplacez where / var / lib / par / yourdirectory / puis enregistrez avec la commande
enfin démarrer mysql
@ en savoir plus sur raid0, optimisation ici
la source
Cette solution fonctionne sous Windows 7 à l'aide de Workbench. Vous aurez besoin des privilèges d'administrateur pour ce faire. Il crée une jonction (comme un raccourci) vers l'endroit où vous voulez vraiment stocker vos données
Ouvrez Workbench et sélectionnez INSTANCE - Startup / Shutdown Arrêtez le serveur
Installez Junction Master depuis https://bitsum.com/junctionmaster.php
Accédez à C: \ ProgramData \ MySQL \ MySQL Server 5.6
Cliquez avec le bouton droit de la souris sur Données et sélectionnez «DÉPLACER, puis LIER le dossier vers ...» Acceptez l'avertissement Pointez la destination vers «Votre nouveau répertoire de données ici sans les guillemets» Cliquez sur DÉPLACER ET LIER
Allez maintenant dans "Votre nouveau répertoire de données ici sans les guillemets"
Cliquez avec le bouton droit sur Données Allez dans l'onglet de sécurité Cliquez sur Modifier Cliquez sur Ajouter un type de SERVICE RÉSEAU puis sur Vérifier les noms Cliquez sur OK Cliquez sur la case à cocher Autoriser le contrôle total, puis sur OK
Revenez à Workbench et démarrez le serveur
Cette méthode a fonctionné pour moi en utilisant MySQL Workbench 6.2 sur Windows 7 Entreprise.
la source
Tout comme @ user1341296 l'a dit, plus ...
Vous feriez mieux de ne pas changer
/etc/mysql/my.cnf
Au lieu de cela, vous voulez créer un nouveau fichier/etc/mysql/conf.d/ext.cnf
(n'importe quel nom, mais l'extension devrait êtrecnf
)Et mettez-y votre monnaie:
De cette façon
la source
Si vous êtes un utilisateur Windows et que vous atterrissez ici pour découvrir que toutes les réponses sont destinées aux utilisateurs Linux, ne soyez pas déçu! Je ne vous laisserai pas perdre votre temps comme je l'ai fait.
Un peu de conneries avant la solution:
MySQL utilise un répertoire de données pour stocker les données des différentes bases de données que vous créez. Eh bien, à la fin, il doit les stocker sous la forme de fichiers avec un peu de jonglerie supplémentaire dans l'application et le format de fichier pour s'assurer que les promesses de base de données que vous avez apprises dans les classes de bases de données sont intactes.
Maintenant, vous voulez vous assurer qu'il y a suffisamment d'espace pour stocker de grandes bases de données que vous pourriez créer à l'avenir, et vous vous êtes donc dit, Hey! Je veux le mettre dans un autre lecteur qui a plus d'espace.
Alors vous faites ce qui suit.
Étape - 1 : Arrêt du service MySQL.
Étape - 2 : recherche du répertoire de données actuel
Par défaut, il devrait y avoir un dossier nommé ici
Data
, c'est celui qui est utilisé par MySQL dans les paramètres par défaut (à condition qu'ils n'aient pas trouvé un autre meilleur emplacement), mais vérifions cela.Trouver le
my.ini
fichier, devrait être là.Ouvrez-le dans un éditeur (Notepad ++ peut-être).
Faites un CTRL + F pour le découvrir
datadir
dans le fichier.Tout ce qui est mentionné ici est l'emplacement réel actuellement utilisé par MySQL pour le répertoire de données. C'est ce que vous voulez changer.
Étape - 3 : Remplacement par un nouveau répertoire de données.
Supposons que vous souhaitiez que votre nouveau répertoire de données soit W: __ MySQL_Data. Modifions la
datadir
valeur dumy.ini
fichier en cette valeur. Gardez la valeur précédente commentée afin que vous n'ayez pas à vous en souvenir.Maintenant, utilisez
xcopy
pour copier la valeur par défautdatadir
dansW:\
. Lancez l'invite de commande (Fenêtre + R, cmd, Entrée)Et renommez le dossier copié avec la nouvelle
datadir
valeur que vous avez modifiée. Ici:W:/__MySQL_Data
Pourquoi ne pas simplement copier? Eh bien, parce que ce n'est pas COOL !, cela vous aide à ne pas perdre les autorisations sur le dossier copié, de sorte que lorsque vous redémarrez
MySQL80
, cela ne donnera pas une erreur stupide: "Le service MySQL80 sur l'ordinateur local a démarré puis arrêté. Certains services s'arrêtent automatiquement si ils ne sont pas utilisés par d'autres services ou programmes. " - Gracieuseté: MicrosoftÉtape - 4 : Redémarrage du service
Étape - 5 : Terminé! Maintenant remets-toi au travail !!
la source
J'ai souvent besoin de le faire lors de la mise à niveau des machines, en passant d'une boîte à l'autre. En plus de déplacer / var / lib / mysql vers un meilleur emplacement, j'ai souvent besoin de restaurer d'anciennes tables de base de données à partir d'une ancienne installation MySQL. Pour ce faire ...
la source
Nous avons dû déplacer MySQL dans le
/home
répertoire car il était mappé à partir d'un autre disque physique. Afin de simplifier le live, au lieu de changer de répertoire dans my.cnf, nous avons mappé le nouveau répertoire/home/mysql
à la place du répertoire d'origine/var/lib/mysql
. Cela fonctionne pour nous comme un charme (testé sur CentOS 7.1).Créez le nouveau répertoire et définissez les autorisations appropriées.
Arrêtez MySQL s'il est en cours d'exécution.
Déplacez le répertoire de données.
Créez une monture permanente et exécutez-la.
Redémarrez le serveur.
la source
Si vous souhaitez le faire par programme (pas de saisie de texte manuelle avec gedit), voici une version pour un Dockerfile basée sur la réponse de user1341296 ci-dessus:
Disponible sur Docker hub ici: https://hub.docker.com/r/richardjecooke/ruby-mysql-in-memory/
la source
Tout d'abord, vous devez savoir où se trouve votre fichier de configuration? où est votre fichier de configuration?
SI vous avez installé avec apt-get ou yum install。
le fichier de configuration peut apparaître dans
le fichier de données peut apparaître dans
et ce que tu devrais faire c'est
puis les travaux sont terminés.
Mais si vous ne l'avez pas installé avec apt ou yum, le répertoire peut ne pas l'aimer, et vous pouvez trouver les fichiers mysql avec
la source
Sous SuSE 13.1, cela fonctionne très bien pour déplacer le répertoire de données mysql ailleurs, par exemple vers / home / example_user /, et pour lui donner un nom plus informatif:
Dans / var / lib /:
J'ai redémarré mysql:
mais soupçonnez que même cela n'était pas nécessaire.
la source
Pour l'un des environnements, j'ai changé le répertoire de données mysql vers un nouvel emplacement mais lors du redémarrage du serveur mysql, cela prenait du temps. J'ai donc vérifié le port et j'ai trouvé qu'un autre processus écoutait sur le port mysql. J'ai donc tué le processus et redémarré le serveur mysql et cela a bien fonctionné.
J'ai suivi les étapes ci-dessous pour changer le répertoire de données qui a parfaitement fonctionné. changer le répertoire de données mysql sous Linux
la source
Les étapes ci-dessus sont fondamentales et élémentaires. Je les ai suivis et j'ai toujours l'erreur de "mysql n'a pas réussi à démarrer".
Pour que le nouveau dossier stocke les données mysql, vous devez vous assurer que le dossier dispose des autorisations et de la propriété mysql: mysql.
En plus de cela, il doit vérifier les autorisations et la propriété du répertoire parent de mysql s'il a, par exemple, / data / mysql /. Ici, le répertoire / data / doit être root: root. J'ai corrigé l'erreur "mysql n'a pas réussi à démarrer" après avoir changé la propriété du répertoire parent de / mysql. Le système d'exploitation de ma machine virtuelle est RHEL 7.6.
la source
Il est également possible de créer un lien symbolique sur le datadir. Au moins dans macOS, environnement de développement.
(homebrew) par exemple
Redémarrez mysql.
la source
Si vous utilisez SE Linux, réglez-le en mode permissif en éditant / etc / selinux / config et en changeant SELINUX = enforcing en SELINUX = permissive
la source
datadir
propriété