MySQL : Mise à niveau de 5.7 vers 8.0 (Windows)



1\. Préparatifs avant MIGRATION

  1. Lancer MySQL Installer et mettre à niveau tous les logiciels MySQL vers la dernière version
  2. Ajouter dans les définitions des FUNCTIONS les déclarations suivant DETERMINISTIC, NO SQL, or READS SQL DATA selon le cas

2\. Sauvegarde de la base de donnée

Ouvrir Workbench et sélectionner Data Export pour sauvegarder la BD dans 2 Self-contained files :

  1. Fichier Structures : avec les options Dump Structure Only + Dump Stored Procdures + Dump Triggers

  2. Ouvrir le fichier de sauvegarde et remplacer les DEFINER obsolètes dans les structures de l ancienne BD :

  3. root@\127.0.0.1\\ par root@\localhost\\

  4. root@\::1\\ par root@\localhost\\
  5. root@\%\\ par root@\localhost\\
  6. "NO\_AUTO\_CREATE\_USER" par ""

  7. Fichiers Data : avec les options Dump Data Only

.

3\. Installer MySQL 8.0

.

4\. Créer les utilisateurs

avec les privilèges DBA :

.

5\. Restaurer la base de données

.

6\. Vérifier les Bases de Données

cd \"\\Program Files\\MySQL\\MySQL Server 8.0\\bin\"
mysqlcheck -u root -p --all-databases

.

7\. Changer les jeux de caractères des BD

MySQL 8.0 utilise par défaut le jeu de caractères utf8mb4 (un utf8 codé sur 4 octets). Nous allons convertir nos bases de données codées en utf vers utf8mb4.

Copy the following code into a file called it preAlterTables.sql:

use information_schema;
SELECT concat(\"ALTER DATABASE `\",table_schema,\"` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;\") as sql 
FROM `TABLES` where table_schema like \"yourDbName\" group by table_schema;
SELECT concat(\"ALTER TABLE `\",table_schema,\"`.`\",table_name,\"` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\") as sql  
FROM `TABLES` where table_schema like \"yourDbName\" group by table_schema, table_name;
SELECT concat(\"ALTER TABLE `\",table_schema,\"`.`\",table_name, \"` CHANGE `\",column_name,\"` `\",column_name,\"` \",data_type,\"(\",character_maximum_length,\") CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci\",IF(is_nullable=\"YES\",\" NULL\",\" NOT NULL\"),\";\") as sql 
FROM `COLUMNS` where table_schema like \"yourDbName\" and data_type in ( varchar","char");
SELECT concat(\"ALTER TABLE `\",table_schema,\"`.`\",table_name, \"` CHANGE `\",column_name,\"` `\",column_name,\"` \",data_type,\" CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci\",IF(is_nullable=\"YES\",\" NULL\",\" NOT NULL\"),\";\") as _sql 
FROM `COLUMNS` where table_schema like \"yourDbName\" and data_type in ("text","tinytext","mediumtext","longtext");

Replace all occurences of \"yourDbName\" with the database you want to convert. Then run:

cd \"C:\\Program Files\\MySQL\\MySQL Server 5.7\\bin\"
mysql -uroot -p < preAlterTables.sql | egrep "^ALTER" > alterTables.sql

This will generate a new file alterTables.sql, with all the queries you need to convert the database. Run the following command to start the conversion:

mysql -uroot -p < alterTables.sql

.

8\. Désinstaller MySQL 5.7

La mise à niveau de MySQL étant terminée, vous pouvez désinstaller l ancienne version MySQL 5.7 à l aide MySQL Installer.


Publié le : 14-04-2020 - 19:00