Publié sur WindowsLinux.net (http://www.windowslinux.net)
Accueil > MySQL
MySQL [1]
Installation
L'installation sous Debian se fait très simplement :
aptitude install mysql-server-5.0
Un script très intéressante se trouve alors à cet emplacement : /usr/bin/mysql_secure_installation
Vérifier la version installée
Vous pouvez afficher la version de MySQL avec la commande suivante :
mysql -V
mysql Ver 14.14 Distrib 5.1.66, for debian-linux-gnu (i486) using readline 6.1
Pour visualiser l'état de fonctionnement de la base de données
/etc/init.d/mysql status
/usr/bin/mysqladmin Ver 8.42 Distrib 5.1.66, for debian-linux-gnu on i486
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Server version 5.1.66-0+squeeze1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 22 days 1 hour 34 min 12 sec
Threads: 1 Questions: 4587718 Slow queries: 359 Opens: 220952 Flush tables: 1 Open tables: 256 Queries per second avg: 2.406.
Comment démarrer/arrêter/redémarrer une base de données
Dans le cas d'une base de données classique :
/etc/init.d/mysql (start|stop|restart|reload|force-reload)
Dans le cas d'un noeud de cluster :
/etc/init.d/mysql-ndb (start|stop|restart|reload|force-reload)
Dans le cas d'un médiateur de cluster :
/etc/init.d/mysql-ndb-mgm (start|stop|restart|reload|force-reload)
Fichiers de configuration
Tous les fichiers se trouvent dans le dossier /etc/mysql :
debian.cnf : fichier de configuration généré automatiquement par Debian, contient le login de
l'utilisateur système Debian dans MySQL ainsi que son mot de passe. Cet utilisateur permet à Debian
de faire la maintenance des bases de MySQL.
Exemple :
#Automatically generated for Debian scripts. DO NOT TOUCH!
client host = localhost
user = debian-sys-maint
password = XXXXXXXXXXXXXXXXsocket = /var/run/mysqld/mysqld.sock
debian-log-rotate.conf : Définit la quantité de fichiers de logs à stocker. Exemple :
KEEP_BINARY_LOGS=2
debian-start : Script qui contient la liste des opérations de maintenance à effectuer lors du démarrage
de MySQL. Exemple :
#!/bin/bash
#
# This script is executed by "/etc/init.d/mysql" on every (re)start.
#
# Changes to this file will be preserved when updating the Debian package.
#
source /usr/share/mysql/debian-start.inc.sh
MYSQL="/usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf"
MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
MYUPGRADE="/usr/bin/mysql_upgrade --defaults-extra-file=/etc/mysql/debian.cnf"
MYCHECK="/usr/bin/mysqlcheck --defaults-file=/etc/mysql/debian.cnf"
MYCHECK_SUBJECT="WARNING: mysqlcheck has found corrupt tables"
MYCHECK_PARAMS="--all-databases --fast --silent"
MYCHECK_RCPT="root"
# The following commands should be run when the server is up but in background
# where they do not block the server start and in one shell instance so that
# they run sequentially. They are supposed not to echo anything to stdout.
# If you want to disable the check for crashed tables comment
# "check_for_crashed_tables" out.
# (There may be no output to stdout inside the background process!)
echo "Checking for corrupt, not cleanly closed and upgrade needing tables."
(
upgrade_system_tables_if_necessary;
check_root_accounts;
check_for_crashed_tables;
) >&2 &
exit 0
my.cnf : Tous les paramètres de configuration de MySQL comme les ports/sockets d'écoute, les
interfaces réseaux autorisées, le tuning de la base, l'emplacement des logs et des fichiers de base de
données... Enfin, ce fichier définit si le serveur MySQL est un noeud de grappe de serveurs / cluster ou
un le maître du cluster.
Les commentaires dans ce fichier sont assez détaillés.
Localisation physique des données
Déterminer la localisation dans l'arborescence système des bases de données à partir du fichier de
configuration.
Par exemple pour MySQL, il se situe dans /var/lib/mysql
Afficher des informations précises sur la taille de chaque fichier :
du -hs /var/lib/mysql/*
Interfaces de connexion à la base de données
Web
PhpMyAdmin est l'interface web la plus utilisée pour gérer une base de données MySQL :
http://www.phpmyadmin.net/ [2]
Graphique
MySQL Administrator : http://www.mysql.com/products/tools/administrator/ [3]
Charge de la base de données
Connaître la charge moyenne d'une base de données permet d'anticiper la montée en charge et la migration
de la base de données vers un nouveau serveur ou un cluster de serveurs.
Le logiciel Nagios fournit une interface web afin d'afficher un état détaillé du serveur. Il permet également
d'envoyer une alerte mail ou SMS à l'administrateur système en cas de panne ou de saturation du serveur.
MySQL
MySQLAR ( http://gert.sos.be/en/projects/mysqlar/ [4] )est un logiciel qui génère des courbes à partir
de l'activité du serveur MySQL, très utile pour auditer des engorgements dans le temps. Site officiel :
http://gert.sos.be/en/projects/mysqlar/ [4] - Démonstration : http://gert.sos.be/demo/mysqlar/ [5]
Logs
Les logs sont des fichiers textes qui contiennent tout ce qui se passe dans le logiciel.
Ces fichiers sont importants pour détecter et localiser une panne. Les logs des distributions linux sont dans le
dossier : /var/log
/var/log/mysql.log contient toutes les erreurs autour du serveur MySQL. C'est le premier fichier à regarder
quand le serveur ne MySQL démarre pas. Il est possible d'activer des logs pour sauvegarder toutes les
requêtes, les modifications dans les tables ou pour identifier les requêtes les plus lentes.
Pour un détails sur les types de logs, lire : http://dev.mysql.com/doc/refman/5.1/en/log-files.html [6]
Sauvegardes
A chaud : La procédure recommandée pour sauvegarder est :
mysqldump --tab /emplacement/du/fichier.sql --opt nom_bdd
Ceci génère un fichier SQL de la base de données qui est facile à compresser et à sauvegarder.
Voir la documentation détaillée : http://dev.mysql.com/doc/refman/5.1/en/backup.html [7]
A froid : Sauvegarder le dossier où MySQL stocke ses bases de données. (Généralement /var/lib/mysql)
Restauration
Si la sauvegarde a été effectuée à chaud :
mysql < nom_du_fichier.sql
Sinon : Arrêter le serveur, et copier la sauvegarde dans le dossier de travail MySQL, puis démarrer le
serveur.
Réplication MySQL
La procédure décrite ci-dessous explique la mise en place d'une sauvegarde de l'intégralité d'un serveur
MySQL avec une mise à jour automatique entre les deux serveurs.
De nombreuses informations sont disponibles ici : http://dev.mysql.com/doc/refman/5.0/fr/replication-
howto.html [8]
Pré-requis
Deux serveurs MySQL.
Un compte root MySQL pour chaque serveur.
Accès ssh.
Adresse IP ou nom d?hôte du maitre MySQL. Le Maitre est le serveur à sauvegarder, l'esclave est le
serveur de sauvegarde.
Préparation du Maitre
Il faut :
Un compte de réplication (à créer), ayant l'autorisation de connexion afin d'obtenir les mises à jour.
Modifier la configuration du serveur.
Faire une sauvegarde complète des données à un instant T connu.
Sauvegarder le fichier de configuration debian.cnf.
Création du compte de réplication
Cette étape peut être fait avec PHPMyAdmin, ou en ligne de commande (console mysql). Concernant
PHPMyAdmin, la gestion des comptes via le lien Privilèges. On accède tout à la console MySQL de la
manière suivante :
maitre:~# mysql -u root -p Puis saisissez votre mot de passe. Pour information :
% désigne le host.
% désigne aussi les bases de données.
Utilisation de REPLICATION SLAVE pour les privilèges de l'utilisateur de réplication. En utilisant
ces paramètres :
le compte de réplication peut accéder à l'ensemble des bases de données.
depuis n'importe quelle machine. Afin de définir l'IP du serveur Esclave, ou de définir les bases
sauvegardées, reportez vous à http://dev.mysql.com/doc/refman/5.0/fr/replication-howto.html [8] la
documentation MySQL sur le site officiel . Ensuite il faut saisir :
CREATE USER 'esclave'@ '%' IDENTIFIED BY '***'; GRANT REPLICATION SLAVE ON * . * TO 'esclave'@ '%' IDENTIFIED BY '***' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; GRANT ALL PRIVILEGES ON `esclave_%` . * TO 'esclave'@ '%';
Vérification de la configuration
Vérifier que les paramètres suivants sont présents dans le fichier : /etc/mysql/my.cnf
mysqld log-bin server-id=master_id
Le master_id est un entier compris entre 1 et 2^32 ? 1.
Si ces informations ne sont pas présentes, et qu'elles sont ajoutées, il faut relancer (ou arrêter et lancer)
MySQL :
/etc/init.d/mysql stop
/etc/init.d/mysql start
Exporter les données
La réplication ne se fait que si :
Il existe un référentiel de temps commun.
Une copie des données exactes à cet instant T. Pour réaliser cette copie, il existe plusieurs solutions.
Ici encore la documentation officielle de MySQL vous guidera dans les choix. Quelque soit votre
configuration MySQL (Myisam, innodb, ...) cette solution, bien que lente, devrait fonctionner :
ServeurMaitre:~# mysqldump -u root -p --all-databases --master-data > export.sql
1 / 12 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !