Ce document couvre la dernière version de MySQL disponible. Il y a actuellement trois versions supportées de MySQL dans Portage :
Il y en a deux autres, mais qui ne sont pas supportées. Cela signifie qu'il peut leur manquer des fonctionnalités et que les rapports de bogues ont une priorité très faible. Ce document n'a aucune garantie de fonctionnement avec les versions suivantes :
Cette étape demandera de déplacer ou d'effacer certains fichiers de de l'environnement en cours, donc la première chose à faire est de sauvegarder les serveurs de base de données, pas les données. Une fois fait, il est possible d'effacer les fichiers en conflit avec le MySQL slotté et d'installer la nouvelle version en parallèle de celle déjà présente.
# quickpkg dev-db/mysql # rm -rf /usr/include/mysql /usr/bin/mysql_config # for tmpfile in /usr/lib/*mysql* do mv "${tmpfile}" "${tmpfile}.TMP" ln -s "${tmpfile}.TMP" "${tmpfile}" done # emerge -av =dev-db/mysql-5.0.18-r30
Assurez-vous de bien lancer
Maintenant, nous allons transférer les données. Elles seront importées dans la
nouvelle version de MySQL.
# mysqldump-500 \ --defaults-file=/etc/mysql/my.cnf \ --user=root \(Remplacez 'your_password' avec votre mot de passe administrateur de MySQL) --password='your_password' \ --host=localhost \ --all-databases \ --opt \ --allow-keywords \ --flush-logs \ --hex-blob \ --master-data \ --max_allowed_packet=16M \ --quote-names \ --result-file=BACKUP_MYSQL_4.0.SQL
Un fichier nommé
Lancez le serveur sans réseau ni gestion des utilisateurs et lancez le script SQL :
# mv /etc/conf.d/mysql /etc/conf.d/mysql.orig # cat <<- EOF > /etc/conf.d/mysql NOCHECK=1 DEBUG=3 mysql_slot_500=( "skip-networking" "skip-grant-tables" "socket=/tmp/mysqld.sock" ) EOF # /etc/init.d/mysql start # mysql-500 --defaults-file=/etc/mysql-500/my.cnf --socket=/tmp/mysqld.sock < BACKUP_MYSQL_4.0.SQL # /etc/init.d/mysql stop # mv /etc/conf.d/mysql.orig /etc/conf.d/mysql
S'il y des applications qui travaillent toujours avec l'ancienne base de données, il est possible de créer une relation de « réplication » entre les deux bases. Cependant, ce document ne couvre pas cette procédure.
Veuillez tester vos applications avec le serveur fraîchement installé pour vous
assurer qu'elles fonctionnent bien avec. Souvent, ces applications ont une
option de configuration pour choisir quel port ou socket utiliser lors de la
connexion au serveur de base de données. Lancez le serveur sur un autre port
(3307 par exemple) et dites à vos applications (ou une copie d'essai) de se
connecter avec ces paramètres. Veuillez remarquer que la plupart des
applications essaieront d'utiliser les paramètres spécifiés dans la section
Avant que vous changiez pour le nouveau serveur MySQL, il vous faudra ajuster
la variable suivante dans
# nano -w /etc/conf.d/mysql(Ajoutez la ligne suivante :) mysql_slot_500=( )
Une fois que vous êtes satisfait des résultats, effacez tous les paramètres d'essai, arrêtez l'ancien serveur et lancez le nouveau :
# killall mysqld # /etc/init.d/mysql stop zap start
Ensuite, désinstallez l'ancienne version et faites de la nouvelle celle par
défaut. La commande de désinstallation ne pourra pas effacer certains fichiers
tels que ceux que nous avons déplacés dans la
# emerge --unmerge --pretend mysql # emerge --unmerge =dev-db/mysql-4.0.26 # cd /etc # mv mysql mysql.$(date +%F_%H-%M) # rm -rf /usr/lib/*.TMP # for i in /usr/lib/*mysql* do [[ -z "$( readlink -f $i )" ]] && [[ -L $i ]] && rm $i done(Installez app-admin/eselect-mysql si ce n'est pas déjà fait) # eselect mysql list # eselect mysql set 1 # eselect mysql show
Une fois l'ancienne version de MySQL retirée, vous pouvez installer la
nouvelle. Notez que l'outil
# revdep-rebuild --soname libmysqlclient.so.12 -- -p -v # revdep-rebuild --soname libmysqlclient.so.12
(Remplacez toutes les occurrences de 'your_password' avec votre mot de passe administrateur de MySQL) # mysql_fix_privilege_tables-500 \ --defaults-file=/etc/mysql-500/my.cnf \ --user=root \ --password='your_password' # mysql -uroot -p'your_password' mysql -e "FLUSH PRIVILEGES;" # for tbl in $( mysql --silent -uroot -p'your_password' -e 'USE mysql ; SHOW TABLES LIKE "help%";' ) do mysql -uroot -p'your_password' -e "use mysql ; TRUNCATE TABLE ${tbl};" done # mysql -uroot -p'your_password' mysql < /usr/share/mysql/fill_help_tables.sql
Si vous rencontrez des problèmes lors du processus de mise à jour, veuillez
remplir