當前的移植僅在“sco3.2v5.0.5”,“sco3.2v5.0.6”和“sco3.2v5.0.7”系統上進行了測試,在“sco 3.2v4.2”上的移植也有很大進展。OpenServer 5.0.8(Legend)具有原生線程,允許文件大于2GB。目前最大的文件可以達到2GB。
我們可以在OpenServer上用gcc 2.95.3用下面的configure命令編譯MySQL。
CC=gcc CXX=gcc ./configure --prefix=/usr/local/mysql
--enable-thread-safe-client --with-innodb
--with-openssl --with-vio --with-extra-charsets=complex
從ftp://ftp.sco.com/pub/openserver5/opensrc/gnutools-5.0.7Kj可以得到gcc。
該開發系統需要在OpenServer 5.0.6O的penServer Execution Environment Supplement oss646B和oss656B,OpenSource庫位于 gwxlibs。所有OpenSource工具位于opensrc目錄。可以從ftp://ftp.sco.com/pub/openserver5/opensrc/獲得。
我們建議使用最新的MySQL產品發布。
SCO提供的操作系統補丁:OpenServer 5.0.[0-6]:ftp://ftp.sco.com/pub/openserver5,OpenServer 5.0.7:ftp://ftp.sco.com/pub/openserverv5/507。
SCO提供的關于安全修復的信息:Server 5.0.x:ftp://ftp.sco.com/pub/security/OpenServer。
OpenSever 5.0.x系統上最大的文件的大小為2GB。
在OpenServer 5.0.x上,可供串緩沖區、clist和鎖定記錄分配的總內存不能超出60MB。
串緩沖區的分配單位為4096 字節的頁,clists為70字節,鎖定記錄為64字節,因此為:
(NSTRPAGES * 4096) + (NCLIST * 70) + (MAX_FLCKREC * 64) <= 62914560
按照以下步驟來配置Database Services選項。如果你不確定應用程序是否需要,參見隨應用程序提供的文檔。
1. 用root登錄。
2. 編輯/etc/conf/sdevice.d/suds文件啟用SUDS驅動程序。將第2個域內的N更改為Y。
3. 使用mkdev aio或Hardware/Kernel Manager來啟用對asynchronous I/O的支持,并重新連接內核。要想讓用戶鎖定內存用于該類I/O,更新aiomemlock(F)文件。應當對該文件進行更新,包括進可以使用AIO的用戶和可以鎖定的最大數量的內存。
4. 許多應用程序使用setuid二進制,因此你只能指定單個用戶 。請參見隨應用程序提供的文檔來看是否應用程序是這種情況。
完成該進程后,重新啟動系統,創建包括這些更改的新內核。
默認情況,/etc/conf/cf.d/mtune中的條目設置為:
Value Default Min Max
----- ------- --- ---
NBUF 0 24 450000
NHBUF 0 32 524288
NMPBUF 0 12 512
MAX_INODE 0 100 64000
MAX_FILE 0 100 64000
CTBUFSIZE 128 0 256
MAX_PROC 0 50 16000
MAX_REGION 0 500 160000
NCLIST 170 120 16640
MAXUP 100 15 16000
NOFILES 110 60 11000
NHINODE 128 64 8192
NAUTOUP 10 0 60
NGROUPS 8 0 128
BDFLUSHR 30 1 300
MAX_FLCKREC 0 50 16000
PUTBUFSZ 8000 2000 20000
MAXSLICE 100 25 100
ULIMIT 4194303 2048 4194303
* Streams Parameters
NSTREAM 64 1 32768
NSTRPUSH 9 9 9
NMUXLINK 192 1 4096
STRMSGSZ 16384 4096 524288
STRCTLSZ 1024 1024 1024
STRMAXBLK 524288 4096 524288
NSTRPAGES 500 0 8000
STRSPLITFRAC 80 50 100
NLOG 3 3 3
NUMSP 64 1 256
NUMTIM 16 1 8192
NUMTRW 16 1 8192
* Semaphore Parameters
SEMMAP 10 10 8192
SEMMNI 10 10 8192
SEMMNS 60 60 8192
SEMMNU 30 10 8192
SEMMSL 25 25 150
SEMOPM 10 10 1024
SEMUME 10 10 25
SEMVMX 32767 32767 32767
SEMAEM 16384 16384 16384
* Shared Memory Parameters
SHMMAX 524288 131072 2147483647
SHMMIN 1 1 1
SHMMNI 100 100 2000
FILE 0 100 64000
NMOUNT 0 4 256
NPROC 0 50 16000
NREGION 0 500 160000
我們建議將這些值設置為:
NOFILES應當為4096或2048。
MAXUP應當為2048。
要想更改內核,進入/etc/conf/bin并使用./idtune name parameter來更改。例如,要將SEMMS改為200,用root賬戶執行命令:
# cd /etc/conf/bin
# ./idtune SEMMNS 200
我們建議對該系統進行調節,但是使用的正確參數值取決于訪問應用程序或數據庫的用戶數目和數據庫空間(也就是使用的緩沖池)。下面的項影響/etc/conf/cf.d/stune中定義的內核參數:
SHMMAX(推薦設定值:128MB)和SHMSEG(推薦設定值:15)。這些參數影響創建用戶緩沖池的MySQL數據庫引擎。
NOFILES和MAXUP至少應達到2048。
MAXPROC至少應當設置到3000/4000(取決于用戶數)或更大值。
建議使用下面的公式來計算SEMMSL、SEMMNS和SEMMNU的值:
SEMMSL = 13
發現13最適合進程和MySQL。
SEMMNS = SEMMSL * 系統上運行的db服務器數目。
將SEMMNS設置為SEMMSL值乘以你在該系統上一次運行的db服務器的(最大)數目。
SEMMNU = SEMMNS
將SEMMNU值設置為等于SEMMNS值。可以將該值設置為75%的SEMMNS,但是這是一個保守的估計。
至少需要安裝"SCO OpenServer Linker and Application Development Libraries"或OpenServer開發系統來使用gcc。你不能只使用GCC Dev系統,而不安裝它們。
你應當獲得FSU PTHREADS安裝軟件包并先安裝它。可以從http://moss.csc.ncsu.edu/~mueller/ftp/pub/PART/pthreads.tar.gz獲得。你還可以從 ftp://ftp.zenez.com/pub/zenez/prgms/FSU-threads-3.14.tar.gz獲得預編譯的安裝軟件包。
FSU Pthreads能用帶tcpip的SCO UNIX 4.2編譯,或使用OpenServer 3.0或Open Desktop 3.0(OS 3.0 ODT 3.0),安裝帶有使用一個GCC 2.5.X的SCO開發系統。對ODT或OS 3.0,將需要一個GCC 2.5.x的良好移植。沒有一個良好的移植會有很多問題。對這個產品的移植需要SCO UNIX開發系統,沒有它,缺少所需的庫和鏈接器。還需要SCO-3.2v4.2-includes.tar.gz。該文件包含SCO 開發include 文件的更改這是構建MySQL所需要的。需要用這些修改的頭文件替換已有系統的include文件。可以從 ftp://ftp.zenez.com/pub/zenez/prgms/SCO-3.2v4.2-includes.tar.gz獲得。
為了在系統上構造FSU Pthreads,需要做的工作是運行GNU make。啟動FSU-threads-3.14.tar.gz中的Makefile生成FSU-線程。
在“thread/src”目錄下運行./configure并且選擇SCO OpenServer選項。這個命令拷貝“Makefile.SCO5”到“Makefile”。然后運行make。
為了在默認的“/usr/include”目錄安裝,作為root登錄,然后cd 到“thread/src”目錄,并運行make install。
記得在制作MySQL時要使用GNU make。
注釋:如果你不是作為root啟動safe_mysqld,將可能每進程只有 默認的110個打開的文件。mysqld將在日志文件寫下關于此的注解。
用SCO 3.2V4.2時,應當使用FSU PTHREADS 3.14或更新版。以下configure命令應當工作:
CFLAGS="-D_XOPEN_XPG4" CXX=gcc CXXFLAGS="-D_XOPEN_XPG4"
./configure
--prefix=/usr/local/mysql
--with-named-thread-libs="-lgthreads -lsocket -lgen -lgthreads"
--with-named-curses-libs="-lcurses"
你可能遇到include文件的某些問題。在這種情況下,你能在ftp://www.mysql.com/pub/mysql/Downloads/SCO/SCO-3.2v4.2-includes.tar.gz找到新的SCO特定的include文件。你應該在MySQL源碼樹的“include”目錄下打開這個文件。
SCO開發注意事項:
- MySQL應該自動地檢測FSU Pthreads并且用-lgthreads -lsocket -lgthreads選項鏈接mysqld。
- SCO開發庫在FSU Pthreads是重入(reentrant)的。SCO宣稱它的庫函數是重入的,因此他們一定在FSU Pthreads中是重入的。在 OpenServer上的 FSU Pthreads 試圖使用SCO方案制作重入的庫。
- FSU Pthreads(至少在ftp::/ftp.zenez.com的版本)鏈接了GNU malloc,如果你遇到內存使用的問題,確定“gmalloc.o”包含在“libgthreads.a”和“libgthreads.so”中。
· 在FSU Pthreads中,下列系統調用是pthreads感知的:read()、write()、getmsg()、connect()、accept()、select()和wait()。
· CSSA-2001-SCO.35.2(補丁列為定制erg711905-dscr_remap安全補丁(版本 2.0.0))中斷FSU線程并使mysqld不穩定。如果你想在 OpenServer 5.0.6機器上運行mysqld必須刪除它。
· 如果你使用SCO OpenServer 5,可能需要用-DDRAFT7 in CFLAGS重新編譯FSU pthreads。否則,mysqld啟動時InnoDB會掛起。
· SCO在ftp://ftp.sco.com/pub/openserver5提供了OpenServer 5.0.x的操作系統補丁。
· SCO在ftp://ftp.sco.com/pub/security/sse和ftp://ftp.sco.com/pub/security/sse提供了OpenServer 5.0.x的安全修復和libsocket.so.2。
· Pre-OSR506安全修復。在ftp://stage.caldera.com/pub/security/openserver/或ftp://stage.caldera.com/pub/security/openserver/CSSA-2001-SCO.10/提供了libsocket.so.2和libresolv.so.1的telnetd修復,以及在pre-OSR506系統上的安裝說明。
最好在編譯/使用MySQL之前安裝這些補丁。
Legend/ OpenServer 6.0.0有原生線程,沒有2GB文件大小限制。