Guida di aggiornamento a MySQL 4.1.x

Contenuti:

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='propria_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='propria_password' \
     -hlocalhost \
     --max_allowed_packet=16M

# mysql_fix_privilege_tables \
     --defaults-file=/etc/mysql/my.cnf \
     --user=root \
     --password='propria_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='propria_password'
# mysql --database=mysql -uroot --password='propria_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. ;-)



Ultimo aggiorn.:
2006-01-04
Michael Kohl
Autore

Francesco Riosa
Autore

Luca Marturana
Traduttore

Sommario:  Il team MySQL è fiero di annunciare che MySQl 4.1 può essere trovato nel ramo instabile di Gentoo (~arch). Il team comunque spera di poter renderlo al più presto stabile, questa è la procedura da seguire per tutti i volenterosi tester.
- 2002 Gentoo.it - Domande, commenti e/o correzioni? Email gentoo-dev@gentoo.it.