#1 Le 15/04/2010, à 10:37
- hannibal.76
[Résolu] deplacer l'emplacement par default des base de MYSQL
Bonjour a tous
J'ai une petit question:
Comment faire pour deplacé le repertoire qui contient les base de donnée MySql?
car, pour l'instant ils sont dans mon /var/lib/mysql mais moi je voudrai que mes bases soit dans /home/mysql
j'ai essayé de faire un lien avec ln mais cela ne fonctionne pas....
ln -s /home/mysql /var/lib/mysql
Quelqu'un sait 'il comment faire ceci ?
Merci d'avance pour votre aide
Dernière modification par hannibal.76 (Le 15/04/2010, à 16:36)
Hors ligne
#2 Le 15/04/2010, à 10:59
- spectre3brad
Re : [Résolu] deplacer l'emplacement par default des base de MYSQL
Utilise tu un outil du genre Webmin? Car personnellement je l'utilise et il y a une option si je me souviens bien pour deplacer l'emplacement. En ligne de commande par contre je pense que l'on peut le faire dans le .conf de Mysql. Sinon pourquoi cette volonté de déplacer les bases de données?
Hors ligne
#3 Le 15/04/2010, à 13:25
- francoisp31
Re : [Résolu] deplacer l'emplacement par default des base de MYSQL
oui tout à fait
tu peux déplacer le répertoire des fichiers de mysql .
tu stop juste la réplication si il y en a une sur le master et le slave si ta machine est le master, et que sur le slave si ta machine est le slave.
si tu n'as pas de réplication, tu fais juste un arrêt de mysql dans cet ordre
blocage du transactionnel
copie full (rsync par exemple)
arret de la base
remplacement de /var/lib/mysql par le lien vers le nouvel emplacement
bien vérifier le propriétaire des fichiers
ouvrir la base
et en cas de réplication la redémarrer.
c'est exactement mon cas :
lrwxrwxrwx 1 mysql root 16 fév 5 20:56 mysql -> /home/mysql/lib/
undertaker:/home/francois# ls -lrth /home/mysql/lib/
total 1,4G
-rw------- 1 mysql mysql 7 nov 17 20:53 mysql_upgrade_info
-rw-rw---- 1 mysql mysql 2,3M jan 28 20:10 mysqld-bin.000001
-rw-rw---- 1 mysql mysql 117 jan 28 20:32 mysqld-bin.000002
-rw-rw---- 1 mysql mysql 2,2M jan 28 21:02 mysqld-bin.000003
-rw-rw---- 1 mysql mysql 117 jan 28 21:03 mysqld-bin.000004
-rw-rw---- 1 mysql mysql 100 jan 28 21:03 mysqld-bin.index
-rw-rw---- 1 mysql mysql 117 jan 28 21:20 mysqld-bin.000005
drwx------ 2 mysql mysql 4,0K fév 2 21:15 fengoffice
drwx------ 2 mysql mysql 4,0K fév 11 13:12 velo
-rw-r--r-- 1 mysql mysql 0 fév 16 08:53 debian-5.0.flag
drwxr-xr-x 2 mysql mysql 4,0K fév 16 08:53 mysql
drwx------ 2 mysql mysql 4,0K fév 17 20:36 toto
drwx------ 2 mysql mysql 4,0K fév 18 21:19 centstorage
drwx------ 2 mysql mysql 4,0K fév 18 21:19 centreon
drwx------ 2 mysql mysql 4,0K fév 18 21:19 centstatus
-rw-rw---- 1 mysql mysql 5,0M fév 18 21:43 ib_logfile1
drwx------ 2 mysql mysql 4,0K fév 18 22:27 ndoutils
drwx------ 2 mysql mysql 4,0K fév 18 22:47 cacti
drwx------ 2 mysql mysql 4,0K fév 22 16:33 postfix
drwx------ 2 mysql mysql 12K mar 15 08:59 ndo
drwx------ 2 mysql mysql 4,0K mar 15 18:10 test_2
-rw-rw---- 1 mysql mysql 101M avr 6 05:45 mysql-bin.000170
-rw-rw---- 1 mysql mysql 8,8M avr 6 07:39 mysql-bin.000171
drwx------ 2 mysql mysql 4,0K avr 6 12:19 compendium
drwx------ 2 mysql mysql 4,0K avr 6 12:20 plan_migration2_1270549207283
-rw-rw---- 1 mysql mysql 101M avr 7 05:32 mysql-bin.000172
-rw-rw---- 1 mysql mysql 9,8M avr 7 07:41 mysql-bin.000173
-rw-rw---- 1 mysql mysql 101M avr 8 05:37 mysql-bin.000174
[...]
et comme tu vois ça marche depuis pas mal de temps, 2 mois, et la réplication se fait tjrs comme avant.
sudo mkdir /home/mysql
sudo chown mysql:mysql /home/mysql
Enfin, dernier détail à connaître : l’emplacement de vos données MySQL :
* sous Linux, généralement : /var/lib/mysql
1. stopper le service MySQL
2. déplacer le répertoire de données (au cas où)
3. créer le lien symbolique
4. copier les données dans le nouvel emplacement
5. relancer le service MySQL
Concrètement, ça se traduit comme ceci :
au minimum donc comme procédure celle ci :
tar zcf /home/file_mysql.tar.gz /var/lib/mysql/
mysqldump -u root -p --all-databases | gzip > /home/dump.full.$(date +%Y%m%d)
mkdir -P /home/mysql/lib
rsync -zauv /var/lib/mysql /home/mysql/lib
/etc/init.d/mysql stop
rm -rf /var/lib/mysql
ln -s /home/mysql/lib /var/lib/mysql
/etc/init.d/mysql start
en cas de réplication ou applicatifs qui utilisent la base il faut en plus stopper le transactionnel et/ou la réplication avant de faire la copie de fichier. c'est à peu près la seule restriction .
et bien sur 2 sauvegardes différentes une au niveau des fichiers et un export dump full histoire de faire ceinture+bretelles pour un éventuel retour-arrière.
une solution plus élégante encore :
tar zcf /home/file_mysql.tar.gz /var/lib/mysql/
mysqldump -u root -p --all-databases | gzip > /home/dump.full.$(date +%Y%m%d)
mkdir -P /home/mysql/lib
rsync -zauv /var/lib/mysql /home/mysql/lib
vi /etc/mysql/my.cnf
/etc/init.d/mysql restart
et si tout va bien au bout de 24H par exemple :
sudo rm -rf /var/lib/mysql # rha lovely j'aime faire des rm et ecrire des conneries sur les lignes de commandes critiques
!
dans ce cas il suffit de modifier donc le my.cnf tel que :
datadir = /var/lib/mysql
devient
datadir = /home/lib/mysql
Dernière modification par francoisp31 (Le 15/04/2010, à 13:29)
Que les puces d'un millier de chiens galleux infeste le cul de celui qui osera vous gacher ne serai ce
qu'une seule journée de votre vie et que les bras lui soient trop court pour qu'il puisse se le gratter.
Hors ligne
#4 Le 15/04/2010, à 16:06
- hannibal.76
Re : [Résolu] deplacer l'emplacement par default des base de MYSQL
merci pour ton aide,
mais en regardant ici
http://doc.ubuntu-fr.org/utilisateurs/mcpeter/mysql_astuces
j'ai vue que je dois modifié ce fichier
/etc/apparmor.d/usr.sbin.mysqld
Ceci est t'il vraiment utile ?
Mon probleme est que tout ceci doit ce retrouvé dans un script (script qui une fois terminé devra installé un serveur et toutes les appli qui vont avec ). Donc, je ne peux pas utilisé nano , vi ou autre....
Tout doit etre fait en shell, awk....
voila voila
merci de ton aide
EDIT:
Sa ne fonctionne pas.....
mon MYSQL ne veut plus demarré....
voici mon my.cnf
#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
# Here is entries for some specific programs
# The following values assume you have at least 32M ram
# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
#
# * Basic Settings
#
#
# * IMPORTANT
# If you make changes to these settings and your system uses apparmor, you may
# also need to also adjust /etc/apparmor.d/usr.sbin.mysqld.
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /home/mysql
tmpdir = /tmp
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
#
# * Fine Tuning
#
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover = BACKUP
#max_connections = 100
#table_cache = 64
#thread_concurrency = 10
#
# * Query Cache Configuration
#
query_cache_limit = 1M
query_cache_size = 16M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file = /var/log/mysql/mysql.log
#general_log = 1
#
# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
#
# Here you can see queries with especially long duration
#log_slow_queries = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
# other settings you may need to change.
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
#no-auto-rehash # faster start of mysql but no tab completition
[isamchk]
key_buffer = 16M
#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/
mon usr.sbin.mysqld
# vim:syntax=apparmor
# Last Modified: Tue Jun 19 17:37:30 2007
#include <tunables/global>
/usr/sbin/mysqld {
#include <abstractions/base>
#include <abstractions/nameservice>
#include <abstractions/user-tmp>
#include <abstractions/mysql>
#include <abstractions/winbind>
capability dac_override,
capability sys_resource,
capability setgid,
capability setuid,
network tcp,
/etc/hosts.allow r,
/etc/hosts.deny r,
/etc/mysql/*.pem r,
/etc/mysql/conf.d/ r,
/etc/mysql/conf.d/* r,
/etc/mysql/my.cnf r,
/usr/sbin/mysqld mr,
/usr/share/mysql/** r,
/var/log/mysql.log rw,
/var/log/mysql.err rw,
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
/home/mysql/ r,
/home/mysql/** rwk
/var/log/mysql/ r,
/var/log/mysql/* rw,
/var/run/mysqld/mysqld.pid w,
/var/run/mysqld/mysqld.sock w,
}
et voici les actions que j'ai fait:
mkdir /home/mysql
chown mysql:mysql /home/mysql
/etc/init.d/mysql stop
cp -r /var/lib/mysql/mysql /home/mysql
mv ./my.cnf /etc/mysql
mv ./usr.sbin.mysqld /etc/apparmor.d/usr.sbin.mysqld
ln -s /home/mysql/lib /var/lib/mysql
reboot
aprés reboot, le serveur mysql n'est pas lancé donc je fait
/etc/init.d/mysql start
et la j'ai ceci
/etc/init.d/mysql start
* Starting MySQL database server mysqld [fail]
mes log
/var/log/mysql.err et /var/log/mysql.log sont vide
Donc je ne sais pas d'ou viens l'erreur....
Voila donc si vous avez une idée sur le probleme...
je vous remercie d'avance
EDIT 2:
j'ai réussi en faisant comme ceci
/etc/init.d/mysql stop
mv /var/lib/mysql /home/mysql
ln -s /home/mysql /var/lib/mysql
mv ./usr.sbin.mysqld /etc/apparmor.d/usr.sbin.mysqld
Merci a vous pour votre aide
Dernière modification par hannibal.76 (Le 15/04/2010, à 16:35)
Hors ligne
#5 Le 15/04/2010, à 18:06
- francoisp31
Re : [Résolu] deplacer l'emplacement par default des base de MYSQL
bon tu as trouvé c'est le principal
Que les puces d'un millier de chiens galleux infeste le cul de celui qui osera vous gacher ne serai ce
qu'une seule journée de votre vie et que les bras lui soient trop court pour qu'il puisse se le gratter.
Hors ligne
#6 Le 16/04/2010, à 09:35
- hannibal.76
Re : [Résolu] deplacer l'emplacement par default des base de MYSQL
Oui, mais ton aide ma été trés utile pour me guidé
je t'en remercie
Hors ligne
#7 Le 25/05/2013, à 12:11
- jmax
Re : [Résolu] deplacer l'emplacement par default des base de MYSQL
Attention au fichier /etc/apparmor.d/usr.sbin.mysqld qui liste les répertoires autorisés. Il faut aller changer /var/lib/mysql par le chemin du nouveau répertoire
Hors ligne