Mittwoch, 24. Mai 2017

file per table: Convert InnoDB - mit Verkleinerung der ibdata1

Auf meinem zabbix-System ging der Speicherplatz zur neige. Ich dachte mir, dann konsolidiere ich die Daten, passe die Werte was gespeichert werden soll und wie lange etwas an und dann ist wieder genug Platz.

Dem ist aber leider nicht so, denn mein MySQL-Server war standardmäßig so eingestellt, dass er alle Datenbanken und Tabellen in ein großes file schreibt. Dieses /var/lib/mysql/ibdata1 auf meinem Ubuntu 12.04.5-Server wird aber nach dem Löschen von Daten nicht mehr kleiner.

Nach einer kurzen Suche fand ich heraus, dass man in der /etc/mysql/my.cf zwar den Parameter innodb_file_per_table = 1 in der [mysqld] Sektion machen kann - das betrifft aber dann nur neu angelegte Datenbanken und Tabellen - die alten Tabellen bleiben noch in dem alten großen ibdata1-file erahlten.

Darum muss man die Tabellen exportieren und wieder importieren um den gewünschten Effekt zu erziehlen, die ibdata1 löschen zu können. Das ist natürlich wieder mit dem Problem verbunden, dass der Export eben so groß ist wie die Datenbank vorher war und daher wird der gleiche Speicherplatz nochmals benötigt.

Ich denke mal, ich bin nicht der Einzige, der sich erst dann darum gekümmert hat, als nicht mehr viel Speicher übrig war. Wenn das Gerät jetzt nicht physisch vor einem steht oder man im Rechenzentrum nicht die Möglichkeit hat, die Festplattengröße zu erweitern, muss man die Datenbank woanders umziehen.

Ich erstellte mir eine virtuelle Maschine, lud mir die Daten runter und suchte mir ein passendes Script zur Umstellung, welches ich auf:

http://thecpaneladmin.com/how-to-convert-innodb-to-innodb_file_per_table-and-shrink-ibdata1/ fand.

Damit das script bei mir lief musste ich noch folgende Schritte vorher durchführen:

1. apt-get install python-pip python-dev libmysqlclient-dev
2. pip install MySQL-python
3. Anlegen eines .my.cf-files

Sind die Voraussetzungen geschaffen, startet man das Script

exec su mysql ./innodb_export_import.py --export --dir=/root

###to be continued....

Installation REINERSCT cyberJack secoder Ubuntu 16.06

Kurze Anleitung, weil es einfach läuft!

Habe, bevor ich ihn in der frischen Installation angeschlossen habe, nur:

sudo apt-get install libifd-cyberjack6v5

ausgeführt, und schon konnte ich das Lesegerät für mein Onlinebanking nutzen.