In occasione del MySQL Day 2019 di Roma il Senior DBA Walter Strano ha illustrato come effettuare la migrazione da MySQL 5.7 a MySQL 8.0.
Durante il workshop tecnico sono stati trattati i seguenti punti:
- Approcci all’upgrade
- Checklist per l’aggiornamento alla 8.0
- Upgrade checker
- Sessione hands-on:
- Upgrade di una istanza singola
- Upgrade di una configurazione in replica master-slave
- Conversione da una replica a InnoDB Cluster
Per saperne di più, scaricate le slide e guardate il video della presentazione del nostro Senior DBA su https://www.par-tec.it/da-mysql-5-7-a-mysql-8-0
1 of 14
Download to read offline
More Related Content
MySQL Day Roma 2019 - Da MySQL 5.7 a MySQL 8.0
1. Partita IVA e Codice Fiscale: 12938200156
C.C.I.A.A. Milano n.1599095
Registro Imprese 12938200156
Capitale Sociale € 2.418.433,00 i.v.
Sede Legale e Unità Operativa
Via Alfredo Campanini, 6
20124 Milano
Tel: +39 02.66.732.1 – Fax: +39 02.66.732.300
Unità Operativa
Via Cristoforo Colombo, 163
00147 Roma
Tel: +39 06.9826.9600 – Fax: +39 06.9826.9680
Walter Strano – Senior DBA, Par-Tec
Oracle MySQL Day Roma, 9 Maggio 2019
Da MySQL 5.7 a MySQL 8.0
4. 4
Informazioni generali
• MySQL consente di effettuare un upgrade…
– solo tra release GA (la prima release GA della 8 è la 8.0.11)
– solo tra versioni consecutive, quindi:
5.6 → 5.7 OK
5.7 → 8.0 OK
5.6 → 8.0 NON OK
• È consentito l'aggiornamento tra minor release non consecutive di una stessa versione, es.:
– 5.7.22 → 5.7.25 OK
– 8.0.11 → 8.0.15 OK
• Oracle consiglia di aggiornare il server all’ultima release prima di aggiornare alla versione
successiva
– 5.7.25 → 8.0.11 o successive OK
– 5.7.22 → 8.0.11 SCONSIGLIATO
5. 5
Tipologie di upgrade: in-place
L’aggiornamento in-place consiste nell’installazione dei nuovi binari sullo stesso server.
• Manuale fino alla 8.0.15, prevede 4 fasi:
1. Shutdown "pulito" del server e installazione dei nuovi binari
2. Aggiornamento del dizionario dei dati (tabelle del db mysql)
• effettuato automaticamente dal server al momento del riavvio
3. Aggiornamento del server (information_schema, performance_schema, sys e tabelle
utente), si effettua eseguendo il client mysql_upgrade dopo il primo riavvio
4. Riavvio del server
• Automatico dalla 8.0.16, prevede 2 fasi:
1. Shutdown "pulito" del server e installazione dei nuovi binari
2. Riavvio del server e aggiornamento automatico del dizionario dei dati e del server
6. 6
Tipologie di upgrade: logico
L’aggiornamento logico consiste nel creare un dump con mysqldump e importarlo in un server di
versione successiva
N.B. Non dimenticate di esportare le grant con il comando mysqlpump --users --exclude-
databases=% o ricreare gli utenti manualmente sul server aggiornato.
9. 9
Punti di attenzione
• Alcune "non conformità " vanno sanate obbligatoriamente prima di eseguire l’aggiornamento
• Altre anomalie – es. il charset e il plugin di autenticazione – possono essere gestite impostando le
variabili di riferimento al valore pre 8.0
• In caso di upgrade dalla 5.7 alla 8.0 bisogna eseguire uno slow shutdown del server prima
dell'aggiornamento in quanto la struttura dei log files è variata e bisogna evitare il crash
recovery che verrebbe invece effettuato in caso di cold e fast shutdown
– Per eseguire uno slow shutdown bisogna impostare la variabile globale innodb_fast_shutdown
a 0:
SET GLOBAL innodb_fast_shutdown = 0;
11. 11
L’utility
Tramite la MySQL Shell 8.0 è possibile lanciare sul server da aggiornare una funzione di controllo
denominata Upgrade checker.
Prima della release 8.0.13 si invoca dal prompt di MySQL Shell:
• mysqlsh> util.checkForServerUpgrade()
Dalla release 8.0.13 in poi si può invocare anche da riga di comando:
• mysqlsh --util checkForServerUpgrade user@localhost:3306
12. 12
L’utility (continua)
Dalla release 8.0.13 è possibile effettuare i check di un server 8.0 rispetto ad una certa versione
target di MySQL:
• mysqlsh> util.checkForServerUpgrade('user@example.com:3306',
{"password":"password", "targetVersion":"8.0.11"})
Dalla release 8.0.16 è possibile eseguire i controlli anche sul my.cnf (o my.ini) per verificare se le
variabili utilizzate sono deprecate o hanno valori di default diversi nella 8.0:
• mysqlsh> util.checkForServerUpgrade('user@example.com:3306',
{"password":"password", "targetVersion":"8.0.15",
"configPath":"C:ProgramDataMySQLMySQL Server 8.0my.ini"})
• mysqlsh --util checkForServerUpgrade user@localhost:3306 --target-
version=8.0.15 --output-format=JSON –config-path=/etc/mysql/my.cnf
N.B. L'Upgrade checker NON risolve gli errori ma indica le azioni per risolverli per cui l'attività di
bonifica e adeguamento va eseguita MANUALMENTE.
14. Sede Legale e Unità Operativa
Via Alfredo Campanini, 6
20124 Milano
Tel: +39 02.66.732.1 – Fax: +39 02.66.732.300
Unità Operativa
Via Cristoforo Colombo, 163
00147 Roma
Tel: +39 06.9826.9600 – Fax: +39 06.9826.9680
Grazie per l'attenzione!