MySQL

De Wiki.

Aller à : Navigation, rechercher

Sommaire

1 Réplication

1.1 Arrêt complet d'un esclave

Il est parfois nécessaire de complètement désactiver un esclave, par exemple pour le transformer en serveur "principal" ou "unique", voici la démarche:

mysql> stop slave;
mysql> change master to master_host='', master_user='',  master_password='';
mysql> reset slave;

2 Gestion des droits

2.1 Affichage des droits

2.1.1 Affichage des droits d'un utilisateur

Sur la ligne de commande MySQL:

show grants for 'user'@'host';

2.1.2 Affichage des droits de tous les utilisateurs

2.1.2.1 En shell

Directement en ligne de commande, ou dans un script:

mysql -s -e 'select User,Host from user' mysql |
while read user host
    do mysql -e "show grants for '$user'@'$host'" mysql | sed 's/^\(Grants \)/-- \1/'
done
2.1.2.2 Avec Maatkit

Si Maatkit est installé, il est possible d'utiliser la commande mk-show-grants

2.2 Création d'utilisateurs

2.2.1 Duplication d'un utilisateur

Voici comment dupliquer rapidement un utilisateur. Dans cette exemple, user2 est créé à partir de user1:

mysql -s -e "show grants for 'user1'@'server1'" | sed -e 's/user1/user2/g' -e 's/$/;/' | mysql

Attention: le mot de passe est bien sûr le même !

3 Sauvegardes

3.1 MyLvmBackup

3.2 Divers

3.2.1 Sauvegardes des routines

En utilisant mysqldump avec les options suivantes, il est possible de ne sauvegarder que les routines d'un schéma (procédures stockées et fonctions):

mysqldump --routines --no-data --no-create-info <database>

3.2.2 Limiter le nombre d'enregistrements

Pratique pour faire des tests:

mysqldump --where="true LIMIT 1000" <database> <table>

4 Outils

4.1 Maatkit

-- Attention: Maatkit fait maintenant parti de Percona Toolkit --

Maatkit est un ensemble d'outils en Perl améliorant la gestion de serveurs MySQL en rendant faciles certaines tâches.

Par exemple, voici quelques commandes fournies:

4.1.1 Installation sur RHEL 5 pour MySQL "Enterprise Edition"

Sur une machine en RHEL 5 dont le serveur MySQL 5.x a été installé à partir des paquetages RPM fournis pas MySQL:

4.1.2 A partir des sources

  1. Installer les paquetages RPM suivants, fournis par MySQL:
    • MySQL-shared-compat-advanced-gpl
    • MySQL-devel-advanced-gpl
  2. Installer les paquetages RPM suivants, fournis par RedHat:
    • perl-DBD-MySQL
    • perl-DBI
  3. Installer le paquetage RPM suivant, non fourni par RedHat:
    • perl-TermReadKey
  4. Installer Maatkit en suivant la procédure d'installation classique:
tar zxvf maatkit-XXXX.tar.gz
cd maatkit-XXXX
make
make install

4.1.3 A partir du paquetage RPM

  1. Installer le paquetages RPM suivant, fourni par MySQL:
    • MySQL-shared-compat-advanced-gpl
  2. Installer les paquetages RPM suivants, fournis par RedHat:
    • perl-DBD-MySQL
    • perl-DBI
  3. Installer le paquetage RPM suivant, non fourni par RedHat:
    • perl-TermReadKey
  4. Installer le paquetage RPM fourni par Maatkit:
rpm -ivh maatkit-XXXX-N.noarch.rpm

5 Monitoring

5.1 Nombre de connexions

Il existe plusieurs façons de connaître le nombre de connexions à un serveur MySQL.

En voici quelques-unes, à adapter suivant vos besoins et/ou configurations:

5.1.1 Avec MySQL

mysql> show processlist;
+-------+------+-----------+------+---------+------+-------+------------------+
| Id    | User | Host      | db   | Command | Time | State | Info             |
+-------+------+-----------+------+---------+------+-------+------------------+
| 17452 | adm  | localhost | NULL | Query   |    0 | NULL  | show processlist |
+-------+------+-----------+------+---------+------+-------+------------------+
1 row in set (0.02 sec)
mysql> select count(*) as Connections from information_schema.PROCESSLIST;
+-------------+
| Connections |
+-------------+
|          64 |
+-------------+
1 row in set (0.00 sec)

ou depuis un shell:

mysql -s -N -e "select count(*) from PROCESSLIST" information_schema
65
mysql> status;
--------------
mysql  Ver 14.14 Distrib 5.1.40sp1, for unknown-linux-gnu (x86_64) using readline 5.1

Connection id:          58768537
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.1.40sp1-enterprise-gpl-advanced-log MySQL Enterprise Server - Advanced Edition (GPL)
Protocol version:       10
Connection:             Localhost via UNIX socket
Client characterset:    latin1
Server characterset:    latin1
UNIX socket:            /var/lib/mysql/mysql.sock
Uptime:                 203 days 22 hours 52 min 31 sec

Threads: 67  Questions: 8253060488  Slow queries: 1838  Opens: 86163  Flush tables: 1  Open tables: 938  Queries per second avg: 468.350
mysql> show global status like "Threads_connected";
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_connected | 66    |
+-------------------+-------+
1 row in set (0.00 sec)

5.1.2 Shell (Linux)

netstat -a | awk '$6 == "ESTABLISHED" && $4 ~ /:mysql$/ && $5 != "*:*" {print}'|wc -l
65
lsof -n |grep -c ':mysql->'
65
Récupérée de « http://kerlinux.org/wiki/MySQL »
Outils personnels
Espaces de noms
Variantes
Actions
Navigation
Liens
Boîte à outils