Récemment, j'ai découvert que je peux maximiser les performances de mysql quand j'ai un bon matériel. Depuis que j'utilise InnoDB, j'ai ajouté une configuration supplémentaire dans my.ini
Voici les configurations nouvellement ajoutées:
innodb_data_file_path = ibdata1:10M:autoextend
innodb_buffer_pool_size = 2G
innodb_additional_mem_pool_size = 2M
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 120
Ensuite, je redémarre tous les services. Mais lorsque j'ai utilisé mon programme, une erreur s'est produite "Moteur de table inconnu 'InnoDB'".
Ce que j'ai essayé de résoudre ce problème:
D'autres solutions n'ont pas résolu mon problème. Le moteur InnoDB a été désactivé après avoir ajusté la configuration.
La suppression des fichiers journaux ib_ * borked dans le répertoire de données mysql a résolu mon problème et m'a permis d'utiliser le pool de mémoire tampon 2G pour InnoDB: http://www.turnkeylinux.org/forum/support/20090111/drupal-6-problem -enable-innodb # comment-131
Je viens de réessayer de supprimer le fichier journal et de redémarrer les services, et cela fonctionne! Mais méfiez-vous d'attribuer 2G car innodb peut ne pas compiler, veuillez utiliser 1G si 2G ne fonctionne pas.
J'ai également rencontré ce problème. Le problème était que j'allouais plus de mémoire à InnoDB que le serveur n'en avait avec la variable innodb_buffer_pool_size
. MySQL ne s'est pas plaint de ne pas pouvoir allouer la mémoire dans ses journaux à ce sujet.
J'ai essayé tous ceux-là (et bien d'autres) mais la seule méthode qui a fonctionné pour moi est:
/etc/init.d/mysql stop
rm ib_logfile0 ib_logfile1
mv ibdata1 old_ibdata1
J'ai cette configuration dans /etc/mysql/my.cnf
-> Même si vous ne le spécifiez pas, MySql utilisera les valeurs par défaut.
[mysqld]
datadir=/data/mysql/data
socket=/var/run/mysqld/mysqld.sock
#Not a must to define the following
innodb_log_file_size=1G
innodb_file_per_table=1
innodb_flush_method=O_DIRECT
innodb_buffer_pool_size=1G
innodb_data_file_path=ibdata1:10M:autoextend
innodb_lock_wait_timeout=18000
Démarrez MySql Server/etc/init.d/mysql start
Une autre option que vous avez si vous modifiez complètement votre fichier my.cnf est de le remplacer par une configuration par défaut à partir de l'installation de mysql. Pour linux:
Vous avez les options suivantes,
/usr/share/mysql/my-huge.cnf
/usr/share/mysql/my-innodb-heavy-4G.cnf
/usr/share/mysql/my-large.cnf
/usr/share/mysql/my-medium.cnf
/usr/share/mysql/my-small.cnf
Voici un exemple pour l'installer:
#backup original config
mv /etc/my.cnf{,.bak}
#copy new my.cnf from template
cp /usr/share/mysql/my-large.cnf /etc/my.cnf
Plus d'informations sur ces options sont disponibles sur http://dev.mysql.com/doc/mysql/en/option-files.html
Eu ce problème lors de la restauration à partir de la sauvegarde. Le problème était que j'avais des paramètres un peu différents dans my.ini. Donc, si quelqu'un rencontre ce problème, assurez-vous de définir les mêmes paramètres (copiez my.ini), arrêtez le service MySQL, puis restaurez l'ensemble du dossier de données, puis redémarrez le service MySQL.