• Aucun résultat trouvé

Mettre à jour MySQL sous Windows

Chapitre 2. Installer MySQL

2.2. Installation standard rapide de MySQL

2.2.11. Mettre à jour MySQL sous Windows

Lors de la mise à jour de MySQL sous Windows, suivez ces instructions :

1. Téléchargez la dernière version de MySQL pour Windows.

Installer MySQL

2. Cherchez un horaire dans la journée où l'utilisation du serveur est faible, et où une interruption de service est acceptable.

3. Prévenez les utilisateurs que vous allez interrompre le serveur.

4. Stoppez le serveur MySQL (par exemple, avec la commandeNET STOP MySQLou avec l'utilitaire deServicessi vous utilisez MySQL sous forme de service, ou encore avecmysqladmin shutdown).

5. Quittez le programmeWinMySQLAdmin, s'il fonctionnait.

6. Exécutez les scripts d'installation de la distribution Windows, en cliquant sur le bouton "Install" dans WinZip et en suivant les instructions d'installation.

Note importante : Les premières versions des distributions Windows de MySQL 4.1 n contenaient pas de programme d'installation. Voyez "Windows binary installation" pour les instructions d'installation d'une telle distribution.

7. Vous pouvez écraser votre précédente installation (généralement installée dansC:\mysql), ou l'installer dans un nouveau dossier, commeC:\mysql4. Supprimer l'ancienne version est recommandée.

8. Relancez le serveur (par exemple, avecNET START MySQLsi vous utilisez MySQL comme un service, ou directement avec la commandemysqld).

9. Mettez à jour les tables de droits. La procédure est décrite dans la sectionSection 2.6.7, « Mise à jour des tables de droits ».

Situations possibles :

A system error has occurred.

System error 1067 has occurred.

The process terminated unexpectedly.

Cette erreur signifie que votre fichier d'options, qui est par défautC:\my.cnf, contient une option qui n'est pas reconnue par MySQL.

Vous pouvez vérifier que c'est le cas en renommant le fichiermy.cnfenmy_cnf.old, pour éviter que le serveur l'utilise. S'il démarre correctement, il vous faut alors identifier la partie du fichier d'options cause le problème. Créez un nouveau fichiermy.cnf, puis déplacez progressivement toutes les parties de l'ancien fichier d'options, en redémarrant le serveur entre deux copies : vous allez identifier à coup sur le problème.

2.2.11.1. MySQL pour Windows face à MySQL pour Unix

MySQL pour Windows a prouvé qu'il était très stable. Cette version de MySQL a les mêmes fonctionnalités que la version Unix, a quelques exceptions :

Windows 95 et les threads

Windows 95 perd environs 200 octets de mémoire central lors de la création de chaque thread. Chaque connexion MySQL crée un nouveau thread, ce qui fait qu'il n'est pas recommandé d'exécutermysqldpour des durées longues sur Windows 95 si votre serveur gère de nombreuses connexions. Les autres versions de Windows ne souffrent pas du même problème.

Nombre limités de ports de connexions

Les systèmes Windows disposent d'environs 4,000 pour les connexions clientes, et après connexion, cela prend de 2 à 4 minutes avant qu'un port soit de nouveau utilisable. Dans des situations où les clients se connectent et se déconnectent à haute vitesse, il est possible que tous les ports soient utilisés, avant que les anciens ports ne redeviennent utilisables. Lorsque cela arrive, le serveur semblera inaccessible, même s'il fonctionne bien. Notez que des ports peuvent aussi être utilisées par d'autres applications, ce qui réduit encore le nombre de ports disponibles pour MySQL.

Lectures concurrentes

MySQL dépends des fonctionspread()etpwrite()pour être capable de mêler desINSERTet desSELECT. Actuellement, nous utilisons lesmutexespour émuler les fonctionspread()/pwrite(). Nous allons, à long terme, remplacer ce niveau d'interface par une interface virtuelle de fa¸on à ce que nous puissions utiliser l'interfacereadfile()/writefile()de Windows NT/2000/XPpour gagner de la vitesse. L'implémentation courante limite le nombre de fichiers ouverts par MySQL à 1024, ce qui signifie que vous ne pouvez pas utiliser d'aussi nombreux threads concurrents surWindows NT/2000/XPque sur Unix.

Blocking read

MySQL utilise une lecture bloquée pour chaque connexion. Cela signifie que :

• Une connexion ne sera pas déconnectée automatiquement après 8 heures d'inactivité, comme c'est le cas sous Unix.

• Si une connexion se bloque, il est impossible de la détruire sans tuer MySQL.

• mysqladmin killne fonctionne pas sur une connexion endormie.

• mysqladmin shutdownne peut pas s'exécuter tant qu'il y a des connexions qui dorment.

Nous envisageons de corriger ce problème, lorsque les développeurs Windows auront fourni un palliatif.

DROP DATABASE

Vous ne pouvez pas détruire une base qui est utilisée par un autre thread.

Interrompre MySQL depuis le gestionnaire de tâches

Vous ne pouvez pas tuer MySQL depuis le gestionnaire de tâche ou avec un utilitaire d'extinction de Windows 95. Vous devez l'éteindre avecmysqladmin shutdown.

Noms sensibles à la casse

Les noms de fichiers sont insensibles à la casse sous Windows, ce qui fait que les noms de tables et de bases ne sont pas sensibles à la casse pour MySQL sur Windows. La seule restriction est que les noms de tables et de bases doivent être donnés avec même casse dans le nom (tout en majuscules, ou en minuscules). SeeSection 9.2.2, « Sensibilité à la casse pour les noms ».

Le caractère ‘\’

Les composants d'un chemin sont séparés par le caractère ‘\’ sous Windows, qui est aussi le caractère de protection de MySQL. Si vous utilisez la commandeLOAD DATA INFILEouSELECT ... INTO OUTFILE, vous devez doubler le caractère ‘\’ :

mysql> LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr;

mysql> SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr;

Alternativement, vous pouvez utiliser les noms de fichiers au format Unix, avec le caractère ‘/’ :

mysql> LOAD DATA INFILE "C:/tmp/skr.txt" INTO TABLE skr;

mysql> SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;

Problèmes avec les pipes

Les pipes ne fonctionnent pas de manière fiables depuis la ligne de commande Windows. Si le pipe re¸oit un caractère^Z/ CHAR(24), Windows va croire qu'il atteint la fin du fichier et arrête le programme.

C'est un problème, notamment lorsque vous essayez d'utiliser le log binaire de cette manière :

mysqlbinlog binary-log-name | mysql --user=root

Si vous rencontrez un problème lors de l'utilisation du log, et que vous pensez que c'est à cause du caractère^Z/CHAR(24), vous pouvez utiliser le palliatif suivant :

mysqlbinlog binary-log-file --result-file=/tmp/bin.sql mysql --user=root --execute "source /tmp/bin.sql"

Cette dernière commande peut aussi être utilisée pour lire fiablement tout fichier SQL qui contient des données binaires.

L'erreurCan't open named pipe

Si vous utilisez MySQL 3.22 sousNTavec les derniers clients mysql, vous allez obtenir cette erreur : Installer MySQL

error 2017: can't open named pipe to host: . pipe...

Ceci est dû au fait que les versions modernes de MySQL utilisent des pipes nommés sousNT, par défaut. Pour éviter cette erreur, vous devez utiliser l'option--host=localhostsur les nouveaux clients, ou bien créer le fichier d'optionsC:\my.cnf, qui contiendra les informations suivantes :

[client]

host = localhost

Depuis la version 3.23.50, les pipes nommés sont les seuls activés simysqldest démarré avec--enable-named-pipe.

ErreurAccess denied for user

Si vous rencontrez l'erreurAccess denied for user: 'utilisateur@unknown' to database 'mysql'lors de l'accès au serveur MySQL sur la même machine, cela signifie que MySQL ne peut résoudre proprement votre nom d'hôte.

Pour corriger cela, vous devriez créer un fichier\windows\hostsdans l'information suivante :

127.0.0.1 localhost

ALTER TABLE

Lorsque vous exécutez la commandeALTER TABLE, la table est verrouillé, empêchant les autres threads d'y accéder. Cela est lié au fait que sous Windows, vous ne pouvez pas effacer un fichier qui est en cours d'utilisation par d'autres threads : à l'avenir, vous pourrions trouver un moyen de contourner ce problème.

DROP TABLE

La commandeDROP TABLEsur une table qui est utilisée dans le cadre d'unMERGEne fonctionne pas sous Windows, car le gestionnaire deMERGEgarde la carte des tables cachée de la couche supérieure de MySQL. Comme Windows ne vous autorise pas à effacer des fichiers qui sont ouverts, vous devez d'abord vider de la mémoire toutes les tables duMERGE(avec la commande FLUSH TABLES) puis effacer la tableMERGEavant d'effacer les tables. Nous allons corriger cela lorsque nous introduirons la notion deVIEWs.

DATA DIRECTORYetINDEX DIRECTORY

Les directivesDATA DIRECTORYetINDEX DIRECTORYdeCREATE TABLEsont ignorées sous Windows, car Windows ne supporte pas les liens symboliques.

Voici quelques problèmes connus et pas encore corrigés, si jamais quelqu'un souhaite nous aider sur la version Windows :

• Ajouter des icônes pour le démarrage et l'arrêt de MySQL, dans l'installateur.

• Il serait vraiment pratique de pouvoir arrêter le processusmysqlddepuis le gestionnaire de tâches. Pour le moment, il faut passer parmysqladmin shutdown.

• Le port dereadlinesur Windows pour pouvoir l'utiliser avec l'outil de ligne de commandemysql.

• Des versions graphiques des clients standards MySQL (mysql,mysqlshow,mysqladminetmysqldump) seraient bien.

• Il serait bien si les fonctions de lecture et d'écriture sur les sockets denet.cpouvaient être interrompues. Cela rendrait possible l'arrêt des threads en court avecmysqladmin killsous Windows.

• Ajouter des macros pour utiliser les méthodes rapides d'incrément/décrément compatibles avec les threads, fourni par Windows.