Déplacement de la base de données MySQL MyISAM pour séparer le lecteur
Dans mon installation de MySQL j'ai une base de données MyISAM qui je sais va devenir très volumineux donc, j'ai décidé de le déplacer sur son propre disque. J'espérais le faire en déplaçant les fichiers sur l'autre disque, puis de créer un lien symbolique, mais je croise les erreurs!
C'est ce que j'ai fait:
1) Dans mon.cnf j'ai mis
[mysqld]
innodb_file_per_table
(Cela fonctionne, j'en ai un .mici par .frm dans le dossier de base de données.)
2)j'ai vérifié si les liens symboliques sont ok avec SHOW VARIABLES LIKE "have_symlink";
(Je sais que la documentation dit:
Liens symboliques sont entièrement pris en charge uniquement pour les
Les tables MyISAM. Pour les fichiers utilisés par
tables pour d'autres moteurs de stockage, vous
peut obtenir d'étranges problèmes si vous essayez de
utiliser des liens symboliques.
Mais j'ai besoin de clés étrangères...)
3) j'ai déplacé le dossier de base de données et créé un lien symbolique.
4) Redémarrage de mysql et essayé:
mysql> USE db_name
Database changed
mysql> SHOW TABLES;
ERROR 1018 (HY000): Can't read dir of './db_name/' (errno: 13)
mysql> exit
user@comp# perror 13
OS error code 13: Permission denied
lien symbolique est (comme prévu) lrwxrwxrwx mysql mysql db_name -> /path-to/db_name/
de la base de données des autorisations de dossier sont drwx------ mysql mysql
toutes les autorisations de fichier sont -rw-rw---- mysql mysql
J'utilise Ubuntu 10.04 Serveur avec MySQL 5.1.41 (par défaut à partir d'apt).
N'avez-vous fait cela avec succès?
source d'informationauteur Norling
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr que votre solution est la meilleure idée. Voir mon post ici:
http://www.mysqlperformanceblog.com/2010/12/25/spreading-ibd-files-across-multiple-disks-the-optimization-that-isnt/
Il y a aussi cet autre fil ici:
Innodb; plusieurs répertoires de données
S'avère que cela fonctionne, mais mon vieil ennemi appArmor bloqué MySQL à partir de la lecture du répertoire déplacé.
ajouter les lignes:
Merci de votre aide!
Norling Jr sauvé ma journée avec la AppArmor astuce, mais depuis j'ai eu quelques difficultés à configurer, je suis en train d'écrire une réponse plus détaillée. Je suis sous Ubuntu 12.04.
Commencer à devenir root pour enregistrer le besoin de taper tout ce qui sudos:
Suivantes MySQL docsvous devez d'abord déplacer votre déjà créé base de données dir vers un autre chemin:
Voici mon premier piège. Vérifier si l'utilisateur mysql a accès à ce nouveau chemin d'accès:
Si vous avez accès refusé, vous devriez probablement vous donner l'autorisation d'exécution de chaque parent dir:
Test pour accéder à nouveau le fichier. Si cela ne fonctionne toujours pas, essayez de demander à une question dans un Débordement de Pile:-)
Lien le nouveau répertoire de l'emplacement et de lui donner les autorisations correctes:
Let's edit AppArmor fichier de configuration local. Vous shoudn pas changer /etc/apparmor.d/usr.sbin.mysqld fichier. Modifier le local conf afin de ne pas le perdre après les mises à jour système:
ajouter Norling Jr configurations:
Ne manquez pas la dernière virgule. Enregistrez le fichier et de le recharger AppArmor configuration:
Ce ne sera pas seulement de recharger AppArmor la configuration de MySql, mais aussi pour tester, si il n'y a pas d'erreur de syntaxe (une chose très importante). Si vous n'avez pas exécuter l'analyseur, la nouvelle conf ne sera pas appliqué.
Enfin il suffit d'ouvrir mysql client et le type
SHOW DATABASES
. Si votre base de données s'affiche, tout est probablement très bien. Type 'UTILISATION yourdatabase" pour une autre vérification.Plus robuste test permettrait également de recharger le service mysql: 'le service mysql restart" et essayez d'accéder à votre base de données.
Maintenant je m'en souviendrai la prochaine fois que j'ai besoin de le faire. Google et DONC sont les meilleurs ordinateur portable dans le monde 🙂
Il devrait être possible d'utiliser les supports (les liaisons) avec les autorisations appropriées et le mont oprions (y compris les selinux ou apparmor contextes):
Si je n'ai pas testé cette solution donc à utiliser à vos propres risques.