Retour : Page Principale > sommaire aide > sommaire aide logiciels

Mysql


Ressources


Déplacer le dossier de données de Mysql / Mariadb

Le dossier de données (datadir) se trouve par défaut dans /var/lib/mysql
C'est bien mais parfois on a des grosses bases de données et plus d'espace disponible sur /. On peut alors déplacer le dossier de données. Pour ce faire :

0. arrĂŞter le bousin
service mysql stop


1. déplacer les données
Créer un dossier de destination sur une autre partition, par exemple /home, qui appartienne à mysql :
mkdir /home/mysql
chown mysql:mysql /home/mysql

Déplacer les données de /var/lib/mysql dans ce dossier :
su mysql -s /bin/bash
cd /var/lib/mysql
cp -r * /home/mysql/
cd ..
mv mysql mysql.old #on sait jamais
ln -s /home/mysql mysql #Ă  tout hasard


2. vérifier les droits
Sur Ubuntu (entre autres), apparmor interdit au dĂ©mon  MySQL d'accĂ©der Ă  ce qu'il veut.
Modifier /etc/apparmor.d/usr.sbin.mysqld pour donner des droits sur /home/mysql au lieu de /var/lib/mysql

3. relancer le bousin
service mysql start


Logrotate pour le log des slow queries

# Logrotate script for MySQL slow queries
# Source : http://www.mysqlperformanceblog.com/2013/04/18/rotating-mysql-slow-logs-safely/
/var/mysql/slow_query.log {
    nocompress
    create 660 mysql mysql
    size 1G
    dateext
    missingok
    notifempty
    sharedscripts
    postrotate
       /usr/local/bin/mysql -e 'select @@global.long_query_time into @lqt_save; set global long_query_time=2000; select sleep(2); FLUSH LOGS; select sleep(2); set global long_query_time=@lqt_save;'
    endscript
    rotate 150
}


# Logrotate script pour MySQL server
# Source : http://administratosphere.wordpress.com/2011/12/02/log-rotation-for-mysql/
/var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log {
        daily
        rotate 7
        missingok
        create 640 mysql adm
        compress
        sharedscripts
        postrotate
                test -x /usr/bin/mysqladmin || exit 0
                MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/logrotate.cnf"
                if [ -z "`$MYADMIN ping 2>/dev/null`" ]; then
                  if killall -q -s0 -umysql mysqld; then
                    exit 1
                  fi 
                else
                  $MYADMIN flush-logs
                fi
        endscript
}


Pour analyser les slow queries