Projet

Général

Profil

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

Ajouté par Laurent Flori il y a plus de 6 ans. Mis à jour il y a plus de 6 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Début:
11/09/2017
Echéance:
% réalisé:

100%

Temps estimé:
6.00 h
Temps passé:
Restant à faire (heures):
0.0

Description

Test de la solution proposée

migratedb.sh Voir (989 octets) Laurent Flori, 12/09/2017 16:59


Demandes liées

Copié vers Distribution EOLE - Scénario #21465: Publier la solution proposée afin de limiter les effets d’accroissement de ibdata1 sur EOLE 2.5 Terminé (Sprint) 02/01/2018 26/01/2018

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

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

Formats disponibles : Atom PDF