top
Loading...
2.12.3.Solaris注意事項
2.12.3. Solaris注意事項
2.12.3.1. Solaris 2.7/2.8注意事項
2.12.3.2. Solaris x86注意事項

Solaris中,甚至在解壓縮MySQL分發版時,你也會遇到問題,因為Solaris tar不能處理長文件名。這說明解壓縮MySQL分發版時會遇見錯誤。

如果出現這種問題,必須使用GNU tar(gtar)來解壓縮分發版。可以從http://dev.mysql.com/downloads/os-solaris.html找到預編譯的Solaris版本。

Sun原生線程只在Solaris 2.5和更高版本中工作。對于版本2.4和更早版本,MySQL自動使用MIT-pthreads。請參見2.8.5節,“MIT-pthreads注意事項”。

如果你運行configure時遇到下面的錯誤,說明編譯器安裝得有問題:

checking for restartable system calls... configure: error can not
run test programs while cross compiling

在這種情況下,應當將編譯器升級到較新的版本。還可以在config.cache文件中插入下面的行來解決該問題:

ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'}

如果在SPARC上使用Solaris,建議使用編譯器gcc 2.95.23.2。可以從http://gcc.gnu.org/下載。請注意egcs 1.1.1gcc 2.8.1不能在SPARC上可靠地工作。

當使用gcc 2.95.2時建議的configure行:

CC=gcc CFLAGS="-O3" 
CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" 
./configure --prefix=/usr/local/mysql --with-low-memory 
    --enable-assembler

如果你使用UltraSPARC系統,在CFLAGSCXXFLAGS環境變量中加上-mcpu=v8 -Wa,-xarch=v8plusa性能可以提高4%

如果你有Sun Forte 5.0(或更新版)編譯器,可以運行:

CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt" 
CXX=CC CXXFLAGS="-noex -mt" 
./configure --prefix=/usr/local/mysql --enable-assembler

要想用Sun Forte 編譯器創建64-位二進制,使用下面的配置選項:

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

要想使用gcc創建64-Solaris二進制,在CFLAGSCXXFLAGS增加-m64,并從configure行刪掉--enable-assembler

MySQL基準測試中,在UltraSPARC上使用32位模式的Forte 5.0,同使用帶-mcpu標記的gcc 3.2比較,速度提高了4%

如果創建了64位的mysqld二進制,速度要比32-位二進制慢4%,但是可以處理更多的線程和內存。

當為x86_64使用Solaris 10,你應當安裝用forcedirectio選項保存InnoDB文件的文件系統。(默認情況不用該選項來安裝)。如果不這樣做,當在該平臺上使用InnoDB 儲存引擎時將會造成嚴重的性能下降。

如果fdatasyncsched_yield出現問題,你可以在configure行加LIBS=-lrt修復該問題。

對于早于WorkShop 5.3的編譯器,你可能需要編輯configure腳本。應將該行:

#if !defined(__STDC__) || __STDC__ != 1

更該為:

#if !defined(__STDC__)

如果你用-Xc 選項打開__STDC__Sun 編譯器不能用Solaris pthreads.h 頭文件編譯。這是一個Sun 缺陷(中斷的編譯器或include文件)

如果運行mysqld時出現下面的錯誤消息,原因是你企圖不啟用-mt multi-thread選項而用Sun編譯器編譯MySQL

libc internal error: _rmutex_unlock: rmutex not held

-mt加到CFLAGSCXXFLAGS上并重新編譯。

如果你正使用gccSFW版本(Solaris 8安裝包內),運行configure之前你必須將/opt/sfw/lib加到環境變量LD_LIBRARY_PATH上。

如果你正使用從sunfreeware.com下載的gcc,會遇到許多問題。要想避免,應當在運行機器上重新編譯gccGNU binutils

如果你用gcc編譯MySQL時遇到下面的錯誤,說明gcc配置不適合Solaris的版本:

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'

在這種情況下正確的做法是得到最新版本的gcc,并用你當前的gcc編譯器編譯。至少對于Solaris 2.5,幾乎所有二進制版本的gcc有舊的不再使用的include文件,中斷了所有使用線程的程序,也可能會中斷其它程序。

Solaris不提供靜態版本的系統庫(libpthreadslibdl),因此你不能用--static編譯MySQL。如果你試圖這樣做,會遇到下面的錯誤:

ld: fatal: library -ldl: not found
undefined reference to `dlopen'
cannot find -lrt

如果你連接你自己的MySQL客戶端程序,運行時會出現下面的錯誤:

ld.so.1: fatal: libmysqlclient.so.#:
open failed: No such file or directory

可以通過下面的方法避免該問題:

·         -Wl,r/full/path/to/libmysqlclient.so標記而不要用-Lpath)連接客戶端。

·         libmysqclient.so復制到/usr/lib

·         運行客戶端程序前,將libmysqlclient.so目錄的路徑名加到LD_RUN_PATH環境變量上。

如果你未安裝zlib-lz連接時configure出現問題,你有兩個選則:

·         如果你想要使用壓縮通信協議,你需要從ftp.gnu.org獲得并安裝zlib

·         構建MySQL時用--with-named-z-libs=no選項運行configure

如果你正使用gcc,向MySQL調用用戶定義函數(UDF)時出現問題,嘗試向UDF連接行添加-lgcc到。

如果想讓MySQL自動啟動,可以將support-files/mysql.server復制到/etc/init.d并創建/etc/rc3.d/S99mysql.server符號連接。

如果有太多進程試圖快速連接mysqld,你應當能再MySQL日志只看見錯誤:

Error in accept: Protocol error

可以嘗試用--back_log=50選項啟動服務器來解決該問題。(MySQL 4以前的版本中使用-O back_log=50

Solaris不支持setuid() 應用程序所需的內核文件,因此如果你使用--user選項你不能從mysqld遇到內核文件。

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/installing.html
北斗有巢氏 有巢氏北斗