database mysql pas d'espace disponible

Je restituais une database de 200 Go dans une machine RHEL nouvellement installée. Cependant, lors de la restauration, je n'ai rencontré no space available problème d' no space available .

Est-il possible de changer le directory où sont stockées les bases de données?

Tout d'abord, j'ai pu vérifier qu'il était lié au problème d'espace en utilisant uniquement la requête mysql ci-dessous.

 mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name LIKE "%dir"' 

La command ci-dessus m'a renvoyé la sortie comme,

 +---------------------------+----------------------------+ | Variable_name | Value | +---------------------------+----------------------------+ | basedir | /usr | | character_sets_dir | /usr/share/mysql/charsets/ | | datadir | /var/lib/mysql/ | | innodb_data_home_dir | | | innodb_log_group_home_dir | ./ | | lc_messages_dir | /usr/share/mysql/ | | plugin_dir | /usr/lib/mysql/plugin/ | | slave_load_tmpdir | /tmp | | tmpdir | /tmp | +---------------------------+----------------------------+ 

Comme nous pouvons le voir dans la command ci-dessus, le datadir est présent dans /var/lib/mysql . Maintenant, je devais m'assurer que /var n'a pas assez d'espace pour accueillir la database, auquel cas ma détection est correcte. Je l'ai réalisé en utilisant la command ci-dessous.

 df -P /var | tail -1 | cut -d' ' -f 1 

La command ci-dessus indique fondamentalement le sharepoint assembly d'un directory particulier. Comme je le pensais, le sharepoint assembly était sous /dev/sda2 qui n'avait que 40 Go d' espace. Maintenant, changer le datadir est simple.

Arrêtez le service mysql en utilisant,

 service mysqld stop 

Editez le file /etc/my.cnf pour avoir le datadir sur une partition où nous avons assez d'espace. (Ceci est pour RHEL et peut varier selon la version du operating system). Après avoir changé le datadir , redémarrez le service mysql en utilisant la command,

 service mysqld start 

Les references

https://stackoverflow.com/questions/17968287/how-to-find-the-mysql-data-directory-from-command-line-in-windows

https://stackoverflow.com/questions/3274354/how-to-find-out-mount-partition-a-directory-or-file-is-on-linux-server

Oui, vous pouvez changer l'location de la database MySQL en changeant la variable datadir dans le file /etc/my.cnf

* Assurez-vous de sauvegarder vos données avant de tenter les étapes ci-dessous.

1.) Arrêtez le service mysqld (service mysqld stop).

2.) Editez /etc/my.cnf et changez la variable datadir à l'location que vous souhaitez (datadir = 'insert_dir_here'), et assurez-vous de noter l'location précédent pour l'étape suivante.

3.) Déplacez datatables de l'ancien location de datadir vers le nouvel location.

4.) Démarre le service mysqld (service mysqld start).

Oui, vous pouvez changer l'location où une database MySQL change en utilisant un paramètre dans le file my.cnf.