Vor einiger Zeit verfügte der Server, auf dem meine Instanz ausgeführt wurde, über 20 GB EBS-Speicher. Dann wurden Festplattenspeicherfehler angezeigt, sodass ich sie auf 40 GB erhöhte. Andererseits fehlten Speicherfehler, so dass ich mich wieder auf 60 GB erhöhte. (Dies ist also eine 60 GB RDS-Instanz)
Hier sehen Sie die Tabelle mit dem freien Speicherplatz (MB) . Jedes Mal, wenn es hochschießt, füge ich mehr Speicherplatz hinzu.
Wenn ich diese Abfrage ausführe ..
SELECT CONCAT(table_schema, '.', table_name),
CONCAT(ROUND(table_rows / 1000000, 2), 'M') rows,
CONCAT(ROUND(data_length / ( 1024 * 1024 * 1024 ), 2), 'G') DATA,
CONCAT(ROUND(index_length / ( 1024 * 1024 * 1024 ), 2), 'G') idx,
CONCAT(ROUND(( data_length + index_length ) / ( 1024 * 1024 * 1024 ), 2), 'G') total_size,
ROUND(index_length / data_length, 2) idxfrac
FROM information_schema.TABLES
ORDER BY data_length + index_length DESC
LIMIT 10;
Ich bekomme folgende Antwort ...
Nichts zeichnet sich dadurch aus, dass es viel Platz einnimmt.
Wenn ich dann renne
select table_schema, CONCAT(ROUND( sum((data_length+index_length)/1024/1024)/1024, 2), 'G') AS MB from information_schema.tables group by 1;
Ich kann sehen, dass der größte Tisch ungefähr 10 GB hat. (Dies beinhaltet data_length und index_length)
Mein nächster Gedanke ist, dass der langsame Speicherplatz general_log oder langsame Abfrageprotokolle ist, die auf die Festplatte schreiben ...
Wenn ich die Parametergruppen auf meiner RDS-Instanz überprüfe, kann ich sehen, dass die Protokollierung deaktiviert ist.
Hat jemand eine Idee, warum mein RDS-Server langsam Speicherplatz verliert?
AKTUALISIEREN:
Ich habe Hilfe von den freundlichen Leuten auf #mysql bekommen
Nach dem Rennen
show global variables like 'log_bin';
Es war klar, dass binäre Protokolle aktiviert waren.
Ich rannte dann
show binary logs
und hatte 41674+ Protokolle.
Beim Durchblättern meiner Protokolle konnte ich feststellen, dass eine der Dateigrößen 2064636 war
Ich habe dann versucht, alle Binärprotokolle bis zu dieser Änderungsprotokolldatei zu löschen.
purge binary logs to "mysql-bin-changelog.152193"
RDS bietet jedoch nicht File_priv
oder Super_priv
für den Hauptbenutzer.
Ich würde gerne denken, dass hier der Speicherplatz verschwunden ist. 2064636 ist jedoch nur etwa 2 MB groß ... Also zurück zum Zeichenbrett?