Mise à niveau de MySQL 5.5 vers MySQL 5.6 sur Ubuntu 14.04 LTS

17

J'ai installé ma LAMPE avec les commandes suivantes:

sudo apt-get update
sudo apt-get install apache2 apache2-suexec mysql-server php5-mysql
sudo mysql_secure_installation
sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt
sudo apt-get install phpmyadmin

C'était il y a presque un an. Maintenant, dans PHPMyAdmin, je vois ce qui suit:

Server: Localhost via UNIX socket
Server type: MySQL
Server version: 5.5.43-0ubuntu0.14.04.1 - (Ubuntu)
Protocol version: 10
Web server
Apache/2.4.7 (Ubuntu)
Database client version: libmysql - 5.5.43
PHP extension: mysqli Documentation

La version de MySQL est 5.5.43-0ubuntu0.14.04.1 . Comment puis-je installer et utiliser en toute sécurité et en toute sécurité mysql 5.6.4+ comme je dois l'utiliser FULLTEXTavec INNODB. Je vois les packages dans le référentiel Ubuntu, mais je dois vraiment éviter tout conflit ou problème d'installation.

Merci pour toute aide.

YahyaE
la source

Réponses:

22

Comment puis-je installer en toute sécurité en toute sécurité

Ce sera toujours délicat.

Veuillez lire la page de compatibilité 5.5 / 5.6 avant de faire quoi que ce soit. Remarquez 1 grande différence entre les 2:

Depuis MySQL 5.6.6, plusieurs paramètres du serveur MySQL ont des valeurs par défaut qui diffèrent des versions précédentes. La motivation de ces modifications est de fournir de meilleures performances prédéfinies et de réduire la nécessité pour l'administrateur de base de données de modifier les paramètres manuellement. Ces modifications sont susceptibles d'être révisées dans les versions futures à mesure que nous recevons des commentaires.

L'un des grands changements est que 5.5 utilise 1 gros fichier comme journal des transactions et 5.6 en utilise plusieurs:

Par conséquent, si vous mettez à niveau une installation MySQL existante, si vous n'avez pas déjà modifié les valeurs de ces paramètres par rapport à leurs valeurs par défaut précédentes, et si la compatibilité descendante est un problème, vous souhaiterez peut-être définir explicitement ces paramètres à leurs valeurs par défaut précédentes. Par exemple, mettez ces lignes dans le fichier d'options du serveur:

 [mysqld] 
 innodb_file_per_table=0 
 innodb_checksum_algorithm=INNODB
 binlog_checksum=NONE

Si vous utilisez la réplication, faites attention à cette partie du lien:

Pour mettre à niveau les serveurs utilisés pour la réplication, mettez d'abord à niveau les esclaves, puis le maître. La réplication entre le maître et ses esclaves devrait fonctionner à condition que tous utilisent la même valeur de explicit_defaults_for_timestamp:

Descendez les esclaves, mettez-les à niveau, configurez-les avec la valeur souhaitée de explicit_defaults_for_timestamp, puis remettez-les en place.

Les esclaves reconnaîtront à partir du format des journaux binaires reçus du maître que le maître est plus ancien (antérieur à l'introduction de explicit_defaults_for_timestamp) et que les opérations sur les colonnes TIMESTAMP provenant du maître utilisent l'ancien comportement TIMESTAMP.

Arrêtez le maître, mettez-le à niveau et configurez-le avec la même valeur explicit_defaults_for_timestamp utilisée sur les esclaves, puis remettez-le en place.

S'il s'agit d'un serveur de production, je vous conseille d'essayer d'abord sur une machine de test. Nous avons eu une transition assez difficile de 5.5 à 5.6 et avons choisi d'installer une autre machine qui a été installée avec 5.6 et d'utiliser mysldump pour créer des sauvegardes et les charger dans nos bases de données sur cette machine. Attention cependant, cela prendra beaucoup de temps si vous avez une grande base de données (en raison de la recréation des fichiers de transactions innodb).

Une méthode générale:

  • utilisez mysqldump pour créer des sauvegardes de votre base de données (utilisateurs, structure de trable et données de table) et de votre fichier de configuration (probablement /etc/mysql/my.cnf)
  • Supprimer 5.5. Après avoir supprimé 5.5, vérifiez que les fichiers de transactions innodb ont disparu (ibdata1, ib_logfile0 et ib_logfile1). Étant donné que 5.6 utilise la meilleure version de la transaction, je suppose que vous devriez également l'utiliser ...
  • Installer 5.6
  • Modifiez le nouveau fichier de configuration et ajoutez ce que vous avez modifié pour 5.5 (pensez au lien ci-dessus et vérifiez si l'une des modifications n'est plus valide).
  • Téléchargez votre sauvegarde dans 5.6 (les utilisateurs d'abord). N'oubliez pas que cela peut prendre un peu de temps car il va recréer de nouveaux fichiers de transaction.

Dans les commandes (après avoir fait la sauvegarde):

sudo apt-get remove mysql-server
sudo apt-get autoremove
sudo apt-get install mysql-client-5.6 mysql-client-core-5.6
sudo apt-get install mysql-server-5.6
Rinzwind
la source
2
Pour votre information, j'ai pris une sauvegarde d'abord puis l'installer avec succès avec cette commande:sudo apt-get remove mysql-server;sudo apt-get autoremove;sudo apt-get install mysql-client-5.6 mysql-client-core-5.6;sudo apt-get install mysql-server-5.6
YahyaE
2
Ça a l'air bien oui: D Gratz! Là je l'ai édité dans ;-)
Rinzwind
Cette procédure efface-t-elle les bases de données de ce serveur?
Please_Dont_Bully_Me_SO_Lords
@EASI Non mais la question est ... mauvaise. Lors de la mise à niveau de mysql, vous devez créer une sauvegarde et la restaurer pour que mysql recherche les fonctions / paramètres / options / paramètres obsolètes.
Rinzwind