L'éditeur suivant vous proposera un article sur la façon de résoudre le problème du conflit de clé primaire de table lorsque innodb_index_stats importe des données de sauvegarde. L'éditeur pense que c'est plutôt bien, alors je vais le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur pour y jeter un œil.
Description du défaut
percona5.6, sauvegarde complète mysqldump, lors de l'importation des données de sauvegarde, une erreur se produit Entrée en double ' hoc_log99-item_log_27-PRIMARY-n_diff_pfx01' pour la clé 'PRIMARY'
Cause de l'échec
Après vérification, cette clé primaire devrait être sous la bibliothèque système MySQL La table système innodb_index_stats
mysql> show create table innodb_index_stats\G *************************** 1. row *************************** Table: innodb_index_stats Create Table: CREATE TABLE `innodb_index_stats` ( `database_name` varchar(64) COLLATE utf8_bin NOT NULL, `table_name` varchar(64) COLLATE utf8_bin NOT NULL, `index_name` varchar(64) COLLATE utf8_bin NOT NULL, `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `stat_name` varchar(64) COLLATE utf8_bin NOT NULL, `stat_value` bigint(20) unsigned NOT NULL, `sample_size` bigint(20) unsigned DEFAULT NULL, `stat_description` varchar(1024) COLLATE utf8_bin NOT NULL, PRIMARY KEY (`database_name`,`table_name`,`index_name`,`stat_name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0 1 row in set (0.00 sec) mysql> select * from innodb_index_stats where database_name='hoc_log99' and table_name='item_log_27' and stat_name='n_diff_pfx01' and index_name='PRIMARY'; +---------------+-------------+------------+---------------------+--------------+------------+-------------+------------------+ | database_name | table_name | index_name | last_update | stat_name | stat_value | sample_size | stat_description | +---------------+-------------+------------+---------------------+--------------+------------+-------------+------------------+ | hoc_log99 | item_log_27 | PRIMARY | 2016-10-07 18:44:06 | n_diff_pfx01 | 823672 | 20 | redid | +---------------+-------------+------------+---------------------+--------------+------------+-------------+------------------+ 1 row in set (0.00 sec)
a ensuite vérifié les enregistrements de mon fichier de sauvegarde sql à ce moment-là et a constaté que la table sera reconstruite avant d'importer à nouveau cette table, ce qui exclut l'opération de la table item_log_27 avant d'importer cette table. Possibilité de se connecter à innodb_index_stats.
-- Table structure for table `innodb_index_stats` DROP TABLE IF EXISTS `innodb_index_stats`; CREATE TABLE `innodb_index_stats` ( -- Dumping data for table `innodb_index_stats` LOCK TABLES `innodb_index_stats` WRITE; /*!40000 ALTER TABLE `innodb_index_stats` DISABLE KEYS */;
J'ai donc vérifié à nouveau les récents enregistrements du binlog et j'ai découvert qu'il y avait effectivement eu une opération pour reconstruire cette table
DROP TABLE IF EXISTS `innodb_index_stats` /* generated by server */ CREATE TABLE `innodb_index_stats` ( /*!40000 ALTER TABLE `innodb_index_stats` DISABLE KEYS */
Conclusion
Bogue MySQL 5.6, d'autres collègues ont rencontré la même erreur
www.percona.com/forums/questions-discussions/mysql-and-percona-server/31971-mysql-innodb_index_stats-duplication-entry-error-on-restore
bugs . mysql.com/bug.PHP?id=71814
Solution
1 Mysqldump ajoute des paramètres pour ignorer la sauvegarde de cette table
2 Modifiez l'insertion de cette table dans le fichier de sauvegarde pour remplacer
3 mysql -f force import
[Recommandations associées]
1 Mysql. Tutoriel vidéo gratuit
2. Exemples détaillés d'ajout de nouvelles autorisations utilisateur dans MySQL
3 Exemples détaillés de modification des mots de passe et des restrictions d'accès dans MySQL.
5. Explication détaillée d'exemples de stockage d'images php dans MySQL
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!