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
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
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
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