Project

General

Profile

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

Added by Laurent Flori about 4 years ago. Updated almost 4 years ago.

Status:
Fermé
Priority:
Normal
Assigned To:
Start date:
09/11/2017
Due date:
% Done:

100%

Estimated time:
6.00 h
Spent time:
Remaining (hours):
0.0

Description

Test de la solution proposée

migratedb.sh View (989 Bytes) Laurent Flori, 09/12/2017 04:59 PM


Related issues

Copied to 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) 01/02/2018 01/26/2018

History

#1 Updated by Laurent Flori about 4 years ago

  • Status changed from Nouveau to En cours

#2 Updated by Laurent Flori about 4 years ago

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 Updated by Daniel Dehennin about 4 years ago

  • Estimated time set to 0.00 h
  • Remaining (hours) set to 0.0

#4 Updated by Laurent Flori almost 4 years ago

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 Updated by Laurent Flori almost 4 years ago

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 Updated by Joël Cuissinat almost 4 years ago

  • Copied to Scénario #21465: Publier la solution proposée afin de limiter les effets d’accroissement de ibdata1 sur EOLE 2.5 added

#7 Updated by Joël Cuissinat almost 4 years ago

  • Status changed from En cours to Fermé
  • % Done changed from 0 to 100
  • Estimated time changed from 0.00 h to 6.00 h

=> en attente de retours utilisateurs : #21465

#8 Updated by arnaud grossir almost 4 years ago

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

Also available in: Atom PDF