Tâche #21334
Scénario #21151: MySQL doit être configuré afin de limiter les effets d’accroissement de ibdata1
Test de la solution proposée en https://dba.stackexchange.com/questions/8982/what-is-the-best-way-to-reduce-the-size-of-ibdata-in-mysql/8983#8983
Description
Test de la solution proposée
Demandes liées
Historique
#1 Mis à jour par Laurent Flori il y a plus de 6 ans
- Statut changé de Nouveau à En cours
#2 Mis à jour par Laurent Flori il y a plus de 6 ans
- Fichier migratedb.sh Voir ajouté
Premier test pour tester la solution proposée en https://dba.stackexchange.com/questions/8982/what-is-the-best-way-to-reduce-the-size-of-ibdata-in-mysql/8983#8983
Le script fourni en pièce jointe créé bien les fichiers .frm et .ibd pour chacune des tables de chacune des bases de données et les fichiers ibdata1,b_logfile0 et ib_logfile1
Je n'ai pas encore trouvé pourquoi il faut changer le plugin d'authentification alors que ce n'est pas mentionné dans la procédure ci-dessus.
#3 Mis à jour par Daniel Dehennin il y a plus de 6 ans
- Temps estimé mis à 0.00 h
- Restant à faire (heures) mis à 0.0
#4 Mis à jour par Laurent Flori il y a plus de 6 ans
En fait selon la doc mysql
"innodb_file_per_table is enabled by default. Consider disabling it if backward compatibility with MySQL 5.5 or 5.1 is a concern. This will prevent ALTER TABLE from moving InnoDB tables from the system tablespace to individual .ibd files."
Les versions 2.6.X ne sont pas impactées la version de mysql-server est la 5.7.19 pour laquelle le paramètre est à ON par défaut.
Le paramètre est à OFF pour les versions entre 5.5.7<= x <=5.6.5
https://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html#sysvar_innodb_file_per_table
https://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_file_per_table
#5 Mis à jour par Laurent Flori il y a plus de 6 ans
Pour les versions 2.5 ou le serveur mysql est en version 5.5.57 on peut faire tourner le même script et les fichiers .idb par table sont bien créés mais j'ai du utiliser les valeurs suivantes:
(Mais cela dépend de l'espace disponible sur le /var du serveur).
Il faut absolument que le paramètre innodb_log_file_size soit égal à 25% de la valeur du paramètre innodb_buffer_pool_size
innodb_log_file_size=500M innodb_buffer_pool_size=2G
Le script adapté pour une version 2.5 :
mysql_pwd.py eole21 DATABASES=`mysql -u root -peole21 -e 'use mysql; select Db from db where Db NOT IN ("performance_schema", "mysql","information_schema");' |awk '!/Db/ {print $NF}'|sort|uniq` mysqldump -hlocalhost -uroot -peole21 --databases $DATABASES > dump.sql for database in $DATABASES;do mysql -u root -peole21 -e "drop database $database;" done service mysql stop cat > /etc/mysql/conf.d/mysqld_innodb.cnf << EOF [mysqld] innodb_file_per_table innodb_flush_method=O_DIRECT innodb_log_file_size=500M innodb_buffer_pool_size=2G EOF rm -rf /var/lib/mysql/{ibdata1,ib_logfile0,ib_logfile1} service mysql start mysql -uroot -peole21 < dump.sql
#6 Mis à jour par Joël Cuissinat il y a plus de 6 ans
- Copié vers Scénario #21465: Publier la solution proposée afin de limiter les effets d’accroissement de ibdata1 sur EOLE 2.5 ajouté
#7 Mis à jour par Joël Cuissinat il y a plus de 6 ans
- Statut changé de En cours à Fermé
- % réalisé changé de 0 à 100
- Temps estimé changé de 0.00 h à 6.00 h
=> en attente de retours utilisateurs : #21465
#8 Mis à jour par arnaud grossir il y a plus de 6 ans
Bonjour, effectivement ce script marche bien, il faut juste bien adapter les lignes
innodb_log_file_size=500M
innodb_buffer_pool_size=2G
à des valeurs cohérentes avec les capacités du serveur concerné, sinon mysql ne se lance pas.
Je ne connais pas les règles pour calibrer ces valeurs par rapport à la mémoire totale du serveur.
En tout cas merci pour le script