Come abbiamo esplorato nel nostro precedente articolo della nostra serie MySQL Performance:MySQL vs. MariaDB ci sono pochissimi aspetti negativi nell'usare MariaDB su MySQL standard. I nostri MariaDB ad alta disponibilità si sono dimostrati un degno successore con inconvenienti facilmente mitigabili. Come ultimo articolo della nostra serie, ci concentreremo sull'aggiornamento a varie versioni di MySQL e MariaDB sui seguenti server:
CentOS 6/7
- MySQL a MariaDB su CentOS 6/7 con cPanel
- MySQL a MariaDB su CentOS 7 con Plesk Onyx 17
- MySQL 5.1-5.5 a MariaDB 5.5 su CentOS 6
- MariaDB 5.5 a MariaDB 10.0 su CentOS 6
Ubuntu 14.04/16.04
- MySQL 5.1-5.5 a MariaDB 5.5 su Ubuntu 14.04
- MySQL 5.7 a MariaDB 10.2 su Ubuntu 16.04
Scelta di un piano di aggiornamento MariaDB
Per selezionare il piano di aggiornamento corretto è necessario determinare quale versione di MySQL è in esecuzione sul sistema previsto. Un metodo universale per determinare quale versione di MySQL è attualmente in esecuzione sul server consiste nell'interrogare il server stesso per segnalare la versione. Funziona allo stesso modo nonostante la distribuzione Linux sia in esecuzione sul server:
mysql -h localhost -e 'SHOW VARIABLES LIKE "version"\G'
Esempio di output:
~ $ mysql -h localhost -p -e 'SHOW VARIABLES LIKE "version"\G'
*************************** 1. row ***************************
Variable_name: version
Value: 5.5.61-MariaDB
Dopo aver identificato la tua versione di MySQL, usa la chiave qui sotto per individuare la corretta procedura di aggiornamento per il tuo particolare server. Alcune versioni di MySQL richiedono l'aggiornamento a MariaDB 5.5 prima dell'aggiornamento alle versioni di MariaDB 10.x.
Aggiornamento da MySQL a MariaDB
Il processo di aggiornamento è simile per la maggior parte dei tipi di server. Esistono differenze con i comandi specifici che vengono eseguiti, ma la procedura generale segue questa Procedura di aggiornamento generale:
- Pianifica tempi di inattività precisi.
- Assicurati backup adeguati.
- Rimuovi i file binari/pacchetti MySQL esistenti.
- Installa il repository MariaDB corretto.
- Cancella le cache del repository per cancellare i vecchi dati del pacchetto.
- Installa i pacchetti MariaDB tramite il gestore pacchetti del sistema.
- Avvia MariaDB avviando il servizio MySQL.
- Esegui lo script di aggiornamento di MySQL.
- Conferma che i database MySQL siano accessibili e che i dati siano corretti
Abbiamo incluso procedure specifiche di seguito per vari sistemi Liquid Web. Prima di scegliere la procedura di upgrade applicabile, esaminiamo i primi due passaggi della Procedura generale di upgrade sopra . Questi passaggi sono generalmente universali e sono fondamentali per il successo di qualsiasi piano di manutenzione.
Pianifica tempi di fermo accurati
La pianificazione di finestre di manutenzione adeguate per eseguire modifiche che interessano gli ambienti di produzione può essere difficile. La finestra dell'evento di manutenzione deve includere tempo sufficiente per eseguire tutte le attività necessarie nel piano di manutenzione, oltre a qualsiasi risoluzione dei problemi e tempo aggiuntivo per completare il piano di ripristino, se necessario.
Garantire backup adeguati
C'è di più in un piano di backup di manutenzione oltre al semplice backup di file e database. È inoltre necessario creare un piano di ripristino, che delinea il processo per ripristinare l'ambiente allo stato originale prima dell'inizio della manutenzione.
Gli eventi di manutenzione a volte possono causare problemi imprevisti con l'alternativa di ripristinare i backup. Avere sia un piano di backup valido sia un piano di ripristino valido per ripristinare i servizi è una componente fondamentale per una corretta manutenzione. Di seguito sono riportati gli schemi di un Piano di backup di esempio e un Piano di ripristino di esempio che può essere utilizzato con la procedura di aggiornamento descritta in questo articolo.
Piano di backup di esempio
+Esempio di piano di ripristino
+MySQL a MariaDB su CentOS 6/7 con cPanel
Tutte le immagini del server Liquid Web cPanel includono MariaDB 5.5 già installato. Ciò include le immagini del server CentOS 6 e CentOS 7. Non è necessario eseguire l'aggiornamento a meno che non sia richiesta la serie MariaDB 10.x. Per un aggiornamento manuale, procedure fornite da MariaDB qui:Aggiornamento da MariaDB 5.5 a MariaDB 10.0, altrimenti, cPanel fornisce una semplice interfaccia point-and-click che fa tutto il lavoro pesante per te. Segui una delle procedure seguenti nel modulo "Solo testo" o nel modulo grafico.
Istruzioni per l'aggiornamento di cPanel MariaDB:
Fase A) Conferma che i backup siano presenti prima di procedere all'ora programmata.
Fase B) Accedi a WHM e carica gliAggiornamenti MySQL/MariaDB pagina:
① Utilizza la casella di ricerca rapida a sinistra e digita: mysql upgrade
② Individua e fai clic su Aggiornamenti MySQL/MariaDB collegamento.
③ Seleziona la versione desiderata di MariaDB.
④ Fai clic sul pulsante Avanti.
Fase C) Attendi gli "Avvisi di aggiornamento ” pagina per completare il caricamento.
① Leggi e conferma ogni messaggio di avviso abilitando ciascuna casella di controllo.
② Fai clic sul pulsante Continua .
Fase D) Attendi il "Tipo di aggiornamento ” pagina per completare il caricamento.
① Seleziona Aggiornamento automatico per un'esperienza di aggiornamento senza interruzioni.
② Fai clic sul pulsante Continua .
Fase E) Attendi il completamento del processo di aggiornamento.
MySQL a MariaDB su CentOS 7 con Plesk Onyx 17
Tutte le immagini del server Liquid Web CentOS 7 includono MariaDB 5.5 già installato, inclusi i nostri server CentOS 7 Plesk Onyx 17. Non è necessario eseguire l'aggiornamento a meno che non sia richiesta la serie MariaDB 10.x. In questi casi, segui le procedure standard di aggiornamento di MariaDB Plesk qui:Come aggiornare MySQL 5.5 a 5.6/5.7 o MariaDB 5.5 a 10.0/10.1/10.2 su Linux
MySQL 5.1-5.5 a MariaDB 5.5 su CentOS 6
A causa di limitazioni di compatibilità, MySQL 5.1, 5.2, 5.3 e 5.5.x devono essere aggiornati a MariaDB 5.5 e non possono essere aggiornati direttamente a MariaDB 10.0. Questo piano di aggiornamento analizzerà l'aggiornamento di una di queste versioni deprecate di MySQL a MariaDB 5.5. Una volta completato l'aggiornamento a MariaDB 5.5, segui Come aggiornare MariaDB 5.5 a MariaDB 10.0 su CentOS 6 istruzioni per continuare il processo di aggiornamento a MariaDB 10.
Passaggio 1: Conferma che i backup siano presenti prima di procedere all'ora programmata.
Passaggio 2: Arresta il servizio MySQL.
service mysqld stop
Esempio di output:
~ $ service mysqld restart
Stopping mysqld: [ OK ]
Passaggio 3: Installa il repository MariaDB 5.5 per CentOS 6
cat < /etc/yum.repos.d/MariaDB.repo
Questo comando non ha output visibile a meno che non si verifichino errori.
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/5.5/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
Passaggio 4: Pulisci la cache del repository yum
yum clean all
Esempio di output:
~ $ yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base extras mariadb updates
Cleaning up Everything
Cleaning up list of fastest mirrors
Passaggio 5: Rimuovere i pacchetti MySQL
yum remove mysql-server mysql
Esempio di output:
Running Transaction Test
troncato per brevità.
Transaction Test Succeeded
Running Transaction
Erasing : mysql-server-5.1.73-8.el6_8.x86_64 1/1
warning: /var/log/mysqld.log saved as /var/log/mysqld.log.rpmsave
Verifying : mysql-server-5.1.73-8.el6_8.x86_64 1/1
Removed:
mysql-server.x86_64 0:5.1.73-8.el6_8
Complete!
Passaggio 6: Installa il server MariaDB e client MariaDB pacchetti tramite yum.
yum install MariaDB-server MariaDB-client -y
Esempio di output:Installed:
troncato per brevità.
MariaDB-client.x86_64 0:10.1.35-1.el6 MariaDB-compat.x86_64 0:10.1.35-1.el6 MariaDB-server.x86_64 0:10.1.35-1.el6
Dependency Installed:
MariaDB-common.x86_64 0:10.1.35-1.el6 boost-program-options.x86_64 0:1.41.0-28.el6
galera.x86_64 0:25.3.23-1.rhel6.el6 jemalloc.x86_64 0:3.6.0-1.el6
Replaced:
mysql-libs.x86_64 0:5.1.73-8.el6_8
Complete!
Passaggio 7: Riavvia il servizio MySQL
service mysql start
Esempio di output:
~ $ service mysql start
Passaggio 8: esegui lo strumento di aggiornamento MySQL
Starting MariaDB.180808 18:21:13 mysqld_safe Logging to '/var/lib/mysql/cent6.hostname.err'.
180808 18:21:13 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
SUCCESS!
mysql_upgrade
Esempio di output:
~ $ mysql_upgrade
troncato per brevità.
MySQL upgrade detected
Phase 1/4: Fixing views from mysql
mysql
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
Phase 4/4: Running 'mysql_fix_privilege_tables'
OK
Passaggio 9: conferma che il server MariaDB funzioni come previsto
mysql -e 'SHOW VARIABLES LIKE "version"\G'
Esempio di output:
~ $ mysql -e 'SHOW VARIABLES LIKE "version"\G'
*************************** 1. row ***************************
Variable_name: version
Value: 5.5.61-MariaDB
Passaggio 10: L'aggiornamento è completo, controlla che i tuoi database esistano e funzionino.
[ Facoltativo ] segui le istruzioni Come aggiornare MariaDB 5.5 a MariaDB 10.0 su CentOS 6.
MariaDB 5.5 a MariaDB 10.0 su CentOS 6
Passaggio 1: Conferma che i backup siano presenti prima di procedere all'ora programmata.
Passaggio 2: Rimuovi tutti i pacchetti MariaDB.
yum remove MariaDB-*
Output di esempio:Running Transaction Test
troncato per brevità.
Transaction Test Succeeded
Running Transaction
Erasing : MariaDB-server-5.5.61-1.el6.x86_64 1/2
Erasing : MariaDB-client-5.5.61-1.el6.x86_64 2/2
Verifying : MariaDB-server-5.5.61-1.el6.x86_64 1/2
Verifying : MariaDB-client-5.5.61-1.el6.x86_64 2/2
Removed:
MariaDB-client.x86_64 0:5.5.61-1.el6 MariaDB-server.x86_64 0:5.5.61-1.el6
Complete!
Passaggio 3: Rimuovi il repository MariaDB esistente.
rm -f /etc/yum.repos.d/MariaDB*.repo
Questo comando non ha output visibile a meno che non si verifichino errori.
Passaggio 4: Crea il file di repository MariaDB 10.O Yum.
cat < /etc/yum.repos.d/MariaDB.repo
Questo comando non ha output visibile a meno che non si verifichino errori.
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
Passaggio 5: Pulisci la cache di Yum.
yum clean all
Esempio di output:
~ $ yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base extras mariadb updates
Cleaning up Everything
Cleaning up list of fastest mirrors
Passaggio 6: Installa server MariaDB e client MariaDB pacchetto tramite Yum.
yum install MariaDB-server MariaDB-client
Esempio di output:
troncato per brevità.
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : MariaDB-client-10.0.36-1.el6.x86_64 1/2
Installing : MariaDB-server-10.0.36-1.el6.x86_64 2/2
Verifying : MariaDB-server-10.0.36-1.el6.x86_64 1/2
Verifying : MariaDB-client-10.0.36-1.el6.x86_64 2/2
Installed:
MariaDB-client.x86_64 0:10.0.36-1.el6 MariaDB-server.x86_64 0:10.0.36-1.el6
Complete!
Passaggio 7: Avvia il servizio MySQL.
service mysql start
Passaggio 8: Esegui lo script MySQL Upgrade.
mysql_upgrade
Passaggio 9: L'aggiornamento è completo, controlla che i tuoi database esistano e funzionino.
MySQL 5.1-5.5 a MariaDB 5.5 su Ubuntu 14.04
Passaggio 1: Conferma che i backup siano presenti prima di procedere all'ora programmata.
Passaggio 2: Installa il repository MariaDB 5.5 con questo one-liner, installerà gli strumenti necessari necessari (se mancanti), la chiave GPG di Ubuntu 14.04 e il repository MariaDB 5.5 durante l'aggiornamento delle cache del pacchetto apt.
sudo apt-get install software-properties-common -y
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntu trusty main'
sudo apt-get update
Esempio di output:~ $ sudo apt-get install software-properties-common -y > /dev/null
troncato per brevità.
~ $ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --homedir /tmp/tmp.PtpHIXMNvY --no-auto-check-trustdb --trust-model always --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
gpg: requesting key 1BB943DB from hkp server keyserver.ubuntu.com
gpg: key 1BB943DB: public key "MariaDB Package Signing Key <[email protected]>" imported
gpg: Total number processed: 1
gpg: imported: 1
~ $ sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntu trusty main'
~ $ sudo apt-get update > /dev/null
Passaggio 3: Interrompi il servizio MySQL.
sudo service mysql stop
Esempio di output:~ $ sudo service mysql stop
mysql stop/waiting
Passaggio 4: Rinomina il file di configurazione MySQL /etc/mysql/my.cnf in /etc/mysql/my.cnf.bak. Questo passaggio è necessario per garantire che tutte le direttive/variabili incompatibili siano state rimosse dalla configurazione per evitare problemi con l'installazione.
sudo mv /etc/mysql/my.cnf{,.bak}
Passaggio 5: Installa il server mariadb pacchetto. Questo rimuoverà simultaneamente i binari MySQL esistenti e quindi installerà i nuovi binari MariaDB. sudo apt-get install mariadb-server -y
Esempio di output:
+Passaggio 6: Durante l'installazione verrà visualizzata una finestra di dialogo che richiede di modificare due volte la password di root di MySQL. Segui le istruzioni per modificare la password o saltare la modifica fornendo una password vuota.
Passaggio 7: Una volta completato correttamente, il servizio mysql dovrebbe avviarsi automaticamente e lo script mysql_upgrade viene completato automaticamente durante il processo di installazione.
A) Verifica che il servizio mysql sia in esecuzione.sudo service mysql status
Esempio di output:~ $ sudo service mysql status
mysql start/running, process 4745
B) Verifica che il mysql_upgrade sia andato a buon fine.sudo mysql_upgrade
Output di esempio:~ $ sudo mysql_upgrade
This installation of MySQL is already upgraded to 5.5.61-MariaDB, use --force if you still need to run mysql_upgrade
Passaggio 8: L'aggiornamento è completo, controlla che i tuoi database esistano e funzionino.
MySQL 5.7 a MariaDB 10.2 su Ubuntu 16.04
Passaggio 1: Conferma che i backup siano presenti prima di procedere all'ora programmata.
Passaggio 2: Verifica che l'account root locale abbia una password corretta. Prima di eseguire l'aggiornamento a MariaDB 10.2, controlla 'root' @ 'localhost' utente per assicurarsi che venga assegnata una password in caso contrario, auth_socket plug-in utilizza una password vuota. Questa è una pratica comune nelle configurazioni precedenti e causa problemi con il processo di aggiornamento a causa della modalità predefinita di MariaDB 10.2 in Strict SQL.
Il seguente script stamperà i dettagli dell'utente root locale.
mysql -e 'select User,Host,Plugin,authentication_string from user where authentication_string = "" and plugin = "auth_socket";' mysql
Esempio di output:~ $ mysql -e 'select User,Host,Plugin,authentication_string from user where authentication_string = "" and plugin = "auth_socket";' mysql
+------+-----------+-------------+-----------------------+
| User | Host | Plugin | authentication_string |
+------+-----------+-------------+-----------------------+
| root | localhost | auth_socket | |
+------+-----------+-------------+-----------------------+
Di seguito sono riportati due esempi di come aggiornare queste voci.
Metodo Automagic :La riga seguente legge la password da /root/.my.cnf e usa quella password per aggiornare la voce dell'utente MySQL, se il file esiste.
sudo test -e /root/.my.cnf && sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$(awk -F"[=']" 'tolower($1)~/password/{print $(NF-1)}' /root/.my.cnf)'; select User,Host,Plugin,authentication_string from user where user = 'root' and host = 'localhost';" mysql || echo “ERROR: /root/.my.cnf does not exist, are you root?”
Esempio di output:~ $ sudo test -e /root/.my.cnf && sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$(awk -F"[=']" 'tolower($1)~/password/{print $(NF-1)}' /root/.my.cnf)'; select User,Host,Plugin,authentication_string from user where user = 'root' and host = 'localhost';" mysql || echo “ERROR: /root/.my.cnf does not exist, are you root?”
+------+-----------+-----------------------+-------------------------------------------+
| User | Host | Plugin | authentication_string |
+------+-----------+-----------------------+-------------------------------------------+
| root | localhost | mysql_native_password | *40C5E49F0CC7BDC637FEEDFBF14FF100C37619D7 |
+------+-----------+-----------------------+-------------------------------------------+
Metodo manuale: La seguente sintassi è necessaria per aggiungere una password corretta all'account utente root. Non dimenticare di aggiornare il file /root/.my.cnf con la password corretta o il tuo aggiornamento potrebbe riscontrare errori. Assicurati di sostituire la password corretta per SuperSecretPass.
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘SuperSecretPass’;
Passaggio 3: Installa il repository MariaDB 10.2. Questa è una stanza a più comandi che installerà gli strumenti necessari, la chiave GPG, il repository e aggiornerà le cache dei pacchetti.
sudo apt-get install software-properties-common -y > /dev/null
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,arm64,i386,ppc64el] http://ftp.osuosl.org/pub/mariadb/repo/10.2/ubuntu xenial main'
sudo apt-get update > /dev/null
Output di esempio:~ $ sudo apt-get install software-properties-common -y
troncato per brevità.
~ $ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Executing: /tmp/tmp.J8PdET9w5B/gpg.1.sh --recv-keys
--keyserver
hkp://keyserver.ubuntu.com:80
0xF1656F24C74CD1D8
gpg: requesting key C74CD1D8 from hkp server keyserver.ubuntu.com
gpg: key C74CD1D8: public key "MariaDB Signing Key <[email protected]>" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
~ $ sudo add-apt-repository 'deb [arch=amd64,arm64,i386,ppc64el] http://ftp.osuosl.org/pub/mariadb/repo/10.2/ubuntu xenial main'
~ $ sudo apt-get update > /dev/null
Passaggio 4: Interrompi il servizio MySQL.
sudo service mysql stop
Esempio di output:~ $ sudo service mysql stop
mysql stop/waiting
Passaggio 5: Rinomina il file di configurazione MySQL /etc/mysql/my.cnf in /etc/mysql/my.cnf.bak. Questo passaggio è necessario per garantire che tutte le direttive/variabili incompatibili siano state rimosse dalla configurazione per evitare problemi con l'installazione.sudo mv /etc/mysql/my.cnf{,.bak}
Passaggio 6: Installa il pacchetto mariadb-server. Questo rimuoverà simultaneamente i binari MySQL esistenti e quindi installerà i nuovi binari MariaDB.
sudo apt-get install mariadb-server -y
Esempio di output:~ $ sudo apt install mariadb-server -y</code?
Passaggio 7: Durante l'installazione verrà visualizzata una finestra di dialogo su schermo che richiede che la password di root non possa essere modificata perché ne esiste già una. Premi Invio per procedere.
Passaggio 8: Una volta completato correttamente, il servizio mysql dovrebbe avviarsi automaticamente.sudo service mysql status
Esempio di output:~ $ sudo service mysql status
mysql start/running, process 4745
Passaggio 9: Infine, esegui mysql_upgrade per completare l'aggiornamento.sudo mysql_upgrade
L'output illustra gli errori normali durante l'aggiornamento.
Esempio di output:
+Passaggio 10: L'aggiornamento è completo, controlla che i tuoi database esistano e funzionino.