FreeBSD 4.x oder neuer wird für die Ausführung von MySQL
empfohlen, da das Thread-Paket wesentlich besser integriert
ist. Um ein sicheres und stabiles System zu erhalten, sollten
Sie nur FreeBSD-Kernels verwenden, die mit
-RELEASE
gekennzeichnet sind.
Die einfachste (und deswegen empfohlene) Vorgehensweise zur
Installation von MySQL besteht in der Verwendung der
mysql-server- und
mysql-client
-Ports, die unter
http://www.freebsd.org/ verfügbar
sind. Die Verwendung dieser Ports hat die folgenden Vorteile:
Sie erhalten ein funktionsfähiges MySQL, bei dem alle Optimierungen, die unter Ihrer FreeBSD-Version bekanntermaßen funktionieren, bereits aktiviert sind.
Konfiguration und Erstellung werden automatisch durchgeführt.
Startskripten sind in
/usr/local/etc/rc.d
installiert.
Sie können mit pkg_info -L
überprüfen, welche Dateien installiert sind.
Sie können ferner mit pkg_delete
MySQL
entfernen, wenn Sie es auf Ihrem Rechner nicht mehr
benötigen.
Wir empfehlen die Verwendung von MIT-pthreads unter FreeBSD 2.x und von nativen Threads unter FreeBSD 3 und höher. Zwar können auch spätere Versionen von Release 2.2.x mit nativen Threads betrieben werden, aber dann kann es zu Problemen beim Herunterfahren von mysqld kommen.
Leider sind bestimmte Funktionsaufrufe unter FreeBSD noch
nicht vollständig Thread-sicher. Dies betrifft vor allem die
Funktion gethostbyname()
, die von MySQL zur
Umwandlung von Hostnamen in IP-Adressen verwendet wird. Unter
bestimmten Umständen verursacht der Prozess
mysqld unvermittelt eine
Prozessorauslastung von 100 Prozent und reagiert nicht mehr.
Wenn dieses Problem auftritt, versuchen Sie MySQL mit der
Option --skip-name-resolve
zu starten.
Alternativ können Sie MySQL unter FreeBSD 4.x mit der LinuxThreads-Bibliothek verknüpfen, wodurch einige der Probleme vermieden werden, die die native Thread-Implementierung von FreeBSD hat. Einen sehr guten Vergleich von LinuxThreads und nativen Threads finden Sie in Jeremy Zawodnys Artikel FreeBSD or Linux for your MySQL Server? unter http://jeremy.zawodny.com/blog/archives/000697.html.
Es gibt ein bekanntes Problem bei der Verwendung von LinuxThreads unter FreeBSD:
Die Verbindungszeiten (wait_timeout
,
interactive_timeout
und
net_read_timeout
) werden nicht
beachtet. Auffälliges Symptom ist, dass
Permanentverbindungen für eine sehr lange Zeit hängen,
ohne abgebaut zu werden, und dass eine Terminierung des
Threads erst Erfolg hat, wenn der Thread einem neuen
Befehl zugeordnet wird.
Dies ist wahrscheinlich ein Signalverwaltungsproblem in der Thread-Bibliothek, wo das Signal eine anhängige Leseoperation nicht unterbricht. Das Problem wird voraussichtlich in FreeBSD 5.0 behoben.
Damit der MySQL-Erstellungsprozess funktioniert, ist GNU make (gmake) erforderlich. Wenn GNU make nicht vorhanden ist, müssen Sie es vor der Kompilierung von MySQL installieren.
Die empfohlene Vorgehensweise zur Kompilierung und Installation von MySQL unter FreeBSD mit gcc (2.95.2 und höher) ist die folgende:
CC=gcc CFLAGS="-O2 -fno-strength-reduce" \ CXX=gcc CXXFLAGS="-O2 -fno-rtti -fno-exceptions \ -felide-constructors -fno-strength-reduce" \ ./configure --prefix=/usr/local/mysql --enable-assembler gmake gmake install cd /usr/local/mysql bin/mysql_install_db --user=mysql bin/mysqld_safe &
Wenn Sie feststellen, dass configure MIT-pthreads verwendet, lesen Sie die Anmerkungen zu MIT-pthreads. Siehe auch Abschnitt 2.8.5, „Anmerkungen zu MIT-pthreads“.
Wenn make install die Fehlermeldung
ausgibt, dass es /usr/include/pthreads
nicht finden kann, dann hat configure nicht
erkannt, dass Sie MIT-pthreads benötigen. Um dieses Problem
zu beheben, entfernen Sie config.cache
und führen configure dann erneut mit der
Option --with-mit-threads
aus.
Achten Sie darauf, dass Ihre Namensauflösung korrekt ist.
Andernfalls werden Verzögerungen oder Fehler bei der
Auflösung auftreten, wenn Sie die Verbindung mit
mysqld herzustellen versuchen. Ferner
müssen Sie sicherstellen, dass der Eintrag
localhost
in der Datei
/etc/hosts
korrekt ist. Am Anfang der
Datei sollte eine Zeile ähnlich der folgenden stehen:
127.0.0.1 localhost localhost.your.domain
FreeBSD hat bekanntermaßen einen sehr niedrigen Standardwert
für Datei-Handles. Siehe auch
Abschnitt A.2.17, „Datei nicht gefunden“. Starten
Sie den Server unter Verwendung der Option
--open-files-limit
für
mysqld_safe oder heben Sie den Wert für
den Benutzer mysqld in
/etc/login.conf
an und erstellen Sie die
Datei dann mit cap_mkdb /etc/login.conf
neu. Achten Sie außerdem darauf, die passende Klasse für
diesen Benutzer in der Passwortdatei zu konfigurieren, sofern
Sie die Vorgabe nicht verwenden (benutzen Sie chpass
mysqld-user-name
). Siehe auch
Abschnitt 5.4.1, „mysqld_safe — Startskript für den MySQL-Server“.
FreeBSD beschränkt die Größe eines Prozesses auch dann auf 512 Mbyte, wenn auf Ihrem System wesentlich mehr Arbeitsspeicher vorhanden ist. Insofern kann ein Fehler wie der folgende auftreten:
Out of memory (Needed 16391 bytes)
Bei den aktuellen Versionen von FreeBSD (mindestens seit 4.x)
können Sie den Grenzwert auch anheben, indem Sie die
folgenden Einträge in der Datei
/boot/loader.conf
hinzufügen und den
Computer neu starten (diese Einstellungen lassen sich nicht
zur Laufzeit mit dem Befehl sysctl
ändern):
kern.maxdsiz="1073741824" # 1GB kern.dfldsiz="1073741824" # 1GB kern.maxssiz="134217728" # 128MB
Bei älteren FreeBSD-Versionen müssen Sie Ihren Kernel neu
kompilieren, um die maximale Datensegmentgröße für einen
Prozess zu ändern. In diesem Fall sollten Sie sich die Option
MAXDSIZ
in der Konfigurationsdatei
LINT
näher ansehen, um weitere
Informationen zu erhalten.
Wenn es Probleme mit dem aktuellen Daten in MySQL gibt, sollte
eine Einstellung der Variablen TZ
Abhilfe
leisten können. Siehe auch
Anhang F, Umgebungsvariablen.
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.