2017-11-29 7 views
1

Wir haben ein Skript, das die Syslog-Tabellen in MySQL "rotiert"/archiviert. Dieses Skript:MariaDB - Online-Verschiebe-/Archivtabellen

  • auf Linux Ebene, benennt die "MyISAM" Tabellen Dateien, um sie dann komprimieren dann
  • innerhalb MySQL, diese Tabellen umbenennen

Die 2 Stufen sind „Online ". Es ist kein MySQLd-Neustart erforderlich. Jetzt habe ich eine neue Syslog-Datenbank in MariaDB (Debian Stretch) gebaut. Die Tabellen verwenden InnoDB und nicht MyISAM. Dieses Skript scheitert an der zweiten Ausführung die Tabelle in MySQL zu umbenennen, nachdem die Datei zu bewegen:

ERROR 1050 (42S01): Table ‚SystemEvents_1‘ existiert bereits

Eine Referenz der Tabelle wird irgendwo gehalten (Tabellen interne Systemtabelle?), die das verhindert.

Meine Frage: würde es funktionieren, wenn ich meine Tabellen auf die ARIA-Engine mit transactional = 0 migrieren?

Danke, Vince

+0

Von meinem Verständnis, und da innoDB keine Datei pro Tabelle verwenden (außer innodb_file_per_table ist aktiviert), können Sie nicht dasselbe tun wie mit MyISAM ... – Hackerman

+0

danke @Hackerman. Ich werde auf die Option "innodb_file_per_table" schauen. Mein generelles Gefühl ist, dass ich bei InnoDB bleiben sollte, selbst wenn das Verlieren von syslog mit der MyISAM/aria-Engine keine große Sache wäre ... – Vince

+0

Und ich denke, dass innoDB, selbst wenn es diese Option aktiviert, immer noch die ibdata1-Datei verwenden wird. Ich empfehle Ihnen, dieses Q & A von der dba-Website zu lesen https://dba.stackexchange.com/questions/15531/why-does-innodb-store-all-databases-in-one-file – Hackerman

Antwort

0

Ich denke, es ist nicht mehr möglich. Ich konvertierte meine Tabellen in MyISAM (und sogar Aria mit transactional = 0) und hatte die gleiche Fehlermeldung. Ich denke, das Beste ist, mysqldump zu verwenden, um die Tabellen zu exportieren, anstatt die Dateisystemdateien direkt umzubenennen. Weniger praktisch, aber mysqldump funktioniert immer unabhängig von der gewählten Engine.