Je suis cette solution ici /programming/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) dans 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 résoudre ça? 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 structures 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!
Réponses:
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:
À ce stade, il était évident que vous définissiez innodb_log_file_size à 256 Mo (268435456)
my.cnf
alors que les journaux de transactions InnoDB (ib_logfile0
,ib_logfile1
) étaient respectivement de 128 Mo (134217728) chacun. En regardant le lien vers ma réponse StackOverflow dans votre question, vous deviez faire ce qui suit:Étape 01) Ajoutez ceci à
my.cnf
:Étape 02) Exécutez ces commandes dans le système d'exploitation
Pour avoir confiance dans ce qui se passe, exécutez
tail -f
le journal des erreurs. Vous verrez un message vous indiquant quand chaque fichier journal innodb est créé.la source
service mysqld stop
.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.
la source
Le buffer_pool doit être défini sur environ 70% de la RAM disponible si vous exécutez InnoDB uniquement.
La taille du journal n'a pas beaucoup d'importance. L'optimal est de le régler de sorte que (Uptime * innodb_log_file_size / Innodb_os_log_written) soit environ 3600 (1 heure).
Pour modifier la taille du journal, il faut
la source
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 de bloc est définie par l'innodb_buffer_pool_chunk_size
option de configuration, qui a une valeur par défaut de 128M. Pour plus d'informations, voir 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 configurezinnodb_buffer_pool_size
sur une valeur qui n'est pas égale à ou un multiple deinnodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
, la taille du pool de mémoire tampon est automatiquement ajustée à une valeur qui est égale ou multiple deinnodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
qui n'est pas inférieure à la taille de pool de mémoire tampon spécifiée.Dans l'exemple,
innodb_buffer_pool_size
est défini sur 8G etinnodb_buffer_pool_instances
sur 16.innodb_buffer_pool_chunk_size
est 128M, qui est la valeur par défaut.8G est une
innodb_buffer_pool_size
valeur valide car 8G est un multiple deinnodb_buffer_pool_instances=16 * innodb_buffer_pool_chunk_size=128M
, qui est 2G.la source