Lösung für Primärschlüsselkonflikte, wenn innodb_index_stats beim Importieren von Sicherungsdaten einen Fehler meldet

Lösung für Primärschlüsselkonflikte, wenn innodb_index_stats beim Importieren von Sicherungsdaten einen Fehler meldet

Fehlerbeschreibung

percona5.6, mysqldump vollständige Sicherung, Fehler Doppelter Eintrag 'hoc_log99-item_log_27-PRIMARY-n_diff_pfx01' für Schlüssel 'PRIMARY' beim Importieren von Sicherungsdaten

Ursache

Überprüft und festgestellt, dass dieser Primärschlüssel die Systemtabelle innodb_index_stats unter der MySQL-Systembibliothek sein sollte

mysql> anzeigen, Tabelle erstellen innodb_index_stats\G
*************************** 1. Reihe ***************************
    Tabelle: innodb_index_stats
Tabelle erstellen: CREATE TABLE `innodb_index_stats` (
 `Datenbankname` varchar (64) COLLATE utf8_bin NICHT NULL,
 `table_name` varchar(64) COLLATE utf8_bin NICHT NULL,
 `index_name` varchar(64) COLLATE utf8_bin NICHT NULL,
 `last_update` Zeitstempel NICHT NULL STANDARD CURRENT_TIMESTAMP BEI UPDATE CURRENT_TIMESTAMP,
 `stat_name` varchar(64) COLLATE utf8_bin NICHT NULL,
 `stat_value` bigint(20) unsigned NICHT NULL,
 `sample_size` bigint(20) unsigned DEFAULT NULL,
 `stat_description` varchar(1024) COLLATE utf8_bin NICHT NULL,
 PRIMÄRSCHLÜSSEL (`Datenbankname`, `Tabellenname`, `Indexname`, `Statistikname`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0

1 Zeile im Satz (0,00 Sek.)

mysql> wähle * aus innodb_index_stats, wobei database_name='hoc_log99' und table_name='item_log_27' und stat_name='n_diff_pfx01' und index_name='PRIMARY';
+-----------------+----------+------------+---------------------+---------------+------------+-------------+------------------+
| Datenbankname | Tabellenname | Indexname | letzte_Aktualisierung | Statistikname | Statistikwert | Stichprobengröße | Statistikbeschreibung |
+-----------------+----------+------------+---------------------+---------------+------------+-------------+------------------+
| hoc_log99 | item_log_27 | PRIMARY | 07.10.2016 18:44:06 | n_diff_pfx01 | 823672 | 20 | neu erstellt |
+-----------------+----------+------------+---------------------+---------------+------------+-------------+------------------+
1 Zeile im Satz (0,00 Sek.)

Ich habe damals die SQL-Datensätze in meiner Sicherungsdatei überprüft und festgestellt, dass die Tabelle vor dem Importieren neu erstellt werden würde. Dies schloss die Möglichkeit aus, dass die Betriebsdatensätze der Tabelle item_log_27 vor dem Importieren der Tabelle in innodb_index_stats eingegeben wurden.

-- Tabellenstruktur für Tabelle „innodb_index_stats“
Tabelle löschen, wenn `innodb_index_stats` vorhanden ist;
Tabelle „innodb_index_stats“ erstellen (
-- Daten für Tabelle „innodb_index_stats“ ausgeben
SPERRT TABELLEN `innodb_index_stats` SCHREIBEN;
/*!40000 ALTER TABLE `innodb_index_stats` SCHLÜSSEL DEAKTIVIEREN */;

Also habe ich die aktuellen Binärprotokolldatensätze noch einmal überprüft und festgestellt, dass tatsächlich eine Operation zum Neuerstellen dieser Tabelle stattgefunden hat.

DROP TABLE IF EXISTS `innodb_index_stats` /* vom Server generiert */
Tabelle „innodb_index_stats“ erstellen (
/*!40000 ALTER TABLE `innodb_index_stats` SCHLÜSSEL DEAKTIVIEREN */

abschließend

MySQL 5.6-Fehler, andere Kollegen haben den gleichen Fehler festgestellt

https://www.percona.com/forums/questions-discussions/mysql-and-percona-server/31971-mysql-innodb_index_stats-duplication-entry-error-on-restore

https://bugs.mysql.com/bug.PHP?id=71814

Lösung

1 mysqldump fügt Parameter hinzu, um die Sicherung dieser Tabelle zu ignorieren

2 Ändern Sie den Einfügevorgang dieser Tabelle in der Sicherungsdatei, um

3 mysql -f erzwungener Import

Der obige Artikel zum Lösen des Primärschlüsselkonflikts der Fehlertabelle, wenn innodb_index_stats Sicherungsdaten importiert, ist der gesamte Inhalt, den der Editor mit Ihnen teilt. Ich hoffe, er kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen.

<<:  So lösen Sie das Problem FileZilla_Server:425. Datenverbindung kann nicht geöffnet werden

>>:  Ubuntu-Terminal, mehrere Fenster, geteilter Bildschirm, Terminator

Artikel empfehlen

Kurze Analyse der geplanten MySQL-Sicherungsaufgaben

Einführung Um Datenverlust in einer Produktionsum...

Schritte für den Exit-Fehlercode des Docker-Containers

Manchmal werden einige Docker-Container nach eine...

14 Techniken für leistungsstarke Websites

Original : http://developer.yahoo.com/performance...

Implementierung der Nummernschild-Eingabefunktion im WeChat-Applet

Inhaltsverzeichnis Vorwort Hintergrund Große Verm...

Ausführliche Erklärung der Sonderberechtigungen SUID, SGID und SBIT in Linux

Vorwort Für die Berechtigungen von Dateien oder V...

So verwenden Sie Nginx als Load Balancer für MySQL

Hinweis: Die Nginx-Version muss 1.9 oder höher se...

Tutorial zur Installation von Nginx in einer Linux-Umgebung

Inhaltsverzeichnis 1. Installieren Sie die erford...

Vue implementiert den Anruf der PC-Kamera, um Fotos in Echtzeit aufzunehmen

Vue ruft die PC-Kamera auf, um Bilder in Echtzeit...