Outils pour utilisateurs

Outils du site


Panneau latéral

linux:mysql (lu 76996 fois)

Ceci est une ancienne révision du document !


MySQL

Optimisation

wget --no-check-certificate https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
perl mysqltuner.pl

Y’a plus qu’a corriger les valeurs des variables qu’il suggère et faire un restart de mysql ;)

Quelques commandes

Pour voir toutes les variables

mysqladmin variables -p
mysql> show variables;
mysql> show global variables like 'log_output';

Pour voir les status

mysql> show status;

Pour vérifier vos fichiers de config avant de redémarrer le service mysql

mysqld --help

ou

mysqld --verbose --help | head

Sauvegarder une base

mysqldump -u user -p nom_de_la_base > backup.sql

Sauvegarder toutes les tables avec un prefix

mysqldump -h hostname -u user -p $(mysql nom_de_la_base -h hostname -u user -p -Bse 'show tables like"phpbb\_%"') > dump_phpbb_.sql

Restaurer

mysql -u user -p nom_de_la_base < backup.sql

Process list

mysql>show processlist;

Kill process

mysql>kill "number from first col";

Logguer les requêtes en temps réel ponctuellement

Se connecter à mysql

mysql -h localhost -u root -p

Vérifier la config des logs

mysql> show global variables like 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | FILE  |
+---------------+-------+
1 row in set (0.00 sec)

mysql> show global variables like 'general_log_file';
+------------------+----------------------------+
| Variable_name    | Value                      |
+------------------+----------------------------+
| general_log_file | /var/run/mysqld/mysqld.log |
+------------------+----------------------------+
1 row in set (0.00 sec)

mysql> show global variables like 'general_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log   | OFF   |
+---------------+-------+
1 row in set (0.00 sec)

Activer les logs

mysql> set global general_log='ON';
Query OK, 0 rows affected (0.04 sec)

Désactiver les logs

mysql> set global general_log='OFF';
Query OK, 0 rows affected (0.02 sec)

Puis consulter votre fichier de log (ex:/var/run/mysqld/mysqld.log)

Faire un backup via un script php

<?php
$host = 'localhost';
$db = 'maBase';
$password = 'p4ssW0rD';
$user = 'root';
 
echo "Votre base est en cours de sauvegarde.......
 
";
system("mysqldump --host=$host --user=$user --password=$password $db > $db.sql");
echo "C'est fini. Vous pouvez récupérer la base par FTP";
?>

Plein d’exemples de codes de backup et restauration sur ⇒ http://vitobotta.com/smarter-faster-backups-restores-mysql-databases-with-mysqldump/

Percona XtraBackup

A tester ⇒ https://www.digitalocean.com/community/tutorials/how-to-create-hot-backups-of-mysql-databases-with-percona-xtrabackup-on-ubuntu-14-04

Permet des backups à chaud sans perte en copiant directement les fichiers de mysql et en appliquant les transactions en cours.

linux/mysql.1505917142.txt.gz · Dernière modification: 20-09-2017 16:19 de edmc73