Unter Solaris haben Sie möglicherweise schon die ersten Probleme, bevor Sie die MySQL-Distribution überhaupt entpacken können, denn tar unter Solaris kann mit langen Dateinamen nicht umgehen. Dies bedeutet, dass Ihnen unter Umständen Fehler angezeigt werden, wenn Sie MySQL entpacken.
In diesem Fall müssen Sie GNU tar (gtar) zum Entpacken der Distribution verwenden. Sie finden eine vorkompilierte Kopie für Solaris unter http://dev.mysql.com/downloads/os-solaris.html.
Native Sun-Threads funktionieren erst ab Solaris 2.5. Bis Solaris 2.4 verwendet MySQL automatisch MIT-pthreads. Siehe auch Abschnitt 2.8.5, „Anmerkungen zu MIT-pthreads“.
Wenn die folgende Fehlermeldung bei Ausführung von configure angezeigt wird, stimmt etwas mit Ihrer Compiler-Installation nicht:
checking for restartable system calls... configure: error can not run test programs while cross compiling
In diesem Fall sollten Sie den Compiler auf eine neuere Version
aktualisieren. Sie können das Problem möglicherweise auch
beheben, indem Sie die folgende Zeile in die Datei
config.cache
einfügen:
ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'}
Wenn Sie Solaris auf einem SPARC-System verwenden, wird gcc 2.95.2 oder 3.2 als Compiler empfohlen. Sie finden ihn unter http://gcc.gnu.org/. Beachten Sie, dass egcs 1.1.1 und gcc 2.8.1 auf SPARC nicht zuverlässig arbeiten.
Die empfohlene configure-Zeile sieht bei Verwendung von gcc 2.95.2 wie folgt aus:
CC=gcc CFLAGS="-O3" \ CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" \ ./configure --prefix=/usr/local/mysql --with-low-memory \ --enable-assembler
Bei Verwendung eines UltraSPARC-Systems erhalten Sie eine um 4
Prozent bessere Performance, wenn Sie -mcpu=v8
-Wa,-xarch=v8plusa
zu den Umgebungsvariablen
CFLAGS
und CXXFLAGS
hinzufügen.
Wenn Sie den Forte-Compiler 5.0 oder höher von Sun einsetzen, können Sie configure wie folgt ausführen:
CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt" \ CXX=CC CXXFLAGS="-noex -mt" \ ./configure --prefix=/usr/local/mysql --enable-assembler
Um eine 64-Bit-Binärdatei mit Sun Forte zu erstellen, verwenden Sie die folgenden Konfigurationsoptionen:
CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt -xarch=v9" \ CXX=CC CXXFLAGS="-noex -mt -xarch=v9" ASFLAGS="-xarch=v9" \ ./configure --prefix=/usr/local/mysql --enable-assembler
Wenn Sie eine 64-Bit-Solaris-Binärdatei mit
gcc erstellen wollen, ergänzen Sie
-m64
in CFLAGS
und
CXXFLAGS
und entfernen Sie
--enable-assembler
aus der
configure-Zeile.
In den MySQL-Benchmarks erhielten wir auf UltraSPARC bei der
Verwendung von Forte 5.0 im 32-Bit-Modus im Vergleich zu
gcc 3.2 mit dem Flag -mcpu
einen Geschwindigkeitszuwachs von 4 Prozent.
Wenn Sie eine 64-Bit-mysqld-Binärdatei erstellen, ist diese um 4 Prozent langsamer als die 32-Bit-Binärdatei, kann aber mehr Threads und Speicher verwalten.
Wenn Sie Solaris 10 für x86_64 einsetzen, sollten Sie alle
Dateisysteme einbinden, auf denen Sie
InnoDB
-Dateien mit der Option
forcedirectio
speichern wollen.
(Standardmäßig erfolgt die Einbindung ohne diese Option.)
Andernfalls entsteht ein erheblicher Leistungseinbruch, wenn die
InnoDB
-Speicher-Engine auf dieser Plattform
verwendet wird.
Wenn Sie auf ein Problem mit fdatasync
oder
sched_yield
stoßen, können Sie es beheben,
indem Sie LIBS=-lrt
zur
configure-Zeile hinzufügen.
Bei Versionen des WorkShop-Compilers vor 5.3 müssen Sie eventuell das Skript configure bearbeiten. Die Zeile
#if !defined(__STDC__) || __STDC__ != 1
ändern Sie wie folgt:
#if !defined(__STDC__)
Wenn Sie __STDC__
mit der Option
-Xc
aktivieren, kann der Sun-Compiler keine
Kompilierung mit der pthread.h
-Header-Datei
von Solaris durchführen. Dies ist ein Sun-spezifischer Bug
(beschädigter Compiler oder beschädigte Include-Datei).
Wenn mysqld die folgende Fehlermeldung bei
der Ausführung ausgibt, haben Sie versucht, MySQL mit dem
Sun-Compiler zu kompilieren, ohne die Multithread-Option
-mt
zu aktivieren:
libc internal error: _rmutex_unlock: rmutex not held
Fügen Sie -mt
zu CFLAGS
und
CXXFLAGS
hinzu und kompilieren Sie neu.
Wenn Sie die SFW-Version von gcc verwenden
(in Solaris 8 enthalten), dann müssen Sie
/opt/sfw/lib
zur Umgebungsvariablen
LD_LIBRARY_PATH
hinzufügen, bevor Sie
configure ausführen.
Verwenden Sie das auf sunfreeware.com
verfügbare gcc, dann werden Sie eine Menge
Probleme haben. Um dies zu vermeiden, sollten Sie
gcc und GNU binutils
auf
dem Computer kompilieren, auf dem sie auch ausgeführt werden
sollen.
Wenn Sie bei der Kompilierung von MySQL mit gcc folgende Fehlermeldung erhalten, ist Ihr gcc nicht für Ihre Solaris-Version konfiguriert:
shell> gcc -O3 -g -O2 -DDBUG_OFF -o thr_alarm ...
./thr_alarm.c: In function `signal_hand':
./thr_alarm.c:556: too many arguments to function `sigwait'
In diesem Fall besteht die richtige Lösung einzig und allein darin, sich die neueste Version von gcc zu besorgen und sie mit Ihrem aktuellen gcc-Compiler zu kompilieren. Zumindest bei Solaris 2.5 enthalten praktisch alle Binärversionen von gcc alte, unbrauchbare Include-Dateien, die Thread-basierte (und wohl auch weitere) Programme beschädigen.
Solaris bietet keine statischen Versionen aller
Systembibliotheken (libpthreads
und
libdl
) an, d. h., Sie können MySQL nicht
mit --static
kompilieren. Wenn Sie es dennoch
versuchen, erhalten Sie eine der folgenden Fehlermeldungen:
ld: fatal: library -ldl: not found undefined reference to `dlopen' cannot find -lrt
Wenn Sie eigene MySQL-Clientprogramme verknüpfen, dann wird unter Umständen die folgende Fehlermeldung zur Laufzeit angezeigt:
ld.so.1: fatal: libmysqlclient.so.#: open failed: No such file or directory
Dieses Problem lässt sich auf eine der folgenden Weisen lösen:
Wenn Sie Probleme haben, configure mit
-lz
zu verknüpfen, weil
zlib
nicht installiert ist, dann haben Sie
zwei Möglichkeiten:
Wenn Sie das komprimierte Kommunikationsprotokoll einsetzen
können wollen, müssen Sie zlib
bei
ftp.gnu.org
herunterladen und
installieren.
Sie führen configure mit der Option
--with-named-z-libs=no
aus, wenn Sie MySQL
erstellen.
Wenn Sie gcc verwenden und Probleme beim
Einladen von UDFs (User-Defined Functions, benutzerdefinierte
Funktionen) in MySQL haben, ergänzen Sie die Verknüpfungszeile
für die UDF um -lgcc
.
Wollen Sie, dass MySQL automatisch startet, dann können Sie
support-files/mysql.server
in das
Verzeichnis /etc/init.d
kopieren und eine
symbolische Verknüpfung namens
/etc/rc3.d/S99mysql.server
zu ihr
erstellen.
Wenn zu viele Prozesse innerhalb kurzer Zeit eine Verbindung mit mysqld herstellen wollen, werden Sie die folgende Fehlermeldung im MySQL-Log finden:
Error in accept: Protocol error
Dieses Problem können Sie unter Umständen beheben, indem Sie
den Server mit der Option --back_log=50
starten. (Bei MySQL vor Version 4 verwenden Sie -O
back_log=50
.)
Solaris unterstützt Core-Dateien für
setuid()
-Anwendungen nicht, d. h., Sie
können keine Core-Datei von mysqld erhalten,
wenn Sie die Option --user
verwenden.
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.