Guida di aggiornamento a MySQL 4.1.x
1.Aggiornamento da precedenti versioni di MySQL
Gli utenti che aggiornano da una vecchia versione di MySQL (<4.0.24) devono
prima installare MySQL 4.0.25. Chi invece già usa la versione corrente può
tranquillamente saltare questa sezione e continuare con la prossima.
Esempio 1: Semplice aggiornamento |
# emerge -av --buildpkg "<mysql-4.1"
|
2.Creazione backup di tutti i dati correnti
Uno dei più importanti compiti di ogni amministratore è quello di fare un
backup di tutti i dati. Ecco come fare:
Esempio 2: Backup di tutti i database |
# mysqldump \
-uroot \
--password= \
-hlocalhost \
--all-databases \
--opt \
--allow-keywords \
--flush-logs \
--hex-blob \
--master-data \
--max_allowed_packet=16M \
--quote-names \
--result-file=BACKUP_MYSQL_4.0.SQL
|
Adesso dovrebbe esserci il file BACKUP_MYSQL_4.0.SQL, che più
avanti può essere utilizzato per ripristinare i dati. I dati sono stati
scritti in sintassi SQL, Structured Query Language.
Probabilmente converrà controllare se il backup funziona prima di procedere
ulteriormente.
3.Aggiornamento da versioni recenti di MySQL
Se si è saltato il passo #1, adesso si deve creare un pacchetto di backup
(del server database, non dei dati) della versione correntemente installata:
Esempio 3: Pacchetto binario di backup |
# quickpkg dev-db/mysql
|
Ora bisogna eliminare la versione installata con tutti i suoi dati:
Esempio 4: Disinstallazione MySQL |
# /etc/init.d/mysql stop
# emerge -C mysql
# tar cjpvf ~/mysql.$(date +%F_%H-%M).tar.bz2 /etc/mysql/my.cnf /var/lib/mysql/
# ls -l ~/mysql.*
# rm -rf /var/lib/mysql/ /var/log/mysql
|
Nota:
Esistono due differenti tipi di backup: SQL, il quale è possibile usarlo con
varie versioni di MySQL, e un altro che permette di ripristinare velocemente
tutti i database. Quest'ultimo verrà trattato più dettagliatamente in
seguito.
|
Dopo aver eliminato completamente la vecchia installazione di MySQL, si può
procedere con l'installazione della nuova versione. Notare che
revdep-rebuild è necessario per riemergere i pacchetti linkati a
MySQL.
Esempio 5: Aggiornamento dei binari |
# emerge -av ">mysql-4.1"
# dispatch-conf
# revdep-rebuild
|
Adesso si deve configurare la nuova versione installata di MySQL e riavviare il
demone:
Esempio 6: Configurazione di base MySQL 4.1 |
# emerge --config =mysql-4.1.<micro_version>
# /etc/init.d/mysql start
|
In fine bisogna importare il backup creato in precedenza:
Esempio 7: Importazione backup SQL |
# cat BACKUP_MYSQL_4.0.SQL \
| mysql \
-uroot \
--password= \
-hlocalhost \
--max_allowed_packet=16M
# mysql_fix_privilege_tables \
--defaults-file=/etc/mysql/my.cnf \
--user=root \
--password= \
|
Adesso, riavviando il demone di MySQL, se tutto va come previsto si avrà MySQL
con versione 4.1.x perfettamente funzionante. :-)
Esempio 8: Riavviare MySQL |
# /etc/init.d/mysql restart
|
Se ci sono stati problemi durante il processo di upgrade, per favore riportarli
su Gentoo Bugzilla.
4.Ripristinare la vecchia versione di MySQL 4.0
Se non si è soddisfatti di MySQL 4.1, è possibile ritornare indietro alla
4.0.
Esempio 9: Ritorno alla vecchia versione |
# /etc/init.d/mysql stop
# emerge -C mysql
# rm -rf /var/lib/mysql/ /var/log/mysql
# emerge --usepkgonly "<mysql-4.1"
# tar -xjpvf mysql.[tag] -C /
# /etc/init.d/mysql start
|
5.Upgrade diretto, non supportato, pericoloso
Sotto certe condizioni è possibile aggiornare MySQL in maniera diretta alla
successiva versione. Se si è coscienti di ciò che si sta facendo, qui
c'è un piccolo trucco che permette di aggiornare MySQL alla 4.1 direttamente.
Esempio 10: Upgrade diretto |
# quickpkg dev-db/mysql
# /etc/init.d/mysql stop
# tar -cjpvf ~/mysql.$(date +%F_%H-%M).tar.bz2 /etc/mysql/my.cnf /var/lib/mysql/
# ls -l ~/mysql.*
# export MYSQL_STRAIGHT_UPGRADE=1
# emerge -av ">mysql-4.1"
# unset MYSQL_STRAIGHT_UPGRADE
# dispatch-conf
# revdep-rebuild
# /etc/init.d/mysql start
# mysql_fix_privilege_tables --defaults-file=/etc/mysql/my.cnf \
-uroot --password=
# mysql --database=mysql -uroot --password= < /tmp/new_pieces.sql
# /etc/init.d/mysql restart # just to be sure
|
Buona fortuna e se qualcosa non dovesse andare, non dire che non si è stati
avvertiti. ;-)
|