Hetzner - DokuWiki

Datenbank läuft auf separater HDD

Ich habe sehr gute Erahrungen damit gemacht, die zweite Server-Festplatte als Speicherort für die MySQL Datenbanken zu benutzen. Wer also kein RAID braucht, aber möglichst viel Plattendurchsatz, kann auf diese Art sein System deutlich schneller machen.

Bei großen, datenbank-basierten Webseiten, wie z.B. großen Foren oder Wikis, ist für gewöhnlich die Datenbank das eigentliche "Schwergewicht", weswegen es sinnvoll ist, diese Last von der System-Platte zu nehmen.

Die folgenden Kommandos habe ich auf meinem Debian 3.1 System getestet. Wenn Sie eine andere Distribution benutzen, müssen Sie die Kommandos ggf. anpassen.

Inhaltsverzeichnis

Allgemeines

Auf der zweiten Platte (sdb) muss eine neue Partition erzeugt werden. 10 GB sollte für 99% der Kunden ausreichend sein, aber wer unbedingt mehr Platz haben will oder braucht, soll gerne mehr nehmen.

Da die Platte ja keine anderen ressourcenfressenden Aufgaben wahrnehmen soll, könnte man den Rest einfach als Backup Partition einrichten. In der Nacht zieht der Server dann per cron Backups der sda-Platte. Das ist denke ich der beste Verwendungszweck, denn damit kann man den übrigen Platz gut nutzen, und "verschwendet" trotzdem keine Performanz.

Einrichten der Partitionen

  • Die Festplatte wird mit fdisk partitioniert
  • Dateisystem: ext3 (zum Beispiel)
  • Partition 1: 10 GB --> wird zu /dev/sdb1
  • Partition 2: Rest --> wird zu /dev/sdb2

Die Partitionsnummern können je nach Hardware und bereits erstellten Partitionen natürlich auch anders lauten. Bitte passen Sie die folgenden Kommandos an Ihre Konfiguration an.

Falls Sie Informationen benötigen, wie man fdisk benutzt, lesen Sie bitte auch den Artikel "Zweite Platte".

Mount-Punkte setzen

Damit die Parttionen bei Start des Servers korrekt gemeountet werden, muss die Datei /etc/fstab bearbeitet werden. Fügen Sie folgende Zeilen ans Ende dieser Datei an:

 /dev/sdb1       /var/lib/mysql  ext3    defaults        0 0
 /dev/sdb2       /var/backup     ext3    defaults        0 0

Verwenden Sie bitte das Dateisystem, mit welchem Sie die Partitionen formatiert haben. Hier im Beispiel verwende ich ext3.

Beim nächsten Start des Servers werden die beiden Partitionen an den entsprechenden Stellen ins Dateisystem eingehängt. Bitte beachten Sie, dass alle Daten, die sich momentan unter /var/lib/mysql und /var/backup befinden dann nicht mehr gesehen/benutzt werden können. (Gelöscht werden sie aber nicht). Sie sollten daher ein Backup der bisherigen Daten anfertgen - nicht zuletzt, damit Ihre MySQL Datenbanken und Zugriffsrechte erhalten bleiben.

Test der Mount-Punkte

Prüfen Sie nun, ob die Partitionen korrekt gemeountet werden können. Dazu sind folgende Schritte nötig:

  • Beenden des laufenden MySQL Server Prozesses (Wichtig!)
  • Sichern der MySQL Datenbanken (Kopieren an sicheren Ort)
  • Mounten der Partitionen
  • Kopieren der zuvor gesicherten Datenbanken auf die neue Partition
  • Neustart des MySQL Servers
 mkdir /tmp/mysqlbak
 cp -pr /var/lib/mysql/* /tmp/mysqlbak
 /etc/init.d/mysql stop
 mount -t ext3 /dev/sdb1 /var/lib/mysql
 mount -t ext3 /dev/sdb2 /var/backup
 cp -pr /tmp/mysqlbak/* /var/lib/mysql
 chown mysql:mysql /var/lib/mysql
 /etc/init.d/mysql start

Sollte eines der Kommandos nicht ausgeführt werden können, fahren Sie bitte nicht einfach fort, sondern lösen Sie zuerst das Problem.

Abschluss

Testen Sie nun, ob der MySQL Server korrekt läuft, indem Sie z.B. mit phpMyAdmin (oder per Kommandoprompt) prüfen, ob alle Datenbanken vorhanden sind, und ob die Benutzerrechte noch passen.

Ihr MySQL Server speichert nun die Datendateien auf er sekundären Festplatte. Die volle Leistung dieser Platte steht nun dem Datenbankserver zur Verfügung, während das Betriebssystem, die Logs, der Apache, der Mailserver, etc. die Leistung der ersten Platte nutzt.


- Fuxboml 19:58, 2. Okt 2006 (CEST)



© 2012. Hetzner Online AG. Alle Rechte vorbehalten.