Vous pourriez convertir soit avant soit après. Je préfère avant car les données seront prêtes une fois Percona Server installé et opérationnel. Je dis cela parce qu'il y a quelques points délicats à considérer concernant les tables de droits (notamment la table mysql.user de MySQL 5.0 qui comporte 37 colonnes tandis que celle de MySQL 5.5 en comporte 42). Je ne voudrais pas avoir à gérer des problèmes de connectivité ou de droits SQL en premier lieu.
Voici le script pour effectuer la conversion InnoDB :
Étape 01) Exécutez ces commandes
echo "SET SQL_LOG_BIN = 0;" > /root/ConvertMyISAMToInnoDB.sql
MYSQL_CONN="-u... -p..."
mysql ${MYSQL_CONN} -AN -e"SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=InnoDB;') InnoDBConversionSQL FROM information_schema.tables WHERE engine='MyISAM' AND table_schema NOT IN ('information_schema','mysql','performance_schema') ORDER BY (data_length+index_length)" > /root/ConvertMyISAMToInnoDB.sql
Le script recherche toutes les tables dans toutes les bases de données et les convertit par ordre de taille, en commençant par la plus petite.
Étape 02) Exécutez le script
mysql ${MYSQL_CONN} -A < /root/ConvertMyISAMToInnoDB.sql
Étape 03) Exécutez cette requête
SELECT SUM(data_length+index_length)/POWER(1024,2) RecommendedInnoDBBufferPoolSize
FROM information_schema.tables WHERE engine='InnoDB';
Cela vous donnera la valeur suggérée (idéale, dans un monde parfait) pour innodb_buffer_pool_size. Si ce nombre dépasse 75 % de la RAM du serveur, utilisez alors 75 % de la RAM.
Étape 04) service mysql stop
Étape 05) rm -f /var/lib/mysql/ib_logfile* /var/lib/mysql/ibdata1
Étape 06) Ajoutez ceci à /etc/my.cnf
[mysqld]
innodb_file_per_table
innodb_buffer_pool_size=M
innodb_log_file_size=512M
innodb_log_buffer_size=64M
innodb_open_files=4096
innodb_read_io_threads=64
innodb_write_io_threads=64
innodb_io_capacity=5000
key_buffer_size=8M
AVIS
- innodb_log_file_size devrait être à 25 % de innodb_buffer_pool_size
- key_buffer_size peut désormais être réduit
Étape 07) service mysql start
Cela prendra un certain temps (2-4 minutes) car mysqld va créer
- ib_logfile0
- le formater
- créer ib_logfile1
- le formater.
Étape 08) Effectuez la mise à niveau vers Percona