ERREUR - La fonction 'innodb' existe déjà

11

Je cherche à commencer à convertir certaines tables MyISAM en INNODB. Exécution du serveur Ubuntu 14.04 avec MySQL 5.6 (apt-get mis à niveau à partir de 5.5), 32 Go de RAM sur un processeur 4 cœurs / 8 threads. Initialement eu des problèmes avec ...

could not open single-table tablespace file .\mysql\innodb_index_stats.ibd after restart of MySQL

et

Error: Table "mysql"."innodb_table_stats" not found.

J'ai suivi les conseils postés de Rolando et la base de données ne plante plus ou ne crée plus un énorme error.log. (Les problèmes ci-dessus ont disparu, décrivant simplement les principaux événements)

Maintenant, je suis préoccupé par les erreurs suivantes avant de convertir quoi que ce soit en INNODB. Fédéré peut être ignoré de ce que j'ai lu, la deuxième ligne ci-dessous (également le sujet de cet article) me concerne

2014-05-19 01:50:57 30950 [Note] Plugin 'FEDERATED' is disabled.
2014-05-19 01:50:57 30950 [ERROR] Function 'innodb' already exists
2014-05-19 01:50:57 30950 [Warning] Couldn't load plugin named 'innodb' with soname 'ha_innodb.so'.
2014-05-19 01:50:57 30950 [ERROR] Function 'federated' already exists
2014-05-19 01:50:57 30950 [Warning] Couldn't load plugin named 'federated' with soname 'ha_federated.so'.
2014-05-19 01:50:57 30950 [ERROR] Function 'blackhole' already exists
2014-05-19 01:50:57 30950 [Warning] Couldn't load plugin named 'blackhole' with soname 'ha_blackhole.so'.
2014-05-19 01:50:57 30950 [ERROR] Function 'archive' already exists
2014-05-19 01:50:57 30950 [Warning] Couldn't load plugin named 'archive' with soname 'ha_archive.so'.

a ajouté ce qui suit à my.cnf à partir des conseils postés de Rolando

innodb_buffer_pool_size=4G
innodb_buffer_pool_instances=2
innodb_read_io_threads=12
innodb_write_io_threads=12
innodb_io_capacity=300
innodb_log_file_size=128M

Je ne savais pas s'il devait y avoir autre chose lié à INNODB. Sur la base de ce que j'ai pu trouver également ajouté

innodb_flush_method            = O_DIRECT
innodb_log_files_in_group      = 2
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table          = 1

Ça n'a pas aidé. Non pas que je m'attendais à ce qu'il supprime une "fonction existante" ... lol

traildex
la source
Avez-vous exécuté mysql_upgrade?
dwjv
@dwjv incertain alors je l'ai exécuté et il a dit "Cette installation de MySQL est déjà mise à jour vers 5.6.17". Le même problème de "[ERREUR] La fonction 'innodb' existe déjà" dans le
fichier

Réponses:

12

Les plugins générant des erreurs dans le fichier error.log n'étaient pas spécifiquement spécifiés dans my.cnf. Alors j'ai couru ...

select * from mysql.plugin

pour MySQL 5.6.17 j'ai supprimé les lignes suivantes dans mysql.plugin

innodb ha_innodb.so
federated ha_federated.so
blackhole ha_blackhole.so
archive ha_archive.so

Ne supprimez rien dont vous n'êtes pas sûr. Ce qui précède a fonctionné pour moi en tant que ...

  • Je n'utilise pas Federated (accède aux données dans des tableaux de bases de données distantes)
  • INNODB est intégré dans 5.6, aucun plugin requis
  • Je n'utilise pas Blackhole (accepte les données mais les jette et ne les stocke pas)
  • Je n'utilise pas Archive (stockage de grandes quantités de données sans index dans une très petite empreinte)
traildex
la source
2
vous devriez recevoir un crédit supplémentaire pour avoir répertorié quel plugin fait quoi, merci!
n611x007
0

PROBLÈME

mysql.innodb_table_statsfait partie de l'installation de MySQL 5.6. mysql_upgrade ne les génère pas. Pourquoi ?

  • Lorsque vous installez MySQL 5.6 à partir de zéro, ce fichier est généré.
  • Le fichier innodb_table_stats.ibdn'existe pas dans le schéma mysql de MySQL 5.5
  • Mysql_upgrade de MySQL 5.5 n'est au courant d'aucune table système innodb.
  • En fait, il y a cinq (5) .ibdfichiers dans MySQL 5.6 dans le schéma mysql.

SOLUTION

Veuillez regarder ces articles que j'ai écrits l'année dernière sur la façon de les faire

Essaie !!!

RolandoMySQLDBA
la source
Merci, j'ai résolu cela auparavant avec vos conseils postés. Ma préoccupation ici est "[ERREUR] La fonction 'innodb' existe déjà" dans error.log
traildex
0

J'ai eu ce genre d'erreurs similaires dans PCLinuxOs. Ce que je l' ai fait est tout simplement renommé le fichier /etc/my.cnfà /etc/my.cnf.baket j'ai pu démarrer le serveur MySQL. Je ne connais pas la raison exacte mais cela a fonctionné pour moi. Les paramètres de ce fichier peuvent être en conflit.

Krishnadas PC
la source