Je suis cette solution ici https://stackoverflow.com/questions/3927690/howto-clean-a-mysql-innodb-storage-engine/4056261#comment14041132_4056261 et j'ai essayé d'augmenter mon innodb_buffer_pool_size
à 4G et plus tard 1G (également 1024M) en plus de la taille du fichier journal, mais mysql ne commencera pas avec ces valeurs. Si je le remets à 512M, mysql démarre bien.
Comment puis-je resoudre ceci? Mon serveur est un 16 Go, et selon Webmin sysinfo:
Real memory 15.62 GB total, 3.13 GB used
Pendant ce temps, j'ai également trouvé le journal des erreurs:
120529 10:29:32 mysqld_safe mysqld du fichier pid /var/run/mysqld/mysqld.pid terminé
120529 10:29:33 mysqld_safe Démarrage du démon mysqld avec des bases de données depuis/var/lib/mysql
120529 10:29:33 [Note] Le plugin 'FEDERATED' est désactivé.
120529 10:29:33 InnoDB: le segment de mémoire InnoDB est désactivé
120529 10:29:33 InnoDB: les mutex et les rw_locks utilisent des buildins atomiques GCC
120529 10:29:33 InnoDB: les tables compressées utilisent zlib 1.2.3
120529 10:29:33 InnoDB: Utilisation d'AIO natif Linux
120529 10:29:33 InnoDB: Initialisation du pool de tampons, taille = 1.0G
120529 10:29:33 InnoDB: initialisation terminée du pool de tampons
InnoDB: Erreur: le fichier journal ./ib_logfile0 est de taille différente 0 134217728 octets
InnoDB: que spécifié dans le fichier .cnf 0 268435456 octets!
Les deux réponses données par @ RickJames et @ drogart sont essentiellement les remèdes. (+1 pour chacun).
Dès le journal des erreurs que vous présentez, les deux dernières lignes indiquent:
InnoDB: Erreur: le fichier journal ./ib_logfile0 est de taille différente 0 134217728 octets
InnoDB: que spécifié dans le fichier .cnf 0 268435456 octets! "
À ce stade, il était évident que vous définissiez innodb_log_file_size à 256M (268435456) dans my.cnf
tandis que les journaux de transactions InnoDB (ib_logfile0
, ib_logfile1
) étaient respectivement de 128M (134217728) chacun. En regardant le lien vers ma réponse StackOverflow dans votre question, vous avez dû faire ce qui suit:
Étape 01) Ajoutez ceci à my.cnf
:
[mysqld]
innodb_buffer_pool_size=4G
innodb_log_file_size=1G
Étape 02) Exécutez ces commandes dans le système d'exploitation
mysql -u... -p... -e"SET GLOBAL innodb_fast_shutdown = 1"
service mysql stop
rm -f /var/lib/mysql/ib_logfile*
service mysql start
Pour avoir confiance dans ce qui se passe, exécutez tail -f
par rapport au journal des erreurs. Vous verrez un message vous indiquant quand chaque fichier journal innodb est créé.
Sur la base de l'erreur dans le journal, je suppose que vous avez fait cela:
Si vous modifiez la taille du fichier journal, vous devez supprimer les anciens fichiers journaux. Innodb ne démarrera pas correctement si les fichiers existants ne correspondent pas à la taille spécifiée dans le fichier de configuration. Si vous les déplacez ailleurs, innodb créera de nouveaux fichiers journaux de transactions de la bonne taille au démarrage.
Je recommanderais de déplacer les anciens fichiers vers un autre répertoire au lieu de simplement les supprimer, jusqu'à ce que le serveur soit opérationnel avec de nouveaux fichiers journaux et que tout semble OK.
Le buffer_pool doit être défini à environ 70% de disponible RAM si vous exécutez InnoDB uniquement.
La taille du journal n'a pas beaucoup d'importance. L'optimal est de le régler de telle sorte que (Uptime * innodb_log_file_size/Innodb_os_log_written) soit à peu près 3600 (1 heure).
Pour modifier la taille du journal, il faut
Il peut également y avoir un problème dans la valeur fournie pour la taille du pool de mémoire tampon . comme c'est arrivé dans mon cas ...
En augmentant ou en diminuant innodb_buffer_pool_size
, l'opération est effectuée en morceaux. La taille des morceaux est définie par le innodb_buffer_pool_chunk_size
option de configuration, qui a une valeur par défaut de 128M. Pour plus d'informations, consultez Configuration de la taille de bloc de pool de mémoire tampon InnoDB .
La taille du pool de mémoire tampon doit toujours être égale ou multiple de innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
. Si vous configurez innodb_buffer_pool_size
à une valeur qui n'est pas égale ou multiple de innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
, la taille du pool de mémoire tampon est automatiquement ajustée à une valeur égale ou multiple de innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
qui n'est pas inférieur à la taille de pool de mémoire tampon spécifiée.
Dans l'exemple, innodb_buffer_pool_size
est défini sur 8G et innodb_buffer_pool_instances
est réglé sur 16. innodb_buffer_pool_chunk_size
est 128M, ce qui est la valeur par défaut.
8G est un innodb_buffer_pool_size
valeur car 8G est un multiple de innodb_buffer_pool_instances=16 * innodb_buffer_pool_chunk_size=128M
, qui est 2G.