ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
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
2
Agenda
• Approcci all’upgrade
• Checklist per l’aggiornamento alla 8.0
• Upgrade checker
• Demo
Approcci all’upgrade
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
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
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.
Checklist per l’aggiornamento alla 8.0
8
Premesse
Viste le novità introdotte dalla versione 8.0 è necessario svolgere una serie di controlli sulla base
dati da migrare affinché essa sia conforme e quindi adatta all'aggiornamento. Tali controlli
prescindono dalla tipologia di upgrade scelta.
Alcuni di questi controlli riguardano:
• L'uso di nomi riservati nel database mysql
• L'utilizzo di partizioni su engine diverso da INNODB
• Foreign Keys con nome maggiore di 64 caratteri
• Viste con nomi di colonne maggiori di 64 caratteri
• Elementi di una colonna ENUM maggiore di 255 caratteri
• L'utilizzo di un charset diverso dal nuovo default (utf8mb4)
• L’utilizzo del plugin di autenticazione diverso dal nuovo default (caching_sha2_password)
N.B. Controllate sempre le release notes, soprattutto se aggiornate da release più vecchie della 5.7
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;
Upgrade checker
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
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.
It’s demo time!
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!

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
  • 2. 2 Agenda • Approcci all’upgrade • Checklist per l’aggiornamento alla 8.0 • Upgrade checker • Demo
  • 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.
  • 8. 8 Premesse Viste le novità introdotte dalla versione 8.0 è necessario svolgere una serie di controlli sulla base dati da migrare affinché essa sia conforme e quindi adatta all'aggiornamento. Tali controlli prescindono dalla tipologia di upgrade scelta. Alcuni di questi controlli riguardano: • L'uso di nomi riservati nel database mysql • L'utilizzo di partizioni su engine diverso da INNODB • Foreign Keys con nome maggiore di 64 caratteri • Viste con nomi di colonne maggiori di 64 caratteri • Elementi di una colonna ENUM maggiore di 255 caratteri • L'utilizzo di un charset diverso dal nuovo default (utf8mb4) • L’utilizzo del plugin di autenticazione diverso dal nuovo default (caching_sha2_password) N.B. Controllate sempre le release notes, soprattutto se aggiornate da release più vecchie della 5.7
  • 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!