Dieser Abschnitt beschreibt, was Sie tun können, wenn Ihr
InnoDB
-Tablespace nicht mehr genug Platz hat
oder Sie die Größe der Logdateien ändern möchten.
Am einfachsten lässt sich der
InnoDB
-Tablespace vergrößern, wenn er von
Anfang an als selbsterweiternd konfiguriert wird. Hierzu geben Sie
das autoextend
-Attribut für die letzte
Datendatei in der Tablespace-Definition an. Dann lässt
InnoDB
diese Datei automatisch in Inkrementen
von 8MB anwachsen, wenn ihr der Platz ausgeht. Die
Inkrement-Größe kann mit der Systemvariablen
innodb_autoextend_increment
in MB eingestellt
werden.
Sie können Ihren Tablespace jedoch auch vergrößern, indem Sie
eine weitere Datendatei hinzufügen. Hierzu müssen sie den
MySQL-Server herunterfahren, der Tablespace-Konfiguration am Ende
von innodb_data_file_path
eine neue Datendatei
hinzufügen, und den Server wieder neu starten.
Wenn die letzte Datendatei mit dem Schlüsselwort
autoextend
definiert worden ist, müssen Sie
bei der Rekonfiguration des Tablespaces berücksichtigen, auf
welches Maß diese letzte Datendatei angewachsen ist. Ermitteln
Sie die Größe der Datendatei, runden Sie sie auf das nächste
Vielfache von 1024 × 1024 bytes (= 1MB) ab und geben Sie
diesen gerundeten Wert explizit in
innodb_data_file_path
an. Dann können Sie eine
weitere Datendatei hinzufügen. Denken Sie daran, dass Sie nur die
letzte Datendatei in innodb_data_file_path
als
selbsterweiternd definieren können.
Nehmen wir beispielsweise an, der Tablespace hat nur eine
selbsterweiternde Datendatei namens ibdata1
:
innodb_data_home_dir = innodb_data_file_path = /ibdata/ibdata1:10M:autoextend
Diese Datei sei nun mit der Zeit auf 988MB angewachsen. Hier sehen Sie die Konfigurationszeile, nachdem die ursprüngliche Datendatei als nicht mehr selbsterweitend definiert und eine neue, selbsterweiternde Datendatei hinzugefügt wurde:
innodb_data_home_dir = innodb_data_file_path = /ibdata/ibdata1:988M;/disk2/ibdata2:50M:autoextend
Wenn Sie der Tablespace-Konfiguration eine neue Datei hinzufügen,
achten Sie darauf, dass diese noch nicht existiert.
InnoDB
wird die Datei erzeugen und
initialisieren, wenn der Server neu gestartet wird.
Gegenwärtig ist es nicht möglich, eine Datendatei aus dem Tablespace zu löschen. Wenn Sie Ihren Tablespace verkleinern möchten, gehen Sie folgendermaßen vor:
Mit mysqldump erstellen Sie einen Dump
aller InnoDB
-Tabellen.
Halten Sie den Server an.
Löschen Sie alle vorhandenen Tablespace-Dateien.
Konfigurieren Sie einen neuen Tablespace.
Starten Sie den Server neu.
Importieren Sie die Dump-Dateien.
Wenn Sie die Anzahl oder Größe Ihrer
InnoDB
-Logdateien ändern möchten, halten Sie
den MySQL-Server an und achten darauf, dass er ohne Fehler
herunterfährt (um zu gewährleisten, dass in den Logs keine Daten
unvollendeter Transaktionen hängen bleiben). Dann kopieren Sie
die Logdateien an einen sicheren Ort, nur für den Fall, dass beim
Herunterfahren etwas schiefgeht und Sie den Tablespace
wiederherstellen müssen. Löschen Sie die alten Logdateien aus
dem Logdateiverzeichnis, ändern Sie die Logdateikonfiguration in
my.cnf
und starten Sie den MySQL-Server neu.
mysqld erkennt beim Hochfahren, dass keine
Logdateien vorhanden sind, und teilt Ihnen mit, dass neue angelegt
werden.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.